Ксения (27.10.2017 00:29 - 00:37, просмотров: 1038) ответил Ксения на Что такое ATmega3208, ATmega3209, ATmega4808, ATmega4809? Неужели Microchip выпустил новые AVR-ки? Google пока не находит, а у IAR только что появилось в списке поддерживаемых компилятором девайсов. =>
Дело становится совсем серьёзным - новые ATmega4808 и ATmega4809 имеют "архитектуру" X-Mega: Достала из последнего севиспака IAR-компилятора заголовочные файлы iom4808.h и iom4809.h, заглянула в них и сравнила между собой.
Делюсь результатами:
Во-первых, порты имеют структуру, продобную той, что имеют X-Mega:
/* I/O Ports */
typedef struct PORT_struct
{
register8_t DIR; /* Data Direction */
register8_t DIRSET; /* Data Direction Set */
register8_t DIRCLR; /* Data Direction Clear */
register8_t DIRTGL; /* Data Direction Toggle */
register8_t OUT; /* Output Value */
register8_t OUTSET; /* Output Value Set */
register8_t OUTCLR; /* Output Value Clear */
register8_t OUTTGL; /* Output Value Toggle */
register8_t IN; /* Input Value */
register8_t INTFLAGS; /* Interrupt Flags */
register8_t PORTCTRL; /* Port Control */
...
register8_t PIN0CTRL; /* Pin 0 Control */
register8_t PIN1CTRL; /* Pin 1 Control */
register8_t PIN2CTRL; /* Pin 2 Control */
register8_t PIN3CTRL; /* Pin 3 Control */
register8_t PIN4CTRL; /* Pin 4 Control */
register8_t PIN5CTRL; /* Pin 5 Control */
register8_t PIN6CTRL; /* Pin 6 Control */
register8_t PIN7CTRL; /* Pin 7 Control */
...
} PORT_t;
Т.е. работа с ними уже не та, что была раньше у Мег, а ровно та же, как у X-Мег.
Появилась "Система событий", хорошо зарекомендовавшая себя у X-Мег.
Кто не в курсе, добавлю, что это вроде аппаратного коммуникатора, позволющего перебросить сигналы от пинов порта
(еще на уровне порта выбираемо в какой полярности или какую сторону фронт и пр.) для работы с таймерами,
АЦП, DMA и др., где по импульсу можно что-то делать. Т.е. позволяет отказаться от традиционной, но неудобной,
системы в обычных Мегах, когда какдый пин жестко зарезерирован под какой-то входной сигнал и не может быть
програмно изменен.
ATmega4808 имеет 5 каналов EVSYS, а ATmega4809 имеет 8 каналов.
Здесь и далее я стану отмечать жирным шрифтом то, чем ATmega4809 богаче, чем ATmega4808.
EVSYS - Event System
register8_t CHANNEL5; /* Multiplexer Channel 5 */
register8_t CHANNEL6; /* Multiplexer Channel 6 */
register8_t CHANNEL7; /* Multiplexer Channel 7 */
У ATmega4808 3 штуки USART'а, а у ATmega4809 их 4:
#define USART0 (*(USART_t *) 0x0800) /* Universal Synchronous and Asynchronous Receiver and Transmitter 0 */
#define USART1 (*(USART_t *) 0x0820) /* Universal Synchronous and Asynchronous Receiver and Transmitter 1 */
#define USART2 (*(USART_t *) 0x0840) /* Universal Synchronous and Asynchronous Receiver and Transmitter 2 */
#define USART3 (*(USART_t *) 0x0860) /* Universal Synchronous and Asynchronous Receiver and Transmitter 3 */
У ATmega4808 4 штук 16-битных таймеров, а у ATmega4809 их 5:
TCB3 - 16-bit Timer Type B 3
#define TCA0 (*(TCA_t *) 0x0A00) /* 16-bit Timer/Counter Type A 0 */
#define TCB0 (*(TCB_t *) 0x0A80) /* 16-bit Timer Type B 0 */
#define TCB1 (*(TCB_t *) 0x0A90) /* 16-bit Timer Type B 1 */
#define TCB2 (*(TCB_t *) 0x0AA0) /* 16-bit Timer Type B 2 */
#define TCB3 (*(TCB_t *) 0x0AB0) /* 16-bit Timer Type B 3 */
Круто, да? А если бы ATmega4808/4809 были бы еще 5-вольтовыми, то я бы немедленно полюбила бы Microchip! :)