Skocz do zawartości

jesik

Użytkownicy
  • Zawartość

    1
  • Rejestracja

  • Ostatnio

Informacje

  • Płeć
    Mężczyzna

Osiągnięcia użytkownika jesik

Debiutant

Debiutant (1/19)

  • To już rok!
  • To już 5 lat!

Odznaki

0

Reputacja

  1. Witam, pisze z następującym problemem nie mogę nawiązać komunikacji z cc1100 kiedy próbuje odczytać wartość jakiegoś rejestru dostaje same 0 co pewnie oznacza też że to co próbuje mu wpisać do niego też nie dochodzi.... Przy pisaniu programu posiłkuje się artykułem z elektroniki praktycznej 3/2008 gdzie opisali ten układ. W artykule przykłady pisane są pod Atiny, ja staram się go przerobić pod arduino(w moim przypadku pro mikro) program pisze w arduino IDE (co zresztą widać) oraz używam konwerterów poziomów logicznych. Linki do artykułów: http://ep.com.pl/files/2961.pdf http://ep.com.pl/files/2998.pdf http://ep.com.pl/files/3029.pdf http://ep.com.pl/files/3039.pdf // rejestry konfiguracyjne #define IOCFG0 B00000010 //0x02; //06 GDO0 Output Pin Configuration #define PKTCTRL0 B00001000 //0x08; //05 Packet Automation Control #define FSCTRL1 B00001011 //0x0B; //06 Frequency Synthesizer Control #define FREQ2 B00001101 //0x0D; //21 Frequency Control Word, High Byte #define FREQ1 B00001110 //0x0E; //62 Frequency Control Word, Middle Byte #define FREQ0 B00001111 //0x0F; //76 Frequency Control Word, Low Byte #define MDMCFG4 B00010000 //0x10; //F6 Modem Configuration #define MDMCFG3 B00010001 //0x11; //83 Modem Configuration #define MDMCFG2 B00010010 //0x12; //03 Modem Configuration #define DEVIATN B00010101 //0x15; //15 Modem Deviation Setting #define MCSM0 B00011000 //0x18; //18 Main Radio Control State Machine Configuration #define FOCCFG B00011001 //0x19; //16 Frequency Offset Compensation Configuration #define FSCAL3 B00100011 //0x23; //E9 Frequency Synthesizer Calibration #define FSCAL2 B00100100 //0x24; //2A Frequency Synthesizer Calibration #define FSCAL1 B00100101 //0x25; //00 Frequency Synthesizer Calibration #define FSCAL0 B00100110 //0x26; //1F Frequency Synthesizer Calibration #define TEST2 B00101100 //0x2C; //81 Various Test Settings #define TEST1 B00101101 //0x2D; //35 Various Test Settings #define TEST0 B00101110 //0x2E; //09 Various Test Settings //komendy #define SRES 0x30 //komenda zerowania układu TRX #define SRX 0x34 //tryb odbiorczy #define SIDLE 0x36 int clock=15; int slave=10; int miso=14; int mosi=16; byte dana=15; void setup (void) { pinMode(clock, OUTPUT); pinMode(slave, OUTPUT); pinMode(miso, INPUT); pinMode(mosi, OUTPUT); Serial.begin(9600); } void loop (void) { zerowanie(); start_rejestr(); czytaj(); } // procedura zerowania void zerowanie() { //ssynchronizacja układów digitalWrite(clock, HIGH); digitalWrite(slave, LOW); digitalWrite(mosi, LOW); //delay(1); digitalWrite(slave, HIGH); digitalWrite(clock, LOW); delay(40); digitalWrite(slave, LOW); while((digitalRead(miso))!=LOW); //wysłanie polecenia zerowania do TRX shiftOut(mosi,clock,MSBFIRST,SRES); digitalWrite(slave, HIGH); while(digitalRead(miso)==LOW); while(digitalRead(miso)!=LOW); digitalWrite(slave, HIGH); } //zapisuje wartości do rejestru TRX void zapis( byte adres, byte wartosc){ digitalWrite(clock, LOW); digitalWrite(slave, LOW); while(digitalRead(miso)!=LOW); shiftOut(mosi, clock, MSBFIRST, adres);// podaje adres __asm__("nop\n\t"); shiftOut(mosi, clock, MSBFIRST, wartosc);// podaje wartość do zapisu pod wskazany adres digitalWrite(slave, HIGH); } //wprowadza wartosci startowe do rejestrów void start_rejestr() { zapis(IOCFG0,0x06); zapis(PKTCTRL0,0x05); zapis(FSCTRL1,0x06); zapis(FREQ2,0x21); zapis(FREQ1,0x62); zapis(FREQ0,0x76); zapis(MDMCFG4,0xF6); zapis(MDMCFG3,0x83); zapis(MDMCFG2,0x03); zapis(DEVIATN,0x15); zapis(MCSM0,0x18); zapis(FOCCFG,0x16); zapis(FSCAL3,0xE9); zapis(FSCAL2,0x2A); zapis(FSCAL1,0x00); zapis(FSCAL0,0x1F); zapis(TEST2,0x81); zapis(TEST1,0x35); zapis(TEST0,0x09); } void czytaj() { digitalWrite(clock, LOW); digitalWrite(slave, LOW); while(digitalRead(miso)!=LOW); shiftOut(mosi, clock, MSBFIRST, B10000010);// podaje adres __asm__("nop\n\t"); dana= shiftIn(miso, clock, MSBFIRST); digitalWrite(slave, HIGH); Serial.println(dana); } w tym miejscu kod utyka ponieważ niemożne się doczekać zmiany sygnału od TRX'a while(digitalRead(miso)==LOW); while(digitalRead(miso)!=LOW); W celach testowych chciałem odczytać wartość rejestru 000010, domyślnie ma on wartość 0x3F a próbuje mu wpisać 0x06 natomiast otrzymuje same 0 co pewnie wiąże się z tym że, układ nic nie wystawia na linie i po prostu sczytuje jeden ciągły stan jaki na niej jest. Widzę, że dużo ludzi ma problem z tym układem więc liczę na pomoc ludzi którzy już przez to przebrnęli i z góry za nią dziękuje.
×
×
  • Utwórz nowe...