реклама на сайте
подробности

 
 
> проблемы с NORDIC nRF2401A
Asty
сообщение May 12 2006, 07:57
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 21
Регистрация: 30-11-04
Из: Питер
Пользователь №: 1 266



Подключаю nRF2401A к микроконтроллеру MSP430
тайминги и сигналы передачи настроены правильно
проверил по осцилографу

ничего не работает

подскажите пожалуйста кто знает в чем может быть дело

Спасибо
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
gormih
сообщение Jun 8 2006, 08:50
Сообщение #2


nofb
***

Группа: Свой
Сообщений: 430
Регистрация: 18-05-06
Из: Москва, Зеленоград
Пользователь №: 17 218



вообщем так - я научился передавть 1 байт, а вот с передачей пакета из нескольких пока проблемы.
Передеача одного байта с АЦП и выдача его на rs232 у меня осуществяляется вот так:

#include <Nordic\reg24e1.h>

struct RFConfig
{
unsigned char n;
unsigned char buf[15];
};

typedef struct RFConfig RFConfig;

#define ADDR_INDEX 8 // Index to address bytes in RFConfig.buf
#define ADDR_COUNT 4 // Number of address bytes

const RFConfig txconf =
{
15,
0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x12, 0x34, 0x56, 0x78, 0x83, 0x6c, 0x04
};

const RFConfig rxconf =
{
15,
0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x87, 0x65, 0x43, 0x21, 0x83, 0x6c, 0x05
};

void Delay100us(volatile unsigned char n)
{
unsigned char i;
while(n--)
for(i=0;i<35;i++)
;
}

unsigned char SpiReadWrite(unsigned char B)
{
EXIF &= ~0x20; // Clear SPI interrupt
SPI_DATA = b; // Move byte to send to SPI data register
while((EXIF & 0x20) == 0x00) // Wait until SPI hs finished transmitting
;
return SPI_DATA;
}

void InitUart(void)
{
TH1 = 243;// 19200@16MHz (when T1M=1 and SMOD=1)
CKCON |= 0x10; // T1M=1 (/4 timer clock)
PCON = 0x80; // SMOD=1 (double baud rate)
SCON = 0x52; // Serial mode1, enable receiver
TMOD = 0x20; // Timer1 8bit auto reload
TR1 = 1; // Start timer1
P0_DIR |= 0x02; // P0.1 (RxD) is an input
P0_ALT |= 0x06; // Select alternate functions on pins P0.1 and P0.2
}

void PutChar(char B)
{
while(!TI)
;
TI = 0;
SBUF = b;

}


void InitADC(void)
{
ADCCON = 0x20; // Channel 0, NPD=1, ADCRUN=0, EXTREF=0
ADCSTATIC &= 0x1c;
ADCSTATIC |= 0x03; // 12bit
ADCCON &= ~0x80; // Start..
ADCCON |= 0x80; // ..new conversion
}
/*
void InitPWM(void)
{
P0_ALT |= 0x80; // Enable PWM output
PWMCON = 0xc0; // Enable 8 bit PWM with minimum prescaler
}
*/

unsigned char ReceivePacket()
{
unsigned char b;
CE = 1;
while(DR1 == 0)
;
b = SpiReadWrite(0);
CE = 0;
return b;
}

void TransmitPacket(unsigned char B)
{
unsigned char i;
CE = 1;
Delay100us(0);
// Start with the address of the receiver:
for(i=0;i<ADDR_COUNT;i++)
SpiReadWrite(rxconf.buf[ADDR_INDEX+i]);
SpiReadWrite(B);
CE = 0;
Delay100us(3); // Wait ~300us
}

unsigned char ReadADC(void)
{
unsigned char b;

while((EXIF & 0x10) == 0) // Wait until ADC conversion complete
;
EXIF &= ~0x10; // Clear ADC completion bit
b = ADCDATAH; // Read ADC data
ADCCON &= ~0x80; // Start..
ADCCON |= 0x80; // ..new conversion
return b;
}

/*void WritePWM(unsigned char B)
{
PWMDUTY = b;
}
*/
void Receiver(void)
{
unsigned char b;
CS = 1;
Delay100us(0);
for(b=0;b<rxconf.n;b++)
{
SpiReadWrite(rxconf.buf[b]);
}
CS = 0;
for(;;)
{
b = ReceivePacket();
PutChar(B);
}
}

void Transmitter(void)
{
unsigned char b;

CS = 1;
Delay100us(0);
for(b=0;b<txconf.n;b++)
{
SpiReadWrite(txconf.buf[b]);
}
CS = 0;
for(;;)
{


b = ReadADC(); // Read ADC
TransmitPacket(B); // Transmit data
}
}

void Init(void)
{
P0_DIR = 0x40; // P0.6 is input, the rest output
P0 = 0x10; // P0.4 = 1 for the rec/tran selection
PWR_UP = 1; // Turn on Radio
Delay100us(30); // Wait > 3ms
SPICLK = 0; // Max SPI clock (XTAL/8)
SPI_CTRL = 0x02; // Connect internal SPI controller to Radio
}

void main(void)
{
Init();
if(P0 & 0x40)
{
InitUart();
Receiver();
}
else
{
InitADC();
Transmitter();
}
}


Это написано на си под 8051. Прога рабочая - выдает на 232 интерфейс последовательность байт, которые соответствуют значению напряжения на АЦП передатчика.
Вопрос в другом - я изменил значение DATA_1W в конфигурации, но пакет из нескольких байт не хочет передаваться - то есть приемник его не принимает (не знаю, передает ли передатчик еще не проверял)
Если решишь эту пробелму - пиши. Если решу сам - напишу :-))

Сообщение отредактировал Михаил Горюнов - Jun 8 2006, 08:53


--------------------
Это не то что вы подумали ...

Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Asty   проблемы с NORDIC nRF2401A   May 12 2006, 07:57
- - Михаил Горюнов   Слишком общий вопрос: Всe подключил правильно, но ...   May 18 2006, 12:23
|- - Asty   С передачей разобрался) Но на прием так и не рабо...   Jun 8 2006, 08:39
|- - acex2   Народ, а подскажите где и по чем вы берете nRF2401...   Jun 8 2006, 09:16
||- - Михаил Горюнов   Цитата(acex2 @ Jun 8 2006, 12:16) Народ, ...   Jun 8 2006, 09:23
|- - Asty   Вот время идет мы умнеем... Разобрался с nRF2401A...   Aug 18 2006, 07:20
- - Viktor O.   А с nRF24L01 никто не работал ? че-то не получаетс...   Aug 22 2006, 12:03
|- - _pv   Цитата(Viktor O. @ Aug 22 2006, 19:03) А ...   Aug 22 2006, 14:21
- - Viktor O.   выставляю PWR_UP = 1 PRIM_RX = 0 СЕ все время 1. п...   Aug 23 2006, 06:37
|- - _pv   Цитата(Viktor O. @ Aug 23 2006, 12:37) вы...   Aug 23 2006, 08:08
|- - Viktor O.   Цитата(_pv @ Aug 23 2006, 12:08) Цитата(V...   Aug 24 2006, 08:05
- - Михаил Горюнов   У меня nrf24e1, и если я буду держать СЕ все время...   Aug 23 2006, 08:29
|- - _pv   Цитата(Михаил Горюнов @ Aug 23 2006, 14:2...   Aug 23 2006, 08:34
- - Viktor O.   VDD_PA - Power Output - Power Supply (+1.8V) to Po...   Aug 24 2006, 08:29
|- - _pv   Цитата(Viktor O. @ Aug 24 2006, 15:29) VD...   Aug 24 2006, 13:22
|- - Михаил Горюнов   Цитата(_pv @ Aug 24 2006, 16:22) Цитата(V...   Aug 24 2006, 13:24
- - Viktor O.   CONFIG у меня так записан - 0x72 я этот бит в сам...   Aug 24 2006, 13:49
- - Viktor O.   нет, дело не в этом. его хоть как включай - хоть в...   Aug 24 2006, 14:31
- - Viktor O.   а зачем нужен IREF ? на схеме в даташите он через ...   Aug 24 2006, 14:45
- - Viktor O.   IREF как раз и нужен для VDD_PA ура, получилось пе...   Aug 25 2006, 09:16
|- - Михаил Горюнов   Цитата(Viktor O. @ Aug 25 2006, 12:16) I...   Aug 25 2006, 09:21
|- - _pv   Цитата(Михаил Горюнов @ Aug 25 2006, 16:2...   Aug 25 2006, 09:51
|- - Михаил Горюнов   Цитата(_pv @ Aug 25 2006, 12:51) Цитата(М...   Aug 25 2006, 10:16
- - Viktor O.   т е длина передаваемого пакета должна быть меньше ...   Aug 25 2006, 09:47
|- - Михаил Горюнов   Цитата(Viktor O. @ Aug 25 2006, 12:47) т ...   Aug 25 2006, 09:50
- - Viktor O.   все три "этажа" имеют размер 32 байта ?   Aug 25 2006, 10:05
- - _pv   Цитата(Viktor O. @ Aug 25 2006, 17:05) вс...   Aug 25 2006, 10:33


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 16:09
Рейтинг@Mail.ru


Страница сгенерированна за 0.01388 секунд с 7
ELECTRONIX ©2004-2016