ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
22 ноября
789943 Топик полностью
Ксения (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! :)