Перейти к содержанию
    

atmega8 usart

Здраствуйте, я делал устройство чтобы оно с уарта брало символы и в дисплей их загоняло на тини2313

и дернул меня черт переделать его на мегу8

 

написал, включил не работает уарт....

 

использую винавр от 2007 25 мая вроде и студию тоже вроде последнию...

включаю симуляция и вижу что инициализация неверная

void USART_init(void)
{
  cli();
  UCSRB = (1<<RXEN)|(1<<RXCIE);
  UCSRC = 0b10000110;
  UBRRH = 0x00;
  UBRRL = (unsigned char)47;
  sei();
}

 

а именно, ккогда в ucsrc а записываю значение, он его же записывае и в ubrrh

а когда я обнуляю ubrrh он обнуляет и контрольный регистр Ц.....

 

бред какойто ........

:help:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В некоторых аврах кое-какие регистры уарта совмещены. В соответствующем регистре надо выставить или сбросить битик при доступе к нужному регистру. Внимательно сравните описание уарта 2313 и м8. В частности бит URSEL UCSRC. Я так понимаю после его выставления работа идет с UCSRC. У вас он выставляется. Попробуйте инициализировать скорость перед инициализацией контрольного регистра.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Гость =AVR=

Из-за того, что при проектировании Меги8 не хватило одного адресочка, регистры UBRRH и UCSRC живут по одному и тому же адресу, и в какой из них будет проведена запись - определяется старшим (7) битом в этом адресе - URSEL. Когда он в 0 - запись идет в UCSRC, когда в 1 - в UBRRH. Для чтения UCSRC надо читать этот адрес дважды подряд при выключенных прерываниях. Кури даташыт, все разжевано в разделе USART

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот примерчик инициализации

void USART_Init( unsigned int baudrate )
{
  unsigned char x;

  UBRRH = (unsigned char) (baudrate>>8);
  UBRRL = (unsigned char) baudrate;

  UCSRA = (1 << U2X);
  /* Enable UART receiver and transmitter */
  UCSRB = ( ( 1 << RXCIE ) | ( 1 << RXEN ) | ( 1 << TXEN ) | ( 1 << TXCIE ));

  /* Set frame format: 8 data 2stop */
  UCSRC = (1<<URSEL)|(1<<USBS)|(1<<UCSZ1)|(1<<UCSZ0);

  /* Flush receive buffer */
  x = 0;

  USART_RxTail = x;
  USART_RxHead = x;
  USART_TxTail = x;
  USART_TxHead = x;
}

 

зы тоже как-то накололся - писал для m168, m128 - проблем не было. Потом вствил драйвер в код для m16 - перестало работать. Что только не делал - даже макс232 перепаял. Потом, когда уже когда ничего не оставалось, заглянул в даташит. Воистину "Если ты всё перепробовал, и ничего не получается, прочти, наконец, инструкцию. (Вольное переложение закона Мерфи)"

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

спасибо, страница 150 , читал , сюда нписал не сразу , сначала как раз в даташитах и лазил, короче менять пробовал. и и так и сяк

и

и по 2 раза и по 1

post-29867-1187897162_thumb.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А в железке? Может я не прав, но имхо в данном случае некорректность отображения в симуляторе студии не показатель.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

вот и весь программе....

 

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

 

 

спасибо за помощь

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...