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

Garo

Members
  • Постов

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

  • Посещение

Весь контент Garo

  1. Вообщем, опять вернулся к прошивке этой тинке. Переставил питание на программаторе на 3,3 в. и все прошилось как надо. При этом заменил на другой USBASP, в прежнем было только возможность прошить при 5 вольтах. Пробывал ставить на 5 вольт - проблема повторялось.
  2. Причину нашел! Оказалось банальный непропай смд резистора 100 ом (при замере на плате показал 2 кОм) в линии от микроконтроллера до вывода RS дисплея. Кто бы мог подумать! Всем спасибо за участие! Хотя с этих цепей и надо было начинать. Все логично.
  3. Мне кажется температуру термопара должна показывать постоянно, независимо от работы
  4. Может быть проблема в самом микроконтроллере ADuC845. Он как то не дает прошивке работать, выполнять программу? Периодически
  5. Пока без поджига. Сегодня лаборатория не работает. Сейчас вот заглючило, сделал ресет и норм. (но иногда и три раза делаю ресет)
  6. Т.е. сначало так делаю ресет, потом так и все хорошо Пока до сих пор без глюков. Но это пока. Может и заглючить
  7. Сделал, результат тот же . Вышло меню половина с закарюками. Еще вот что. Если температура держалось стабильно (без дерганий) и меню все хорошо показывало.
  8. Хотя вот сейчас сделал два сброса .После первого убралась часть закорючек, после второго все норм. Т.е. сброс не всегда помогает. АЦП встроенный в ADuC845
  9. ресет делал, не помогает. Также все показывает. Было замечено, что если при очередной загрузки все в норме (выходит приветствие) и я выбираю "Температура" и прибор показывает температуру (термопара реагирует) и возвращаюсь обратно, то все норм. А если при отображение температуры начинается какой то хаос (показание моргают хаотично) и я выхожу в начальное меню, то на дисплее то о чем я писал ранее. Может сбой дает АЦП в ADuC845 ?
  10. Забыл написать, дисплей менял. У нас два прибора. Новый дисплей проверил на втором, все работает
  11. Здравствуйте! Занимаюсь обслуживанием и ремонтом оборудования в хим.лаборатории. Есть прибор "Вспышка-А", он регистрирует момент (при какой температуре) происходит вспыхивание разогретого масла. У него пропала индикация, на все другие команды реагирует. На дисплее или вообще ничего нет, либо, при очередном включении показывает по разному (см.фото). На плате стоит микроконвертор ADuC845. Проверил питание аналоговой и цифровой части (5в), конденсаторы по питанию стоят танталовые (но и их проверил), всю керамику поменял на новые, кварц рабочий.Подключал отдельно, через лабораторный БП, результат тот же. Схемы нет, в инете нашел пример подключения микроконтроллера. Это неисправность ADuC845 ? Можете что нибудь посоветовать в данной ситуации?
  12. Убрал я ее уже давно!
  13. У Вас претензия только к задержки? Если да, то с Вами согласен, она там не к чему. Я не понимаю, что за полемика здесь присутствует. Зачем я должен кому то давать тех. задания.У меня был только один вопрос (см. первый пост), я там запутался и мне подсказали путь. А мне подсказывают какие то пути, про которые и сам знаю. Мне 52 года. Здесь технический форум или нравоучительный Все остальное я изучаю ( и таймеры и прочее). Теория должна подкрепляться практикой, что я и пытаюсь делать, все постепенно. Я же не прошу за меня написать программный код. Извините если кого обидел или задел профессиональное самолюбие.
  14. Спасибо Вам! Всего Вам доброго!
  15. Что вы докопались до моей программы! Кто мне помог, тем я сказал спасибо. Вам то что надо от меня?
  16. Проблема решена. То,что не мне нужно я уже узнал. Дребезг контактов учел (поставил счетчик). За "портянку" - обидно! Вот код программы: //Atmega8 #define F_CPU 8000000 #include <avr/io.h> #include <avr/interrupt.h> #include <util/delay.h> void preset() { DDRB=0x00; PORTB=0x00; DDRD=0xFF; PORTD=0x00; DDRC=0b00111100; PORTC=0b00000000; for (int i=0; i<=7; i++) { PORTD = (1<<i); _delay_ms(200); } PORTD=0x00; } void matrix () { if (PINB&(1<<PINB0)) PORTD |=0x01; else PORTD &=0xFE; if (PINB&(1<<PINB1)) PORTD |=0x02; else PORTD &=0xFD; if (PINB&(1<<PINB2)) PORTD |=0x04; else PORTD &=0xFB; if (PINB&(1<<PINB3)) PORTD |=0x08; else PORTD &=0xF7; if (PINB&(1<<PINB4)) PORTD |=0x10; else PORTD &=0xEF; if (PINB&(1<<PINB5)) PORTD |=0x20; else PORTD &=0xDF; if (PINB&(1<<PINB6)) PORTD |=0x40; else PORTD &=0xBF; if (PINB&(1<<PINB7)) PORTD |=0x80; else PORTD &=0x7F; } void timer_ini (void) //настройка таймера (0.25 сек.) { TCCR1B |= (1<<WGM12); // устанавливаем режим СТС (сброс по совпадению) TIMSK |= (1<<OCIE1A); //устанавливаем бит разрешения прерывания 1ого счетчика по совпадению с OCR1A(H и L) OCR1AH = 0b00000111; //записываем в регистр число 1953 OCR1AL = 0b10100001; //для сравнения (0.25 сек.)(1 сек.=7812 (при делителе 1024 и F_CPU 8000000)) TCCR1B |= (1<<CS12)|(1<<CS10);//установим делитель (1024) } //_______________________________________ ISR (TIMER1_COMPA_vect)//вектор срабатывания { if (((PIND&(1<<PIND0)) || (PIND&(1<<PIND1)) || (PIND&(1<<PIND2)) || (PIND&(1<<PIND3)) || (PIND&(1<<PIND4)) || (PIND&(1<<PIND5)) || (PIND&(1<<PIND6)) || (PIND&(1<<PIND7)))) { _delay_ms(100); PORTC |=0x38; } } int main(void) { preset(); timer_ini(); sei(); unsigned char count=0; while(1) { matrix(); if ((PINC&(1<<PINC0)) && (PINC&(1<<PINC3))) { PORTC &=0xFB; } else if ((PINC&(1<<PINC3))) { PORTC &=0xFB; } if (PINC&(1<<PINC0)) { if (count<5) { count++; } else if (PINC&(1<<PINC4)) PORTC &=0xFB; else PORTC =0x04; } else if (PINC&(1<<PINC1)) { if (count<5) { count++; } else if (PINC&(1<<PINC4)) { PORTC =0x38; } else PORTC =0x08; } } }
  17. Спасибо, исправил. Почему же код работал? Или это только в протеусе, в МК заглючил бы? Работал правда немного по другому. Сейчас если убрать входной сигнал, то на выходе лог.0. А до этого с прежним кодом (где была ошибка) если убрать входной сигнал, то на выходе оставалась лог.1. Запоминался сработавший датчик.
  18. Всем спасибо за помощь! Особенная благодарность Starichok ! Все получилось. Вот код: if (PINB&(1<<PINB0)) PORTD |=0x01; else PORTD ==~0xFE; if (PINB&(1<<PINB1)) PORTD |=0x02; else PORTD ==~0xFD; if (PINB&(1<<PINB2)) PORTD |=0x04; else PORTD ==~0xFB; if (PINB&(1<<PINB3)) PORTD |=0x08; else PORTD ==~0xF7; if (PINB&(1<<PINB4)) PORTD |=0x10; else PORTD ==~0xEF; if (PINB&(1<<PINB5)) PORTD |=0x20; else PORTD ==~0xDF; if (PINB&(1<<PINB6)) PORTD |=0x40; else PORTD ==~0xBF; if (PINB&(1<<PINB7)) PORTD |=0x80; else PORTD ==~0x7F;
  19. Постоянно переключаются. И зависает программа, т.е после отключения лог.1 со всех портов (или с одного) все равно идут переключения и никакой реакции на кнопку reset. (это все в протеусе)
  20. Без else не идет. Глючит.
  21. Опрос по внешнему прерыванию я напишу. А если сработают одновременно несколько датчиков и надо посмотреть именно какие?
  22. Garo

    Управление на Atmega8

    Добрый день! Делаю прибор для контроля датчиков воды.Написал код while(1) { if (PINB&(1<<PINB0)) PORTD=0x01; else if (PINB&(1<<PINB1)) PORTD=0x02; else if (PINB&(1<<PINB2)) PORTD=0x04; else if (PINB&(1<<PINB3)) PORTD=0x08; else if (PINB&(1<<PINB4)) PORTD=0x10; else if (PINB&(1<<PINB5)) PORTD=0x20; else if (PINB&(1<<PINB6)) PORTD=0x40; else if (PINB&(1<<PINB7)) PORTD=0x80; } Все работает, но есть вопрос. При подачи лог.1 одновременно на два порта, загорается только один светодиод (тот который выше по коду). Можно ли как то сделать программно, чтобы лог.1 подавались на заданные порты. Пробывал писать условия, но там столько вариантов... void matrix () { if ((PINB&(1<<PINB0)) && (PINB&(1<<PINB1)) && (PINB&(1<<PINB2)) && (PINB&(1<<PINB3)) && (PINB&(1<<PINB4)) && (PINB&(1<<PINB5))&& (PINB&(1<<PINB6)) && (PINB&(1<<PINB7))) PORTD=0xFF; else if ((PINB&(1<<PINB0)) && (PINB&(1<<PINB1)) && (PINB&(1<<PINB2)) && (PINB&(1<<PINB3)) && (PINB&(1<<PINB4)) && (PINB&(1<<PINB5))&& (PINB&(1<<PINB6))) PORTD=0x7F; else if ((PINB&(1<<PINB0)) && (PINB&(1<<PINB1)) && (PINB&(1<<PINB2)) && (PINB&(1<<PINB3)) && (PINB&(1<<PINB4)) && (PINB&(1<<PINB5))) PORTD=0x3F; else if ((PINB&(1<<PINB0)) && (PINB&(1<<PINB1)) && (PINB&(1<<PINB2)) && (PINB&(1<<PINB3)) && (PINB&(1<<PINB4))) PORTD=0x1F; else if ((PINB&(1<<PINB0)) && (PINB&(1<<PINB1)) && (PINB&(1<<PINB2)) && (PINB&(1<<PINB3))) PORTD=0x0F; else if ((PINB&(1<<PINB0)) && (PINB&(1<<PINB1)) && (PINB&(1<<PINB2))) PORTD=0x07; else if ((PINB&(1<<PINB0)) && (PINB&(1<<PINB1))) PORTD=0x03; else if ((PINB&(1<<PINB1)) && (PINB&(1<<PINB2)) && (PINB&(1<<PINB3)) && (PINB&(1<<PINB4)) && (PINB&(1<<PINB5))&& (PINB&(1<<PINB6)) && (PINB&(1<<PINB7))) PORTD=0xFE; else if ((PINB&(1<<PINB2)) && (PINB&(1<<PINB3)) && (PINB&(1<<PINB4)) && (PINB&(1<<PINB5)) && (PINB&(1<<PINB6)) && (PINB&(1<<PINB7))) PORTD=0xFC; else if ((PINB&(1<<PINB3)) && (PINB&(1<<PINB4)) && (PINB&(1<<PINB5)) && (PINB&(1<<PINB6)) && (PINB&(1<<PINB7))) PORTD=0xF8; else if ((PINB&(1<<PINB4)) && (PINB&(1<<PINB5)) && (PINB&(1<<PINB6)) && (PINB&(1<<PINB7))) PORTD=0xF0; else if ((PINB&(1<<PINB5)) && (PINB&(1<<PINB6)) && (PINB&(1<<PINB7))) PORTD=0xE0; else if ((PINB&(1<<PINB6)) && (PINB&(1<<PINB7))) PORTD=0xC0; else if ((PINB&(1<<PINB0)) && (PINB&(1<<PINB1)) && (PINB&(1<<PINB2)) && (PINB&(1<<PINB3)) && (PINB&(1<<PINB4)) && (PINB&(1<<PINB5)) && (PINB&(1<<PINB7))) PORTD=0xBF; else if ((PINB&(1<<PINB0)) && (PINB&(1<<PINB1)) && (PINB&(1<<PINB2)) && (PINB&(1<<PINB3)) && (PINB&(1<<PINB4)) && (PINB&(1<<PINB5)) && (PINB&(1<<PINB6))) PORTD=0x7F; else if ((PINB&(1<<PINB0)) && (PINB&(1<<PINB1)) && (PINB&(1<<PINB2)) && (PINB&(1<<PINB3)) && (PINB&(1<<PINB4)) && (PINB&(1<<PINB6)) && (PINB&(1<<PINB7))) PORTD=0xDF; else if ((PINB&(1<<PINB0)) && (PINB&(1<<PINB1)) && (PINB&(1<<PINB2)) && (PINB&(1<<PINB3)) && (PINB&(1<<PINB4)) && (PINB&(1<<PINB7))) PORTD=0x9F; else if ((PINB&(1<<PINB0)) && (PINB&(1<<PINB1)) && (PINB&(1<<PINB2)) && (PINB&(1<<PINB3)) && (PINB&(1<<PINB4)) && (PINB&(1<<PINB6))) PORTD=0x5F; else if ((PINB&(1<<PINB0)) && (PINB&(1<<PINB1)) && (PINB&(1<<PINB2)) && (PINB&(1<<PINB3)) && (PINB&(1<<PINB4)) && (PINB&(1<<PINB5))) PORTD=0x3F; else if ((PINB&(1<<PINB0)) && (PINB&(1<<PINB1)) && (PINB&(1<<PINB2)) && (PINB&(1<<PINB3)) && (PINB&(1<<PINB5)) && (PINB&(1<<PINB7))) PORTD=0xAF; else if ((PINB&(1<<PINB0)) && (PINB&(1<<PINB1)) && (PINB&(1<<PINB2)) && (PINB&(1<<PINB3)) && (PINB&(1<<PINB5)) && (PINB&(1<<PINB6))) PORTD=0x6F; else if ((PINB&(1<<PINB0)) && (PINB&(1<<PINB1)) && (PINB&(1<<PINB2)) && (PINB&(1<<PINB3)) && (PINB&(1<<PINB6)) && (PINB&(1<<PINB7))) PORTD=0xCF; else if ((PINB&(1<<PINB0)) && (PINB&(1<<PINB1)) && (PINB&(1<<PINB2)) && (PINB&(1<<PINB3)) && (PINB&(1<<PINB7))) PORTD=0x8F; else if ((PINB&(1<<PINB0)) && (PINB&(1<<PINB1)) && (PINB&(1<<PINB2)) && (PINB&(1<<PINB3)) && (PINB&(1<<PINB6))) PORTD=0x4F; else if ((PINB&(1<<PINB0)) && (PINB&(1<<PINB1)) && (PINB&(1<<PINB2)) && (PINB&(1<<PINB3)) && (PINB&(1<<PINB5))) PORTD=0x2F; else if ((PINB&(1<<PINB0)) && (PINB&(1<<PINB1)) && (PINB&(1<<PINB2)) && (PINB&(1<<PINB3)) && (PINB&(1<<PINB4))) PORTD=0x1F; else if ((PINB&(1<<PINB0)) && (PINB&(1<<PINB1)) && (PINB&(1<<PINB2)) && (PINB&(1<<PINB4)) && (PINB&(1<<PINB7))) PORTD=0x97; else if ((PINB&(1<<PINB0)) && (PINB&(1<<PINB1)) && (PINB&(1<<PINB2)) && (PINB&(1<<PINB4)) && (PINB&(1<<PINB6))) PORTD=0x5F; else if ((PINB&(1<<PINB0)) && (PINB&(1<<PINB1)) && (PINB&(1<<PINB2)) && (PINB&(1<<PINB4)) && (PINB&(1<<PINB5))) PORTD=0x37; else if ((PINB&(1<<PINB0)) && (PINB&(1<<PINB1)) && (PINB&(1<<PINB2)) && (PINB&(1<<PINB5)) && (PINB&(1<<PINB7))) PORTD=0xA7; else if ((PINB&(1<<PINB0)) && (PINB&(1<<PINB1)) && (PINB&(1<<PINB2)) && (PINB&(1<<PINB5)) && (PINB&(1<<PINB6))) PORTD=0x6F; else if ((PINB&(1<<PINB0)) && (PINB&(1<<PINB1)) && (PINB&(1<<PINB2)) && (PINB&(1<<PINB6)) && (PINB&(1<<PINB7))) PORTD=0xCF; else if ((PINB&(1<<PINB0)) && (PINB&(1<<PINB1)) && (PINB&(1<<PINB2)) && (PINB&(1<<PINB7))) PORTD=0x87; else if ((PINB&(1<<PINB0)) && (PINB&(1<<PINB1)) && (PINB&(1<<PINB2)) && (PINB&(1<<PINB6))) PORTD=0x47; else if ((PINB&(1<<PINB0)) && (PINB&(1<<PINB1)) && (PINB&(1<<PINB2)) && (PINB&(1<<PINB5))) PORTD=0x27; else if ((PINB&(1<<PINB0)) && (PINB&(1<<PINB1)) && (PINB&(1<<PINB2)) && (PINB&(1<<PINB4))) PORTD=0x17; else if ((PINB&(1<<PINB0)) && (PINB&(1<<PINB1)) && (PINB&(1<<PINB2)) && (PINB&(1<<PINB3))) PORTD=0x0F; else if ((PINB&(1<<PINB0)) && (PINB&(1<<PINB1)) && (PINB&(1<<PINB3)) && (PINB&(1<<PINB7))) PORTD=0x8B; else if ((PINB&(1<<PINB0)) && (PINB&(1<<PINB1)) && (PINB&(1<<PINB3)) && (PINB&(1<<PINB6))) PORTD=0x4B; else if ((PINB&(1<<PINB0)) && (PINB&(1<<PINB1)) && (PINB&(1<<PINB3)) && (PINB&(1<<PINB5))) PORTD=0x2B; else if ((PINB&(1<<PINB0)) && (PINB&(1<<PINB1)) && (PINB&(1<<PINB3)) && (PINB&(1<<PINB4))) PORTD=0x1B; else if ((PINB&(1<<PINB0)) && (PINB&(1<<PINB1)) && (PINB&(1<<PINB4)) && (PINB&(1<<PINB7))) PORTD=0x93; else if ((PINB&(1<<PINB0)) && (PINB&(1<<PINB1)) && (PINB&(1<<PINB4)) && (PINB&(1<<PINB6))) PORTD=0x53; else if ((PINB&(1<<PINB0)) && (PINB&(1<<PINB1)) && (PINB&(1<<PINB4)) && (PINB&(1<<PINB5))) PORTD=0x33; else if ((PINB&(1<<PINB0)) && (PINB&(1<<PINB1)) && (PINB&(1<<PINB5)) && (PINB&(1<<PINB7))) PORTD=0xA3; else if ((PINB&(1<<PINB0)) && (PINB&(1<<PINB1)) && (PINB&(1<<PINB5)) && (PINB&(1<<PINB6))) PORTD=0x63; else if ((PINB&(1<<PINB0)) && (PINB&(1<<PINB1)) && (PINB&(1<<PINB6)) && (PINB&(1<<PINB7))) PORTD=0xC3; else if ((PINB&(1<<PINB0)) && (PINB&(1<<PINB1)) && (PINB&(1<<PINB7))) PORTD=0x83; else if ((PINB&(1<<PINB0)) && (PINB&(1<<PINB1)) && (PINB&(1<<PINB6))) PORTD=0x43; else if ((PINB&(1<<PINB0)) && (PINB&(1<<PINB1)) && (PINB&(1<<PINB5))) PORTD=0x23; else if ((PINB&(1<<PINB0)) && (PINB&(1<<PINB1)) && (PINB&(1<<PINB4))) PORTD=0x13; else if ((PINB&(1<<PINB0)) && (PINB&(1<<PINB1)) && (PINB&(1<<PINB3))) PORTD=0x0B; else if ((PINB&(1<<PINB0)) && (PINB&(1<<PINB1)) && (PINB&(1<<PINB2))) PORTD=0x07; else if ((PINB&(1<<PINB0)) && (PINB&(1<<PINB2)) && (PINB&(1<<PINB7))) PORTD=0x85; else if ((PINB&(1<<PINB0)) && (PINB&(1<<PINB2)) && (PINB&(1<<PINB6))) PORTD=0x45; else if ((PINB&(1<<PINB0)) && (PINB&(1<<PINB2)) && (PINB&(1<<PINB5))) PORTD=0x25; else if ((PINB&(1<<PINB0)) && (PINB&(1<<PINB2)) && (PINB&(1<<PINB4))) PORTD=0x15; else if ((PINB&(1<<PINB0)) && (PINB&(1<<PINB2)) && (PINB&(1<<PINB3))) PORTD=0x0D; else if ((PINB&(1<<PINB0)) && (PINB&(1<<PINB3)) && (PINB&(1<<PINB7))) PORTD=0x89; else if ((PINB&(1<<PINB0)) && (PINB&(1<<PINB3)) && (PINB&(1<<PINB6))) PORTD=0x49; else if ((PINB&(1<<PINB0)) && (PINB&(1<<PINB3)) && (PINB&(1<<PINB5))) PORTD=0x29; else if ((PINB&(1<<PINB0)) && (PINB&(1<<PINB3)) && (PINB&(1<<PINB4))) PORTD=0x19; else if ((PINB&(1<<PINB0)) && (PINB&(1<<PINB4)) && (PINB&(1<<PINB7))) PORTD=0x91; else if ((PINB&(1<<PINB0)) && (PINB&(1<<PINB4)) && (PINB&(1<<PINB6))) PORTD=0x51; else if ((PINB&(1<<PINB0)) && (PINB&(1<<PINB4)) && (PINB&(1<<PINB5))) PORTD=0x31; else if ((PINB&(1<<PINB0)) && (PINB&(1<<PINB5)) && (PINB&(1<<PINB7))) PORTD=0xA1; else if ((PINB&(1<<PINB0)) && (PINB&(1<<PINB5)) && (PINB&(1<<PINB6))) PORTD=0x61; else if ((PINB&(1<<PINB0)) && (PINB&(1<<PINB6)) && (PINB&(1<<PINB7))) PORTD=0xC1; else if ((PINB&(1<<PINB0)) && (PINB&(1<<PINB7))) PORTD=0x81; else if ((PINB&(1<<PINB0)) && (PINB&(1<<PINB6))) PORTD=0x41; else if ((PINB&(1<<PINB0)) && (PINB&(1<<PINB5))) PORTD=0x21; else if ((PINB&(1<<PINB0)) && (PINB&(1<<PINB4))) PORTD=0x11; else if ((PINB&(1<<PINB0)) && (PINB&(1<<PINB3))) PORTD=0x09; else if ((PINB&(1<<PINB0)) && (PINB&(1<<PINB2))) PORTD=0x05; else if ((PINB&(1<<PINB0)) && (PINB&(1<<PINB1))) PORTD=0x03; else if ((PINB&(1<<PINB1)) && (PINB&(1<<PINB7))) PORTD=0x82; else if ((PINB&(1<<PINB1)) && (PINB&(1<<PINB6))) PORTD=0x42; else if ((PINB&(1<<PINB1)) && (PINB&(1<<PINB5))) PORTD=0x22; else if ((PINB&(1<<PINB1)) && (PINB&(1<<PINB4))) PORTD=0x12; else if ((PINB&(1<<PINB1)) && (PINB&(1<<PINB3))) PORTD=0x0A; else if ((PINB&(1<<PINB1)) && (PINB&(1<<PINB2))) PORTD=0x06; else if ((PINB&(1<<PINB2)) && (PINB&(1<<PINB7))) PORTD=0x84; else if ((PINB&(1<<PINB2)) && (PINB&(1<<PINB6))) PORTD=0x44; else if ((PINB&(1<<PINB2)) && (PINB&(1<<PINB5))) PORTD=0x24; else if ((PINB&(1<<PINB2)) && (PINB&(1<<PINB4))) PORTD=0x14; else if ((PINB&(1<<PINB2)) && (PINB&(1<<PINB3))) PORTD=0x0C; else if ((PINB&(1<<PINB3)) && (PINB&(1<<PINB7))) PORTD=0x88; else if ((PINB&(1<<PINB3)) && (PINB&(1<<PINB6))) PORTD=0x48; else if ((PINB&(1<<PINB3)) && (PINB&(1<<PINB5))) PORTD=0x28; else if ((PINB&(1<<PINB3)) && (PINB&(1<<PINB4))) PORTD=0x18; else if ((PINB&(1<<PINB4)) && (PINB&(1<<PINB7))) PORTD=0x90; else if ((PINB&(1<<PINB4)) && (PINB&(1<<PINB6))) PORTD=0x50; else if ((PINB&(1<<PINB4)) && (PINB&(1<<PINB5))) PORTD=0x30; else if ((PINB&(1<<PINB5)) && (PINB&(1<<PINB7))) PORTD=0xA0; else if ((PINB&(1<<PINB5)) && (PINB&(1<<PINB6))) PORTD=0x60; else if ((PINB&(1<<PINB6)) && (PINB&(1<<PINB7))) PORTD=0xC0; else if (PINB&(1<<PINB0)) PORTD=0x01; else if (PINB&(1<<PINB1)) PORTD=0x02; else if (PINB&(1<<PINB2)) PORTD=0x04; else if (PINB&(1<<PINB3)) PORTD=0x08; else if (PINB&(1<<PINB4)) PORTD=0x10; else if (PINB&(1<<PINB5)) PORTD=0x20; else if (PINB&(1<<PINB6)) PORTD=0x40; else if (PINB&(1<<PINB7)) PORTD=0x80; else PORTD=0x00; } И то не все.
  23. Добрый день! Прошиваю Attiny13A. Программатор USBasp, программа USBASP_AVR DUDE_PROG. МК читается, начинаю прошивать и выдает ошибку или зависает программа. Потом обнаружил, что после этого стирается hex файл. В чем может быть проблема? В неисправности МК, бракованный? Брал их на Али. У всех 8 штук тоже самое. Ранее прошивал на этом программаторе, все было хорошо. Спасибо
  24. Я даже не заметил, что там есть 128Кгц. Это получается,что при такой тактовой частоте и при делителе 1024, одна секунда будет 125 тиков? Я правильно понимаю?
  25. Ну, все, хватит уже. Пристыдили. Разобрался уже. Почитал, и действительно все нет так уж и сложно. Только вот с 3 секундами не вышло. Счетчик 8 битный и не может даже до секунды досчитать. Но мне правда и то, что получилось уже достаточно (надо только аппаратный счет ,без каких либо наращиваний переменной).
×
×
  • Создать...