roboforum.ru

Технический форум по робототехнике.

CC2500 - проблема при переходе в спящий режим

CC2500 - проблема при переходе в спящий режим

tolstiybh » 24 мар 2012, 19:08

Всем привет!!!

Занимаюсь работой с сс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 мкС. Я раньше делал больше. Исправил, но еще не проверял.

Какие могут быть проблемы? Или может проблема в железе?
Очень надеюсь на Вашу помощь!!!

Re: CC2500 - проблема при переходе в спящий режим

tolstiybh » 26 мар 2012, 15:11

Пробовал еще сегодня использовать SPI вручную - spiBITBANG. Не работатет.
Пробовал усыпить его и перед инициализацией, после перезапуска чипа, как в аппноуте у техаса(инициализация чипа после срабатывания прерывания при нажатии клавиши!!). Думал может чип. Попробовал на другом - тоже самое.
Пока даже и незнаю куда копать!!!! wacko.gif
Есть идеи?


cron
Rambler\'s Top100 Mail.ru counter