zheka 1 16 декабря, 2010 Опубликовано 16 декабря, 2010 · Жалоба Наткнулся на описание контроллера ATmega128RFA1 - из последних, может работать от 3.6 вольт и разгоняться при этом до 16 МГц. Он с радиотрансивером. Интересует следующее - есть ли какие-нибудь другие реинкарнации ATMega128 (важна pin-to-pin совместимость), способные работать на такой частоте при напряжении 3.3 вольт ? Есть проект на ATmega128, задействованы все выводы. ИЗ-за 3 вольтовой периферии вынужден разгонять контроллер всего до 8 МГц, а так хочется 16. Согласнование не прокатит - слишком много линий связи. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Dx! 0 16 декабря, 2010 Опубликовано 16 декабря, 2010 · Жалоба Нет. ATmega128RFA1 уникальна по многим параметра. 16MHz у ней с 1.8V. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zheka 1 16 декабря, 2010 Опубликовано 16 декабря, 2010 (изменено) · Жалоба нда... Что самое интересное, в том проекте как раз трансивер отдельный используется, и эта атмега могла бы убить сразу двух зайцев но... зело сложен в ней трансивер.... Изменено 16 декабря, 2010 пользователем zheka Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ataradov 0 16 декабря, 2010 Опубликовано 16 декабря, 2010 · Жалоба зело сложен в ней трансивер.... Что значит сложен? В простейшем случае принять-отправить кадр - это программа на несколько десятков строчек. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zheka 1 16 декабря, 2010 Опубликовано 16 декабря, 2010 (изменено) · Жалоба Taradov Alexander, а Вам приходилось работать с cc2500? Что на Ваш взгляд лучше? Может ли ATmega работать с PCB-антенной? Кстати - пытался на сайте атмель найти пример кода - не смог. Не ткнете пальцем? Изменено 16 декабря, 2010 пользователем zheka Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ataradov 0 16 декабря, 2010 Опубликовано 16 декабря, 2010 (изменено) · Жалоба Taradov Alexander, а Вам приходилось работать с cc2500? Что на Ваш взгляд лучше? Не работал. Я по долгу службы работаю с атмелом :) Может ли ATmega работать с PCB-антенной? Да, конечно. Кстати - пытался на сайте атмель найти пример кода - не смог. Не ткнете пальцем? Не знаю где это есть на сайте, но вот кусок простейшего кода, который я использовал для тестов.Код грязный, но представление дает. Используются и basic и extended режимы, для basic можно установку адресов пропустить. #include <avr/io.h> #include <avr/interrupt.h> #include "atmega128rfa1.h" #define DEVICE 0 //#define DEVICE 1 #define BASIC 0 #define PANID (0x1234) #define SADDR DEVICE //(0x0001) #define EADDR (0xaabbccdd00000000LL | SADDR) // // Types // typedef struct { uint8_t phr; uint16_t fcf; uint8_t seq; uint16_t dpan; uint16_t daddr; uint16_t saddr; uint8_t data; uint16_t crc; } Frame_t; // // Variables // uint8_t txCnt = 0; uint8_t payload = 0; volatile int rxReceived = 0; volatile uint8_t rxPayload; volatile int txWaitInt = 0; // // Functions // void infBlink(void) { long i; cli(); PORTE = 0; while (1) { PORTE ^= 0xff; for (i = 0; i< 20000; i++) asm("nop"); } } void setState(uint8_t state) { TRX_STATE = CMD_FORCE_TRX_OFF; TRX_STATE = state; while (state != (TRX_STATUS & REG_TRX_STATUS_TRX_STATUS_MASK)); } void sendFrame(uint8_t payload) { int i; Frame_t frame; #if BASIC setState(TRX_CMD_PLL_ON); #else setState(TRX_CMD_TX_ARET_ON); #endif frame.phr = sizeof(Frame_t)-1; frame.fcf = (1 << 0) /*data*/ | (1<<5) /*ackReq*/ | (1<<6) /*panIdComp*/ | (2<<10) /*dstAddrMode*/ | (2<<14) /*srcAddrMode*/; frame.dpan = PANID; frame.saddr = SADDR; frame.daddr = 1-SADDR; frame.seq = txCnt++; frame.data = payload; for (i = 0; i < sizeof(Frame_t); i++) TRX_FRAME_BUFFER(i) = ((uint8_t *)&frame)[i]; txWaitInt = 1; TRX_STATE = CMD_TX_START; } ISR(TRX24_RX_END_vect) { setState(TRX_CMD_PLL_ON); PORTE ^= (1<<3); rxPayload = TRX_FRAME_BUFFER(9); rxReceived = 1; } ISR(TRX24_TX_END_vect) { PORTE ^= (1<<2); if (txWaitInt) txWaitInt = 0; else infBlink(); } void rfInit(void) { TRXPR_struct._trxrst = 1; setState(TRX_CMD_TRX_OFF); CSMA_SEED_1_struct._aack_set_pd = 1; CSMA_SEED_1_struct._aack_dis_ack = 0; IRQ_STATUS = IRQ_STATUS_CLEAR_VALUE; IRQ_MASK_struct._rx_end_en = 1; IRQ_MASK_struct._tx_end_en = 1; sei(); PHY_CC_CCA_struct._channel = 0x0f; TRX_CTRL_2_struct._rx_safe_mode = 1; CSMA_SEED_0 = (uint8_t)SADDR; { uint16_t vPanId = PANID; uint8_t *panId = (uint8_t *)&vPanId; PAN_ID_0 = panId[0]; PAN_ID_1 = panId[1]; } { uint16_t vShortAddr = SADDR; uint8_t *shortAddr = (uint8_t *)&vShortAddr; SHORT_ADDR_0 = shortAddr[0]; SHORT_ADDR_1 = shortAddr[1]; } { uint64_t vExtAddr = EADDR; uint8_t *extAddr = (uint8_t *)&vExtAddr; IEEE_ADDR_0 = extAddr[0]; IEEE_ADDR_1 = extAddr[1]; IEEE_ADDR_2 = extAddr[2]; IEEE_ADDR_3 = extAddr[3]; IEEE_ADDR_4 = extAddr[4]; IEEE_ADDR_5 = extAddr[5]; IEEE_ADDR_6 = extAddr[6]; IEEE_ADDR_7 = extAddr[7]; } } int main() { long i; DDRE = 0xff; PORTE = 0xff; rfInit(); #if DEVICE == 0 #if BASIC setState(TRX_CMD_RX_ON); #else setState(TRX_CMD_RX_AACK_ON); #endif while (1) { // Wait for frames if (rxReceived) { for (i = 0; i < 10000; i++) // Wait a bit asm("nop"); rxReceived = 0; sendFrame(rxPayload); while (txWaitInt) asm("nop"); #if BASIC setState(TRX_CMD_RX_ON); #else setState(TRX_CMD_RX_AACK_ON); #endif } } #endif #if DEVICE == 1 while (1) { for (i = 0; i < 1000000; i++) asm("nop"); // Send frame sendFrame(payload); while (txWaitInt) asm("nop"); // Wait for response rxReceived = 0; #if BASIC setState(TRX_CMD_RX_ON); #else setState(TRX_CMD_RX_AACK_ON); #endif for (i = 0; i < 1000000; i++) { if (rxReceived) { if (payload == rxPayload) payload++; else infBlink(); break; } } } #endif while (1); return 0; } Изменено 16 декабря, 2010 пользователем Taradov Alexander Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zheka 1 16 декабря, 2010 Опубликовано 16 декабря, 2010 · Жалоба блин, у них на сайте даже нормального описания evaluation kit нет. То ли дело у TI... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ataradov 0 16 декабря, 2010 Опубликовано 16 декабря, 2010 · Жалоба блин, у них на сайте даже нормального описания evaluation kit нет. Да, есть такая проблема. Но схема есть, и она не сильно сложная - разобраться можно :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zheka 1 16 декабря, 2010 Опубликовано 16 декабря, 2010 · Жалоба да схема и в даташите есть. Мне бы пример топологии с PCB антенной.... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ataradov 0 16 декабря, 2010 Опубликовано 16 декабря, 2010 · Жалоба да схема и в даташите есть. Мне бы пример топологии с PCB антенной.... Для примера PCB антены можно посмотреть на документацию на кит Raven. Он на отдельном трансивере, но антена не меняется. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться