Собираю AVR910 от Протоса, мегу8 взял в TQFP чтоб все было маленьким и вставлялось сразу в USB разъем без лишних проводов. Так вот, все готово, осталось прошить мегу8. И тут я встал... Есть "5 проводков" с резисторами (без буфера), мегу 16 несколько раз им шил. Подключаюсь к MISO, MOSI, RST, SCK, подаю питание (втыкаю платку AVR910 в USB), меряю - питание есть. Поня ничего не видит и не слышит. Ладно, по схеме питание МК снижено до 3,6В, замкнул диоды чтобы временно было 5В - все равно никак. Перемычку на ресет (self, target) разумеется ставлю в "self". Ошибка наверняка какая-то "чайная", но все же ткните носом пожалуйста. Единственное очевидное отличие меги8 от меги16 в том что Reset совмещен с PC6 (ну не бред ли? ), так и шут бы с ним, все равно PC6 не используется...
Дак я ж не зря вам давал линк на "Все о прошивке AVR" - http://avr123.nm.ru/07.htm - там я рекомендую не более 15-20 См проводки делать. Кстати все это есть на ПЕРВОЙ страничке топика.
Странная вещь у меня творится Во вложении - программа для машинки. Пытаюсь в процедуры отъезда для замыкания бамперов и обнаружения препятствия ик бампером добавить задержку,чтобы избежать дребезга.(delay_ms(500); в коде пометил, куда вставляю). Программа перестает работать(на PA2 постоянный лог.0, поворотный и тяговый двигатели переключаются часто туда-сюда ), хотя с этим кодом, который во вложении всё прекрасно работает(при замыкании бампера или при обнаружении препятствия иком, начинается очень частое переключение, то есть все работает как надо). Подскажите пожалуйста, как ввести задержку и что у меня не правильно?
// Analog Comparator initialization // Analog Comparator: On // Digital input buffers on AIN0: Off, AIN1: Off DIDR=0x03; // Analog Comparator Input Capture by Timer/Counter 1: Off ACSR=0x00;
К порту A подключен двухцветный диод и всегда горит тот цвет что в else задается. К входам подключены резисторные делители в которых фоторезисторы. Ножки порта с компаратором сделаны входами без подтяжки. Что я нитак делаю, почему всегда выполняется тот код что в else ?
Потому что в ACSR содержится флаг прерывания, который устанавливается при срабатывании компаратора. Так как прерывания от компаратора не разрешены , и программно этот флаг тоже не сбрасывается, после первого срабатывания компаратора в этом регистре никогда не будет 0. Проверять надо не весь регистр, а только бит ACO.