|
|
  |
ATmega168, зачем дали другие имена регистрам USART'а? |
|
|
|
Aug 1 2008, 03:20
|

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

|
Начал рабоать с этим МК и и озадачился, а зачем они (Atmel) ко всем именам регистров последовательного порта 0 добавили, да и к именам битов - тоже. Т.е. теперь нужно не так писать Код UDR = 0xff; ,а так Код UDR0 = 0xff; Второго посл. порта я в этом МК не увидел, следовательно, зачем нужно было нумеровать его? Есть ли разумное объяснение этому, или я что-то упустил в даташите? Просто при портировании ПО на этот МК, дело не решилось правкой одной! строки в makefile, пришлось еще и исходник адаптировать(((
--------------------
Выбор.
|
|
|
|
|
Aug 1 2008, 04:51
|
Профессионал
    
Группа: Свой
Сообщений: 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
|
|
|
|
|
Aug 1 2008, 06:20
|
Знающий
   
Группа: Свой
Сообщений: 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) так и называется.
|
|
|
|
|
Aug 1 2008, 08:31
|

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

|
Цитата(sensor_ua @ Aug 1 2008, 13:51)  Так и УАРТ немного поменялся. Я заметил) Но зачем же было так народ путать с именами портов... Конечно и мне тоже придется писать свои define'ы... To alux & MrYuran да, я с таким впервые столкнулся, разочаровало. Еще здесь увидел проблему у них. Ошибка в размере SRAM ATmega168. Написано на страничке 512 байт, на самом деле - 1024. Написал в суппорт неделю назад - тишина, сегодня написал по другому адресу. Пока ответа не получил.
--------------------
Выбор.
|
|
|
|
|
Aug 1 2008, 10:55
|

кекс
     
Группа: Свой
Сообщений: 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
|
|
|
|
|
Aug 1 2008, 11:51
|

Знающий
   
Группа: Свой
Сообщений: 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...
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|