Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

Закрытая тема
Опции темы
Непрочитано 21.05.2011, 19:41   #31
DrAG0n_
Частый гость
 
Регистрация: 01.06.2010
Сообщений: 34
Сказал спасибо: 1
Сказали Спасибо 11 раз(а) в 11 сообщении(ях)
DrAG0n_ на пути к лучшему
По умолчанию Re: Mega48+USART= кракозябры

Хорошо, что все заработало. А бывает вот такой глюк. Писал программу для MEGA8515

UBRRL = 5; // 115200 at quartz 11.059.200 Hz
// UBRRL = 9; // 115200 at quartz 18.432.000 Hz
UBRRH = 0;
UCSRB = (1‹‹TXEN) | (1‹‹RXEN);
UCSRC = (3‹‹UCSZ0); // wrong for ATMEGA32

Все работало. Потом потребовался 2й экземпляр. Поставил туда MEGA32. Компилируется, но принимается всякая ерунда, переходник глючит и т.п.
Разбирался полчаса.
Оказалось, в М32 UBRRH и UCSRC находятся по одному адресу. Если старший бит записываемого байта = 1, пишется в UCSRC, соответственно, (3‹‹UCSZ0) затирал UBRRH, скорость получалась ~488 бит/с. Нашел в VMLAB (я студентов учу на VMLAB+WinAVR). Правильно надо так:

UBRRL = 5; // 115200 at quartz 11.059.200 Hz
// UBRRL = 9; // 115200 at quartz 18.432.000 Hz
UBRRH = 0;
UCSRB = (1‹‹TXEN) | (1‹‹RXEN);
UCSRC = (3‹‹UCSZ0) | (1‹‹URSEL); // correct
Реклама:
DrAG0n_ вне форума  
Непрочитано 22.05.2011, 10:18   #32
Godzilla82
Почётный гражданин KAZUS.RU
 
Регистрация: 29.10.2006
Сообщений: 1,443
Сказал спасибо: 99
Сказали Спасибо 315 раз(а) в 231 сообщении(ях)
Godzilla82 на пути к лучшему
Сообщение Re: Mega48+USART= кракозябры

Сообщение от DrAG0n_ Посмотреть сообщение
А бывает вот такой глюк...
Нашел в VMLAB (я студентов учу на VMLAB+WinAVR)...
Ну в даташите всё расписано... Хотя иногда пока догадаешься, где искать...

19.10 Accessing UBRRH/ UCSRC Registers
The UBRRH Register shares the same I/O location as the UCSRC Register. Therefore some special consideration must be taken when accessing this I/O location.

19.10.1 Write Access
When doing a write access of this I/O location, the high bit of the value written, the USART Register
Select (URSEL) bit, controls which one of the two registers that will be written. If URSEL is
zero during a write operation, the UBRRH value will be updated. If URSEL is one, the UCSRC
setting will be updated.

19.10.2 Read Access
Doing a read access to the UBRRH or the UCSRC Register is a more complex operation. However,
in most applications, it is rarely necessary to read any of these registers.
The read access is controlled by a timed sequence. Reading the I/O location once returns the
UBRRH Register contents. If the register location was read in previous system clock cycle, reading
the register in the current clock cycle will return the UCSRC contents. Note that the timed
sequence for reading the UCSRC is an atomic operation. Interrupts must therefore be controlled
(for example by disabling interrupts globally) during the read operation.

Reading the UBRRH contents is not an atomic operation and therefore it can be read as an ordinary
register, as long as the previous instruction did not access the register location.
Godzilla82 вне форума  
Закрытая тема

Закладки


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Си -> Assembler (mega48) MKsoft Микроконтроллеры, АЦП, память и т.д 7 12.03.2009 14:31
Замена mega48 на mega8 ? woroba Микроконтроллеры, АЦП, память и т.д 4 04.02.2008 21:55
AVR Mega48 и самопрограммирование Alex_mel Микроконтроллеры, АЦП, память и т.д 1 17.05.2006 14:06


Часовой пояс GMT +4, время: 15:30.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot