Перейти к содержанию

Lihey.german

Members
  • Постов

    92
  • Зарегистрирован

  • Посещение

Весь контент Lihey.german

  1. Так, в принципе получилось, но с другим уском кода, правда пришлось поизвращаться дабы оно работало. Но вот заметил странность, после сработки будильника\мелодии перестают считываться время\дата\температура и не отключается будило т.е. дисплей молчит, только после reset все востанавливается. Сначала думал что таймеры мешают друг-другу, но нет. Вот теперь думаю что всё дело в delay, или самом коде мелодии.
  2. Ну как написал, содрал с польского сайта и переписал саму мелодию)) Я так понимаю не работает по той причине, что uint8 i присутствует в обеих кодах.
  3. В общем разобрался с этими часами. Там библиотеки были авторские, а не стандартные, вот оно и матюкалось. Но вот возник другой вопрос, как в будильник вписать мелодию! Программу написал отдельно от часов, а от совместить их не выходит.
  4. Сгорает резистор и диоды ведь так? Значит Через диоды проходит большой ток!
  5. Попробуйте поставить резисторы перед диодами не 5.1 Ом, а 470-510 Ом.
  6. А какие с-диоды используете? Проверьте монтаж. И я имел ввиду фото готового устройства со стороны монтажа.
  7. Выложите фото печатки, проверьте ключи. Возможно гдето небольшое КЗ. VT3 у Вас какой стоит?
  8. Доброго всем здравия! Пытаюсь скомпилировать код в АтмелСтудио7, вроде всё правильно написано но выпадают куча ошибок таких Error undefined reference to `LCD_SendStr' GccApplication4 D:\7.0\GccApplication4\GccApplication4\main.c 150 Перелопатил весь инет в поисках решения но безрезультатно. Исходник: Если кому попадались такие ошибки или кто знает их решение- пожалуйста поделитесь. И да, я только учусь...
  9. @Sergey-Ufa да, именно cvavr. После всех манипуляций ошибка уже просит "(" после flash unit8_t alarm[] = {0x02,0x04,0x04,0x0E,0x0E,0x1F,0x1F,0x04}; Error: C:\cvavr\proj\1.c(71): '(' expected
  10. @Sergey-Ufa Т.е. они должны быть в папке с проэктом? И при изменении массива ошибка с ";" не исчезает. Бум пробовать В общем перенес я .#include "bcd.h" #include "lcd_lib_2.h" #include "i2c.h" #include "buttons.h" прямо в папку с проэктом, массив изменил, но остается все та же ошибка...
  11. Так, переименовал переменную, как Вы @Sergey-Ufa и говорили. Действительно, компилятор по ней молчит, но вот почему он просит ";", не ясно. Везде всё стоит. Странно...
  12. Там вроде нету такой ошибки need array size. За комп сяду попробую.
  13. Вроде разобрался в CVAVR с Error: C: declaration 'unsigned char' is incompatible with the previous one: 'int' from file: 'D:\...\math.h', line: 22 В файле math.h я удалил строчки: int min(int a,int b); long lmin(long a,long b); float fmin(float a,float b); незнаю правильно ли поступил.. Но остался еще один ерор, он кричит что пропущена точка-запятая, но всё на месте. A-Studio всё так же ругается.
  14. Доброго здоровья всем форумчанам. В общем сделал я часы как в этой теме http://cxem.net/mc/mc316.php, всё хорошо, они работают, но захотелось внести в программу некоторые изменения. Когда пытаюсь компилировать в Аtmel Studio то сразу вылетает 88 ероров (скрин экрана прилагается). А когда пытаюсь то же скомпилировать в CVAVR то вылазит всего два ерора: Error: C: declaration 'unsigned char' is incompatible with the previous one: 'int' from file: 'D:\...\math.h', line: 22 Error: D:\...\(67): missing ';' Проверял, тчк. с запятой стоят правильно. Библиотеки есть все и подключены.
  15. Так, в общем запустил всё это в протеусе, работает. От нечего делать запущу в железе. Всем огромнейшее спасибо в помощи таким безнадёгам как я)))
  16. И зачем? ааа, я по-ходу понял, step++; // увеличивает на единицу переменную step, т.е. она должна была бы изменяться с 0 до 255, потом снова 0 и т.д. step &=0b00001111; // выделяет только 4 младших бита (старшие 4 сбрасывает в 0), т.е. значение будет меняться с 0 до 15. И полученное значение присваивается обратно переменной step (step = step & 0b00001111), а switch (step) уже указывает верхним двум строкам что должно быть при этих шагах...
  17. Так, в принципе мне всё ясно по коду, есть только пара вопросов: собственно что делают именно эти две строки step++; step&=0b00001111; первая просто к переменной step прибавляет один, а вторая... Или они обе являются счетчиком и считают до... но зачем они, ведь есть строчка switch (step) которая сама переключает состояние на выходе. И другой вопрос: Можно ли вместо одной общей delay использовать раздельные, потому, как после прохождения одного цикла вращения двигателя образуется заметная пауза, во время которой как раз и идет опрос кнопок.
  18. В общем я туплю, опять. @IMXO сложил Ваш код докучи, вот что вышло: #include <avr/io.h> #define F_CPU 1000000 #include <util/delay.h> int main(void) { DDRB|=(1<<0); DDRB|=(1<<1); //Настройка портов DDRB|=(1<<2); DDRB|=(1<<3); unsigned char BUTTON; unsigned char step; unsigned char POWER; unsigned char BUTTON_OLD; while(1) { _delay_ms(100); if (PIND & (1<<2)) {BUTTON=1;} else {BUTTON=0;} ; if ((BUTTON_OLD==0)&&(BUTTON==1)) POWER^=1; BUTTON_OLD=BUTTON; if ( POWER == 1) { step++; step&=0b00001111; switch (step) { case 0: PORTB=0b00000001; break; case 1: PORTB=0b00000101; break; case 2: PORTB=0b00000100; break; case 3: PORTB=0b00000110; break; case 4: PORTB=0b00000010; break; case 5: PORTB=0b00001010; break; case 6: PORTB=0b00001000; break; case 7: PORTB=0b00001001; break; default: PORTB=0b00000000; } } else { PORTB=0b00000000; } } } Компилятор кричит Warning 'BUTTON_OLD' may be used uninitialized in this function [-Wmaybe-uninitialized] , Хотя в протеусе работает... Интересно. Теперь буду разбирать код по кусочкам и изучать каждую составляющую...
  19. #define F_CPU 4000000 #include <avr/io.h> #include <util/delay.h> int main (void) unsigned char BUTTON; unsigned char step; unsigned char POWER; unsigned char BUTTON_OLD; while(1) { _delay_ms(50); if(PIND0& (1<<2)){BUTTON==1} else {BUTTON==0}; if ((BUTTON_OLD==0)&&(BUTTON==1)) else{POWER^=1}; BUTTON_OLD=BUTTON; } Если я правильно понял, то первые две задачи должны быть так
  20. @IMXO общий смысл я уловил, но мне теперь не ясно откуда взялись переменные BUTTON, POWER, STEP... если я не туплю и это переменные.
  21. Так, насколько я понял мне нужно сделать следующее: Проверить PORTD0, Проверить PORTB, Если кнопка нажата и на выходе порта B нули, то запускаем двигатель. Если кнопка нажата и на выходе не нули- останавливаем двигатель... Примерно так?
  22. Извините пожалуйста, что не отвечал,думал что больше эта тема не интересна. В общем учу программирование ооочень недолго, много читаю, плохо понимаю и запоминаю, но стараюсь. Работаю в AtmelStudio, proteus и железе. Некоторые термины мне не ясны. Например объявление переменной, массив и т.д., по-этому я решил изучать это на практике сразу, т.е., у меня есть двигатель и им управлять хочу от контроллера. Програмку накидал, но она не верна... вот. Теперь буду следовать вашим советам, правда читать еще больше придеться))) И как выйти из этого положения?
×
×
  • Создать...