nullakilla 0 11 января, 2010 Опубликовано 11 января, 2010 · Жалоба Значится так. Одной из задач второй платы моего устройства на ATmega128 является передача отладочной инфы на компьютер по интерфейсу RS232. Ну и я начал писать прошивку с того, что инициализировал USART1 и передавал строку или символ по интерфейсу. Но в окне Terminal почему-то появлялась эта строка или символ многое количество раз и с непонятно большой скоростью. Я решил поставить _delay_ms(1000); после инициализации (на всякий случай:)) Тогда при перепрошивке символы в Terminal перестали передаваться. В итоге я решил забить на RS232 и просто поморгать светодиодом через ножку порта. написал прогу что-то наподобие: int main() { DDRA = (1 << PA2); while (1) { PORTA |= (1 << PA2); _delay_ms(1000); PORTA &= ~(1 << PA2); _delay_ms(1000); } } а светодиод почему-то моргал с частотой около 10 Гц. и тут меня осенило! закомментил цикл while int main() { DDRA = (1 << PA2); //while (1) { PORTA |= (1 << PA2); _delay_ms(1000); PORTA &= ~(1 << PA2); _delay_ms(1000); //} } ,а программа работает точно так же! проверил питание - все в порядке, резет тоже стабильный, а микроконтроллер перезагружается. Подскажите, пожалуйста, в чем может быть проблема! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
tazik 0 12 января, 2010 Опубликовано 12 января, 2010 · Жалоба Приведите пожалуйста, получившийся после компиляции код (файл с расширением .lss) Например, в таком виде: void Pc_Init_Port(ubrr) { UBRR1H=(uint8_t)(ubrr>>8); 1ea: 29 2f mov r18, r25 1ec: 33 27 eor r19, r19 1ee: 27 fd sbrc r18, 7 1f0: 3a 95 dec r19 1f2: 20 93 98 00 sts 0x0098, r18 UBRR1L=(uint8_t)(ubrr); 1f6: 80 93 99 00 sts 0x0099, r24 Еще можно проверить, не включен ли WDT Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
A.L. 0 12 января, 2010 Опубликовано 12 января, 2010 · Жалоба В итоге я решил забить на RS232 и просто поморгать светодиодом через ножку порта. Подскажите, пожалуйста, в чем может быть проблема! Watchdog отключи. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VladimirYU 0 12 января, 2010 Опубликовано 12 января, 2010 · Жалоба Watchdog отключи. Или наоборот вставь в цикл сброс собаки. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
idle1 0 13 января, 2010 Опубликовано 13 января, 2010 · Жалоба Для отладки лучше отключи оптимизацию кода в компиляторе, однажды налетел на такое, долго провозился с ерундовой проблемой... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
nullakilla 0 14 января, 2010 Опубликовано 14 января, 2010 · Жалоба Я прошивал эту ATmega128 через AVRDude в Eclipse, но когда возникали проблемы, то запускал AVReal из консоли. Дак вот интересно что. Когда смотрел авриэлом, то вотчдог был 1 т.е. Unprogrammed, а когда в рабочем порядке шил AVRDude, то этот фьюз каким то хреном устанавливался Programmed :( При чем, что в настройках аврдюда я выключил перезапись фьюзов. ВОТ ВАМ И БЕСПЛАТНЫЙ СОФТ, ТОВАРИЩИ. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VladimirYU 0 15 января, 2010 Опубликовано 15 января, 2010 · Жалоба nullakilla Так как все же разрешилась Ваша проблема? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
nullakilla 0 16 января, 2010 Опубликовано 16 января, 2010 · Жалоба Решилась. Дякую!!!! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MAPT 0 17 января, 2010 Опубликовано 17 января, 2010 (изменено) · Жалоба Решилась. Дякую!!!! А как решилась-то? У меня похожий трабл, тока на 64-ой меге, и контроллер ребутается, когда начинаю чё-нить по usart слать. И ёще возник один вопрос. В 64/128 -ой меге выводы программирования совпадают с выводами USART0. Как сделать так, чтобы можно было и прошивать, и пользоваться юартом? Изменено 17 января, 2010 пользователем MAPT Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ronin 0 19 января, 2010 Опубликовано 19 января, 2010 (изменено) · Жалоба А как решилась-то? avrdude фьюз вачдога почему-то обнулял (=вачдог вкл). В 64/128 -ой меге выводы программирования совпадают с выводами USART0. Как сделать так, чтобы можно было и прошивать, и пользоваться юартом? например линию rx заводить в контроллер через резистор ом 100 (или скажем джампер но он места много занимает). isp вешать по даташиту. isp конечно не "на 5 проводках" а с драйвером. Изменено 19 января, 2010 пользователем Ronin Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kool 0 22 января, 2010 Опубликовано 22 января, 2010 · Жалоба Как сделать так, чтобы можно было и прошивать, и пользоваться юартом? 1. Шить JTAG'ом 2. Уточню Ronin'а. Нога E0(Rx) Подключается к программатору напрямую, а к драйверу RS232/RS485 - через резистор. Но здесь 100 Ом маловато будет. (Если драйвер выдаст +5В, а программатор - 0В, то в програматор потечет ток 50мА.) Я бы поставил от 330..560 Ом. Повторюсь, драйвер на программаторе обязателен. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ronin 0 25 января, 2010 Опубликовано 25 января, 2010 (изменено) · Жалоба 2. Уточню Ronin'а. Нога E0(Rx) Подключается к программатору напрямую, а к драйверу RS232/RS485 - через резистор. Но здесь 100 Ом маловато будет. (Если драйвер выдаст +5В, а программатор - 0В, то в програматор потечет ток 50мА.) Я бы поставил от 330..560 Ом. Повторюсь, драйвер на программаторе обязателен. В принципе да. лучше порядка 330 ом. хотя и 100 ом hc244 тянет :) Просто у меня предубеждение что 330-560 ом это максимум что можно ставить ))) ещё от ТТЛ )) а когда оно только 1 раз нужно, то чтоб точно не мешало ещё уменьшить в раз несколько :) хотя тут то и скорости обычно не выше 115к. В серии стоит джампер совмещённым с диагностическим разъёмом (кстати очевиден и плюс того что на одних ногах и уарт и программирование - на одном разъёме можно сделать сразу и isp и диагностику и джампер) Изменено 25 января, 2010 пользователем Ronin Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться