Настройка скорости передачи данных Atmega8

Я работаю с чипом ATMEGA8, который является частью большей платы. Я пытаюсь установить правильную скорость передачи данных, но, похоже, это не работает.

В ATMEGA8 используется внешний кварцевый генератор с частотой 3,6864 МГц. Чтобы задать скорость передачи данных, я использую следующие строки, как это предлагается в таблице данных:

#define F_CPU 3686400// Clock Speed
#define BAUD 19200
#define MYUBRR F_CPU/16/BAUD-1

С этой конфигурацией я измерил время с помощью осциллографа и получил битрейт 1000 бит/с. Любое предложение?

заранее спасибо


person Aldridge1991    schedule 14.07.2014    source источник
comment
Как используется MYUBRR? Я бы добавил хотя бы круглые скобки в define. #define MYUBRR (F_CPU/16/BAUD-1). По-видимому, в регистре UART также есть флаг двойной скорости (но он не соответствует 19200 против 1000). У вас установлены правильные предохранители, чтобы не использовать внутренний генератор.   -  person TMa    schedule 14.07.2014
comment
каково итоговое значение MYUBRR, когда вы смотрите его в таблице символов?   -  person Deleted User    schedule 15.07.2014
comment
Сейчас 11. Вроде все нормально.   -  person Aldridge1991    schedule 16.07.2014


Ответы (1)


Единственный способ, которым я могу заставить ваши цифры иметь какой-либо смысл, это если:

  • Вы измеряете частоту кадров, а не битрейт (10 бит в типичном кадре).
  • U2X установлен
  • Чип настроен на использование внутреннего генератора с заводской тактовой частотой 1 МГц.

Это даст бод = f / (8 * (UBBR + 1)) = 10 ^ 6 / (8 * (11 + 1)) = 10417 бод, что очень близко к 1000 кадров в секунду.

В качестве альтернативы может быть, что вы неправильно измеряете с помощью прицела. Попробуйте подключить чип кабелем ftdi или чем-то подобным и посмотрите, есть ли сквозное отверстие.

Я надеюсь, что это может помочь в устранении неполадок.

person user2973    schedule 17.07.2014