Всем привет!!!
Занимаюсь работой с сс2500. Прочитал Ваши посты по поводу сс2500. Очень ценная информация.Сразу видно мастера своего дела!!! Писал на С. Делаю 2 модуля с обратной связью(транссиверы) на 88 меге. Проблема в следующем: не могу загнать сс2500 в спящий режим SPWD делал 2 способами: 1) clear_cs; while(MISO); spi_transmit(CC2500_SIDLE); delay(50000); spi_transmit(CC2500_SPWD); delay(50000); set_cs; 2) Cc_spi_send_strobe(CC2500_SIDLE);
Cc_spi_send_strobe(CC2500_SPWD);
Функции обработки: void Cc_spi_send_strobe(unsigned char command) { clear_cs; while(MISO); spi_transmit(command); set_cs; } void spi_init (void) { DDRB |=(1<<DDB3)|(1<<DDB5); // MOSI&SCK - output PORTB &= (~(1<<3))|(~(1<<5)); // 0 DDRB &=~(1<<DDB4); // MISO - input PORTB &= (~(1<<4)); // 0 DDRD |= (1<<DDD2); // PD2 - for CS SETBIT(PORTD,2); // CS - high /* Set MOSI and SCK output, all others input */ //DDRB = (1<<DDB3)|(1<<DDB4)|(1<<DDB5); /* Enable SPI, Master, set clock rate fck/128 */ //SPCR |= (1<<SPE)|(1<<MSTR)|(1<<SPR1)|(1<<SPR0); SPCR = 0b01010011; // SPR1&SPR0 -f/128 (f/64(10)); SPI-enable; MASTER mode } unsigned char spi_receive(void) { /* Wait for reception complete */ while(!(SPSR & (1<<SPIF))); /* Return Data Register */ return SPDR; }
void spi_transmit(char cData) { /* Start transmission */ SPDR = cData; /* Wait for transmission complete */ while(!(SPSR & (1<<SPIF))); }
Естественно перед тем, как начать работать с чипом, сначала инциализирую: напишу кратко void cc2500_init (void) { Cc_power_up_reset(); // перезапускаю чип Cc_rf_write_settings(); // инициализирую регистры Cc_spi_write_patable(); // записываю 8 значений 0xFE delay(1000); // задержка примерно 4.5 мС для устаканивания чипа } Да и еще момент. Пробовал переводить просто в холостой режим. Ток должен был быть, по заявленному в даташите 1.5 мА. Тоже не работало. Проверял инициализацию SPI - вроде правильно Тактирование МК - внутр 8 МГц. Да и единственное,что еще щас приходит на ум, что надо точный временной интервал по изменениям уровней задать для CS перед подачей команды SRES, как заявлено в даташите 40 мкС. Я раньше делал больше. Исправил, но еще не проверял.
Какие могут быть проблемы? Или может проблема в железе? Очень надеюсь на Вашу помощь!!!
|