|
|
  |
WDT AVR, разное время сбрасывания |
|
|
|
Sep 23 2010, 19:08
|
Профессионал
    
Группа: Свой
Сообщений: 1 468
Регистрация: 28-03-10
Из: Беларусь
Пользователь №: 56 256

|
Установил WDT на 8сек + при каждом сбросе вкл/выкл светодиод и вооружившись секундомером стал измерять. Так вот время сброса оказалось ОЧЕНЬ неточным: от 2с до 6с! Это нормально? WDT при каждом включении сбрасываю: Код WDT_ON: cli ; запрещаем прерывания wdr ; сбрасываем WDT in temp,MCUSR ; andi temp,(0xff & (0<<WDRF)); out MCUSR, temp ; сбрасываем флаг MCUSR, для работы с WDE lds temp,WDTCSR ; ori temp,(1<<WDCE)|(1<<WDE); разрешаем изменение WDT sts WDTCSR,temp ; ldi temp,(1<<WDP0)|(0<<WDP1)|(0<<WDP2)|(1<<WDE)|(0<<WDCE)|(1<<WDP3); sts WDTCSR,temp ; WDT на 8сек ret ; Offtop: почему авр не хотит после инициализации UART отправлять символы, сперва надо что принять? (МК при отправке не зависает, проходит подпрограмму, ничего не отослав по UART, и работает дальше. А вот если сперва принять хотя бы один символ, то все отсылается.) Спасибо.
|
|
|
|
|
Sep 24 2010, 06:47
|
Профессионал
    
Группа: Свой
Сообщений: 1 468
Регистрация: 28-03-10
Из: Беларусь
Пользователь №: 56 256

|
Цитата наверное, что-то типа mega48/88/168 да, оно самое, mega48 Цитата "накосячили" с инициализацией Код clr temp ; sts UCSR0A,temp ; ldi temp,0b00000110; 8бит, 1стоповый бит, нет четности, асинхронный режим sts UCSR0C,temp ; ldi temp,0x80 ; сброс sts CLKPR,temp ; делителя ldi temp,0x00 ; тактовой sts CLKPR,temp ; частоты clr temp ; sts UBRR0H,temp ; ldi temp,29 ; ubrr=29 sts UBRR0L,temp ; 9600 бод/сек
ldi temp,0b00011000; установка TXEN RXEN sts UCSR0B,temp ; USART вкл Спасибо.
Сообщение отредактировал Alt.F4 - Sep 24 2010, 06:50
|
|
|
|
|
Sep 24 2010, 16:05
|
Профессионал
    
Группа: Свой
Сообщений: 1 468
Регистрация: 28-03-10
Из: Беларусь
Пользователь №: 56 256

|
По поводу WDT: накосячил с кодом, запускал watchdog до нажатия кнопки! Теперь проблема другая: после сброса, МК не реагирует на кнопку Код Start: sbic PinC,0 ; KEY нажата? если да, то пропуск след. команды rjmp Start ; rcall sec0_5 ; подождали 0,5сек sbic PinC,0 ; KEY нажата? если да, то пропуск след. команды rjmp Start ;
sbi PortC,3 ; светим SYSTEM rcall WDT_ON ; включаем WDT + разрешаем прерывания
Сообщение отредактировал Alt.F4 - Sep 24 2010, 16:06
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|