реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> ATmega128 постоянный сброс устройства с частотой около 10герц.
nullakilla
сообщение Jan 11 2010, 22:40
Сообщение #1





Группа: Участник
Сообщений: 11
Регистрация: 7-05-09
Пользователь №: 48 785



Значится так.

Одной из задач второй платы моего устройства на ATmega128 является передача отладочной инфы на компьютер по интерфейсу RS232.

Ну и я начал писать прошивку с того, что инициализировал USART1 и передавал строку или символ по интерфейсу.

Но в окне Terminal почему-то появлялась эта строка или символ многое количество раз и с непонятно большой скоростью.

Я решил поставить _delay_ms(1000); после инициализации (на всякий случайsmile.gif)
Тогда при перепрошивке символы в Terminal перестали передаваться.

В итоге я решил забить на RS232 и просто поморгать светодиодом через ножку порта.

написал прогу что-то наподобие:
CODE
int main() {
DDRA = (1 << PA2);

while (1) {
PORTA |= (1 << PA2);
_delay_ms(1000);
PORTA &= ~(1 << PA2);
_delay_ms(1000);

}


}


а светодиод почему-то моргал с частотой около 10 Гц.

и тут меня осенило! закомментил цикл while
CODE
int main() {
DDRA = (1 << PA2);

//while (1) {
PORTA |= (1 << PA2);
_delay_ms(1000);
PORTA &= ~(1 << PA2);
_delay_ms(1000);

//}


}

,а программа работает точно так же!

проверил питание - все в порядке, резет тоже стабильный, а микроконтроллер перезагружается.

Подскажите, пожалуйста, в чем может быть проблема!
Go to the top of the page
 
+Quote Post
tazik
сообщение Jan 12 2010, 05:23
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 195
Регистрация: 13-05-07
Из: Норильск
Пользователь №: 27 691



Приведите пожалуйста, получившийся после компиляции код (файл с расширением .lss)
Например, в таком виде:
CODE
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
Go to the top of the page
 
+Quote Post
Андрей Лютько
сообщение Jan 12 2010, 08:31
Сообщение #3





Группа: Участник
Сообщений: 6
Регистрация: 26-09-07
Пользователь №: 30 853



Цитата(nullakilla @ Jan 12 2010, 01:40) *
В итоге я решил забить на RS232 и просто поморгать светодиодом через ножку порта.

Подскажите, пожалуйста, в чем может быть проблема!

Watchdog отключи.
Go to the top of the page
 
+Quote Post
VladimirYU
сообщение Jan 12 2010, 09:11
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 426
Регистрация: 5-04-07
Из: Санкт-Петербург
Пользователь №: 26 782



Цитата(Андрей Лютько @ Jan 12 2010, 11:31) *
Watchdog отключи.

Или наоборот вставь в цикл сброс собаки.
Go to the top of the page
 
+Quote Post
idle1
сообщение Jan 13 2010, 12:03
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 38
Регистрация: 25-02-09
Из: Россия, Москва
Пользователь №: 45 367



Для отладки лучше отключи оптимизацию кода в компиляторе, однажды налетел на такое, долго провозился с ерундовой проблемой...
Go to the top of the page
 
+Quote Post
nullakilla
сообщение Jan 14 2010, 08:03
Сообщение #6





Группа: Участник
Сообщений: 11
Регистрация: 7-05-09
Пользователь №: 48 785



Я прошивал эту ATmega128 через AVRDude в Eclipse, но когда возникали проблемы, то запускал AVReal из консоли. Дак вот интересно что.

Когда смотрел авриэлом, то вотчдог был 1 т.е. Unprogrammed, а когда в рабочем порядке шил AVRDude, то этот фьюз каким то хреном устанавливался Programmed sad.gif При чем, что в настройках аврдюда я выключил перезапись фьюзов.


ВОТ ВАМ И БЕСПЛАТНЫЙ СОФТ, ТОВАРИЩИ.
Go to the top of the page
 
+Quote Post
VladimirYU
сообщение Jan 15 2010, 07:03
Сообщение #7


Местный
***

Группа: Свой
Сообщений: 426
Регистрация: 5-04-07
Из: Санкт-Петербург
Пользователь №: 26 782



nullakilla
Так как все же разрешилась Ваша проблема?
Причина редактирования: Избыточное цитирование. Omen_13
Go to the top of the page
 
+Quote Post
nullakilla
сообщение Jan 16 2010, 17:31
Сообщение #8





Группа: Участник
Сообщений: 11
Регистрация: 7-05-09
Пользователь №: 48 785



Решилась. Дякую!!!!
Go to the top of the page
 
+Quote Post
MAPT
сообщение Jan 17 2010, 09:51
Сообщение #9





Группа: Участник
Сообщений: 10
Регистрация: 3-03-09
Пользователь №: 45 587



Цитата(nullakilla @ Jan 16 2010, 21:31) *
Решилась. Дякую!!!!

А как решилась-то? У меня похожий трабл, тока на 64-ой меге, и контроллер ребутается, когда начинаю чё-нить по usart слать. И ёще возник один вопрос. В 64/128 -ой меге выводы программирования совпадают с выводами USART0. Как сделать так, чтобы можно было и прошивать, и пользоваться юартом?

Сообщение отредактировал MAPT - Jan 17 2010, 09:59
Go to the top of the page
 
+Quote Post
Ronin
сообщение Jan 19 2010, 09:36
Сообщение #10


Участник
*

Группа: Свой
Сообщений: 72
Регистрация: 10-02-05
Из: Краснодар
Пользователь №: 2 558



Цитата(MAPT @ Jan 17 2010, 12:51) *
А как решилась-то?

avrdude фьюз вачдога почему-то обнулял (=вачдог вкл).

Цитата(MAPT @ Jan 17 2010, 12:51) *
В 64/128 -ой меге выводы программирования совпадают с выводами USART0. Как сделать так, чтобы можно было и прошивать, и пользоваться юартом?

например линию rx заводить в контроллер через резистор ом 100 (или скажем джампер но он места много занимает). isp вешать по даташиту. isp конечно не "на 5 проводках" а с драйвером.

Сообщение отредактировал Ronin - Jan 19 2010, 09:52
Go to the top of the page
 
+Quote Post
Александр Куличо...
сообщение Jan 22 2010, 21:37
Сообщение #11


Местный
***

Группа: Свой
Сообщений: 256
Регистрация: 6-03-06
Из: Украина, г. Винница
Пользователь №: 15 017



Цитата
Как сделать так, чтобы можно было и прошивать, и пользоваться юартом?

1. Шить JTAG'ом
2. Уточню Ronin'а. Нога E0(Rx) Подключается к программатору напрямую, а к драйверу RS232/RS485 - через резистор. Но здесь 100 Ом маловато будет. (Если драйвер выдаст +5В, а программатор - 0В, то в програматор потечет ток 50мА.) Я бы поставил от 330..560 Ом. Повторюсь, драйвер на программаторе обязателен.
Go to the top of the page
 
+Quote Post
Ronin
сообщение Jan 25 2010, 11:33
Сообщение #12


Участник
*

Группа: Свой
Сообщений: 72
Регистрация: 10-02-05
Из: Краснодар
Пользователь №: 2 558



Цитата(Александр Куличок @ Jan 23 2010, 00:37) *
2. Уточню Ronin'а. Нога E0(Rx) Подключается к программатору напрямую, а к драйверу RS232/RS485 - через резистор. Но здесь 100 Ом маловато будет. (Если драйвер выдаст +5В, а программатор - 0В, то в програматор потечет ток 50мА.) Я бы поставил от 330..560 Ом. Повторюсь, драйвер на программаторе обязателен.


В принципе да. лучше порядка 330 ом. хотя и 100 ом hc244 тянет smile.gif
Просто у меня предубеждение что 330-560 ом это максимум что можно ставить ))) ещё от ТТЛ )) а когда оно только 1 раз нужно, то чтоб точно не мешало ещё уменьшить в раз несколько smile.gif хотя тут то и скорости обычно не выше 115к.
В серии стоит джампер совмещённым с диагностическим разъёмом (кстати очевиден и плюс того что на одних ногах и уарт и программирование - на одном разъёме можно сделать сразу и isp и диагностику и джампер)

Сообщение отредактировал Ronin - Jan 25 2010, 11:39
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 17th June 2025 - 10:46
Рейтинг@Mail.ru


Страница сгенерированна за 0.01471 секунд с 7
ELECTRONIX ©2004-2016