Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: ATmega168
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
haker_fox
Начал рабоать с этим МК и и озадачился, а зачем они (Atmel) ко всем именам регистров последовательного порта 0 добавили, да и к именам битов - тоже.
Т.е. теперь нужно не так писать
Код
UDR = 0xff;

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

Второго посл. порта я в этом МК не увидел, следовательно, зачем нужно было нумеровать его? Есть ли разумное объяснение этому, или я что-то упустил в даташите?
Просто при портировании ПО на этот МК, дело не решилось правкой одной! строки в makefile, пришлось еще и исходник адаптировать(((
sensor_ua
Так и УАРТ немного поменялся.
Код
#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
alux
Цитата(haker_fox @ Aug 1 2008, 06:20) *
Начал рабоать с этим МК и и озадачился, а зачем они (Atmel) ...

Тоже столкнулся с подобной проблемой, только в AT90USB1287. Выдало ошибку: PE1 (PORTE) не определено. При детальном изучении io90usb1287.h выяснилось, что имя PE1 (PORTE) совпадает с именем бита PE1 (USART1), и атмеловцы не нашли ничего лучше, кроме как закоментировать определения для PE0...PE7!!! вместо устранения дублирования имен битов. Например, переименованием PE1 (USART1) в UPE1, что я, собственно, и сделал. Кстати, в даташите имя бита UPE1 (USART1) так и называется.
MrYuran
А чё удивляться, это их (атмеловцев) фирменный стиль. Запутать всё так, чтобы потом и с пузырём не разобраться. Чтобы программистам не скучно было. Чтобы было где порезвиться. А то название кристалла в мэйке любой дурак поменять может.
Прямая противоположность - MSP430 от TI. Можно ставить, например, 149 вместо 135, даже не меняя прошивки. Все функциональные блоки во всём семействе идентичны на 100 %
haker_fox
Цитата(sensor_ua @ Aug 1 2008, 13:51) *
Так и УАРТ немного поменялся.

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

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

Еще здесь увидел проблему у них. Ошибка в размере SRAM ATmega168. Написано на страничке 512 байт, на самом деле - 1024. Написал в суппорт неделю назад - тишина, сегодня написал по другому адресу. Пока ответа не получил.
defunct
Цитата(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
Corvus
Цитата(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...
haker_fox
Цитата(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, может быть ошибся с адресом?)
SpiritDance
Цитата(haker_fox @ Aug 2 2008, 05:31) *
Ответа от саппорта не получил. Не хотят они исправлять ошибку sad.gif Писал на avr@atmel.com, может быть ошибся с адресом?)

Почему-то думаю что это не самая критичная ошибка у атмела, требующая решения, тем более во времена рецессии. laughing.gif
Пусть блин лучше уже уберут наконец из даташитов надпись perliminary. cranky.gif
haker_fox
В продолжение темы: при более внимательном изучении и портировании приложения, выяснил, что оказывается затронут не только UART. К сожалению заметно изменилось управление таймерами, внешними прерываниями... Я понимаю, что этот чип покруче несколько, но неужели это требует таких жертв? Лучше ли в этом отношении ARM? Про MSP430 тут уже было сказано.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.