Guten Morgen zusammen,
ich habe ein Problem den RSSI Wert aus dem CC430 zu fischen.
Eigentlich kann das ja nicht sonderlich schwer sein leider habe ich in
den Datenblättern nichts handfestes gefunden.
Ich habe mal alles störende rausgeworfen, sodass nurnoch folgender code
stehenbleibt.
1 | //main.cpp
|
2 | if(packetReceived)
|
3 | {
|
4 | ReadBurstReg(RF_RXFIFORD, RxBuffer, sizeof RxBuffer);
|
5 | quali = ReadSingleReg(0x34);
|
6 | packetReceived = 0;
|
7 |
|
8 | }
|
Die Funktion ReadBurstReg ist aus der standart Funklib vom cc430 und
sieht so aus
1 | void ReadBurstReg(unsigned char addr, unsigned char *buffer, unsigned char count)
|
2 | {
|
3 | unsigned int i;
|
4 |
|
5 | while (!(RF1AIFCTL1 & RFINSTRIFG)); // Wait for INSTRIFG
|
6 | RF1AINSTR1B = (addr | RF_REGRD); // Send addr of first conf. reg. to be read
|
7 | // ... and the burst-register read instruction
|
8 | for (i = 0; i < (count-1); i++)
|
9 | {
|
10 | while (!(RFDOUTIFG&RF1AIFCTL1)); // Wait for the Radio Core to update the RF1ADOUTB reg
|
11 | buffer[i] = RF1ADOUT1B; // Read DOUT from Radio Core + clears RFDOUTIFG
|
12 | // Also initiates auo-read for next DOUT byte
|
13 | }
|
14 | buffer[count-1] = RF1ADOUT0B; // Store the last DOUT from Radio Core
|
15 |
|
16 | }
|
Ich möchte also einfach nur das Register "RSSI" bzw "0x34" auslesen.
Allerdings bleibt die variable quali unavaiable.
Die Registerzuordnung steht im Userguide auf Seite 591 ganz unten.
Ich habe auch schon ein timer zwischen dem Empfangen eines Packets und
dem Auslaesen des Registers eingebaut allerdings ohne Wirkung.
Der CC430 empfängt auch definitiv jedes mal ein korrektes Signal, das
sehe ich im RxBuffer
Wär super wenn mir jemand einen Tipp geben kann, ich bin mit meinem
Latein am Ende, wobei es bestimmt nur ein blöder Denkfehler ist.
Vielen Dank
Grüße