реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> ATmega168, зачем дали другие имена регистрам USART'а?
haker_fox
сообщение Aug 1 2008, 03:20
Сообщение #1


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



Начал рабоать с этим МК и и озадачился, а зачем они (Atmel) ко всем именам регистров последовательного порта 0 добавили, да и к именам битов - тоже.
Т.е. теперь нужно не так писать
Код
UDR = 0xff;

,а так
Код
UDR0 = 0xff;

Второго посл. порта я в этом МК не увидел, следовательно, зачем нужно было нумеровать его? Есть ли разумное объяснение этому, или я что-то упустил в даташите?
Просто при портировании ПО на этот МК, дело не решилось правкой одной! строки в makefile, пришлось еще и исходник адаптировать(((


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
sensor_ua
сообщение Aug 1 2008, 04:51
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 266
Регистрация: 22-04-05
Из: Киев
Пользователь №: 4 387



Так и УАРТ немного поменялся.
Код
#ifdef __ATmega8__
  UCSR0C = (1<<URSEL) | (3<<UCSZ00);
#else
  UCSR0C = (3<<UCSZ00);
#endif

Тупо накатал
Код
#ifdef __ATmega8__

#define USCR0A    USCRA
#define U2X0     U2X
#define UBRR0H    UBRRH
#define UBRR0L    UBRRL
#define UCSR0A    UCSRA
#define UCSR0B    UCSRB
#define UCSR0C    UCSRC
#define TXEN0    TXEN
#define RXEN0    RXEN
#define UCSZ00    UCSZ0
#define UDR0    UDR

#define RXC0      RXC
#define TXC0      TXC
#define UDRE0     UDRE
#define FE0       FE
#define DOR0      DOR
#define UPE0      PE
#define U2X0      U2X
#define MPCM0     MPCM

#define RXCIE0    RXCIE
#define RXB80     RXB8

#endif

и вроде даже работало на м88


--------------------
aka Vit
Go to the top of the page
 
+Quote Post
alux
сообщение Aug 1 2008, 06:20
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 589
Регистрация: 24-04-05
Пользователь №: 4 447



Цитата(haker_fox @ Aug 1 2008, 06:20) *
Начал рабоать с этим МК и и озадачился, а зачем они (Atmel) ...

Тоже столкнулся с подобной проблемой, только в AT90USB1287. Выдало ошибку: PE1 (PORTE) не определено. При детальном изучении io90usb1287.h выяснилось, что имя PE1 (PORTE) совпадает с именем бита PE1 (USART1), и атмеловцы не нашли ничего лучше, кроме как закоментировать определения для PE0...PE7!!! вместо устранения дублирования имен битов. Например, переименованием PE1 (USART1) в UPE1, что я, собственно, и сделал. Кстати, в даташите имя бита UPE1 (USART1) так и называется.
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Aug 1 2008, 06:30
Сообщение #4


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



А чё удивляться, это их (атмеловцев) фирменный стиль. Запутать всё так, чтобы потом и с пузырём не разобраться. Чтобы программистам не скучно было. Чтобы было где порезвиться. А то название кристалла в мэйке любой дурак поменять может.
Прямая противоположность - MSP430 от TI. Можно ставить, например, 149 вместо 135, даже не меняя прошивки. Все функциональные блоки во всём семействе идентичны на 100 %


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Aug 1 2008, 08:31
Сообщение #5


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



Цитата(sensor_ua @ Aug 1 2008, 13:51) *
Так и УАРТ немного поменялся.

Я заметил) Но зачем же было так народ путать с именами портов... Конечно и мне тоже придется писать свои define'ы...

To alux & MrYuran
да, я с таким впервые столкнулся, разочаровало.

Еще здесь увидел проблему у них. Ошибка в размере SRAM ATmega168. Написано на страничке 512 байт, на самом деле - 1024. Написал в суппорт неделю назад - тишина, сегодня написал по другому адресу. Пока ответа не получил.


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
defunct
сообщение Aug 1 2008, 10:55
Сообщение #6


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(haker_fox @ Aug 1 2008, 06:20) *
зачем они (Atmel) ко всем именам регистров последовательного порта 0 добавили, да и к именам битов - тоже.

IMHO потому что регистры вышли за пределы IO space.
Так Вы сразу обратите внимание на эти регистры, и что с ними что-то не так. (может быть у Вас где-то длительность критична и т.п.). Т.е. программа уже не будет работать с этими xxx0 регистрами как со старыми xxx. Особо важно для программ на ассемблере где in/out надо менять на lds/sts

Цитата(haker_fox @ Aug 1 2008, 11:31) *
Ошибка в размере SRAM ATmega168. Написано на страничке 512 байт, на самом деле - 1024.

Зашел по ссылке - написано:
SRAM (Bytes) 1024
Go to the top of the page
 
+Quote Post
Corvus
сообщение Aug 1 2008, 11:51
Сообщение #7


Знающий
****

Группа: Свой
Сообщений: 771
Регистрация: 24-04-08
Из: Зеленоград
Пользователь №: 37 056



Цитата(defunct @ Aug 1 2008, 14:55) *
Зашел по ссылке - написано:
SRAM (Bytes) 1024

Это в таблице. А в описании:
Цитата
Description:
Key Parameters:
16K byte self-programming Flash Program Memory, 512 byte SRAM, 256 Byte EEPROM...
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Aug 2 2008, 01:31
Сообщение #8


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



Цитата(defunct @ Aug 1 2008, 19:55) *
IMHO потому что регистры вышли за пределы IO space.
Так Вы сразу обратите внимание на эти регистры, и что с ними что-то не так. (может быть у Вас где-то длительность критична и т.п.). Т.е. программа уже не будет работать с этими xxx0 регистрами как со старыми xxx. Особо важно для программ на ассемблере где in/out надо менять на lds/sts

Хороший у них способ обращать внимание a14.gif


Цитата(Corvus @ Aug 1 2008, 20:51) *
Это в таблице. А в описании:

Да, верно. В описании. Ответа от саппорта не получил. Не хотят они исправлять ошибку sad.gif Писал на avr@atmel.com, может быть ошибся с адресом?)


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
SpiritDance
сообщение Aug 2 2008, 18:46
Сообщение #9


Дух погибшего транзистора
****

Группа: Свой
Сообщений: 877
Регистрация: 6-09-05
Из: Москва
Пользователь №: 8 288



Цитата(haker_fox @ Aug 2 2008, 05:31) *
Ответа от саппорта не получил. Не хотят они исправлять ошибку sad.gif Писал на avr@atmel.com, может быть ошибся с адресом?)

Почему-то думаю что это не самая критичная ошибка у атмела, требующая решения, тем более во времена рецессии. laughing.gif
Пусть блин лучше уже уберут наконец из даташитов надпись perliminary. cranky.gif


--------------------
Yes, there are two paths you can go by But in the long run Theres still time to change the road youre on.
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Aug 6 2008, 05:37
Сообщение #10


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



В продолжение темы: при более внимательном изучении и портировании приложения, выяснил, что оказывается затронут не только UART. К сожалению заметно изменилось управление таймерами, внешними прерываниями... Я понимаю, что этот чип покруче несколько, но неужели это требует таких жертв? Лучше ли в этом отношении ARM? Про MSP430 тут уже было сказано.


--------------------
Выбор.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 18:23
Рейтинг@Mail.ru


Страница сгенерированна за 0.0148 секунд с 7
ELECTRONIX ©2004-2016