Интересный глюк c UARTом у atmega8515
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено Олег13 17 июня 2004 г. 12:54

Устройство на ATMEGA8515 заворачивает данные по UARTу (все что принимает отправляет обратно).Кварц 14745600Гц, UBRR = 7. При рваном потоке (паузы между пакетами составляют мкс) все работает нормально. При непрерывном потоке проскакивают ошибки(приблизно раз в 10 секунд).
Все прерывания (кроме ReceiveInterrupt) запрещены.

Текст программы:

MainProgram:
cli ;запрещение прерываний
;Инициализация указателя стека
ldi AL, low(StackPointer)
ldi AH, high(StackPointer)
out SPH, AH
out SPL, AL
ldi AH, (CrystalFrequency/(16*BaudRate)-1)
out UBRR, AH
sbi UCR, RXCIE ; UART - прерывание RX Complete разрешено
sbi UCR, TXEN ; UART - передача разрешена
sbi UCR, RXEN ; UART - прием разрешен
sei;
L_MainLoop:
rjmp L_MainLoop
ReceiveInterrupt:
in bTempSREG, SREG ; сохранение значения регистра статуса
in Temp, USR
in AL, UDR ; чтение данных UART
out UDR, AL ; запись UART Data Register
out SREG, bTempSREG
reti

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru