Forum: Mikrocontroller und Digitale Elektronik rfm12 mit interrupt


von Sven M. (atommeyer)


Angehängte Dateien:

Lesenswert?

moin leute,

ich versuche nun schon länger die rfm12 module interrupt gesteuert zum 
laufen zu bringen, allerdings erfolglos. Der sender sendet daten, und 
der empfänger empfängt irgendwas, denn es wird alle 500ms ein interrupt 
im empfänger ausgelöst. allerdings empfange ich keine daten, oder 
verarbeite diese nicht richtig. am oszi kann ich nur erkennen das dass 
erste zeichen ein BOOO ist, es folgen im abstand von 8ms noch zwei 
weitere.
vielleicht sieht ja jemand in meinem code ein (oder mehrere) fehler. der 
quellcode ist der von ulrich radig für "usb-funk mit interrupt" in einer 
leicht abgewandelten form. an PINC0 hängt ein schalter zum umschalten 
der betriebsart.

vielen dank

gruß
sven

von Sven M. (atommeyer)


Lesenswert?

bin noch mal mit dem oszi dran, und der sender funktioniert auf jeden 
fall. habe folgendes gemessen:

sender  (jeweils 790us pause zwischen den befehlen)
b8aa     präambel
b8aa
b8aa

b8d2     sync
b8d4

b802    size
b800    data
b8a3    data? (möglich!)
b8e9    crc
b8eb    crc

b8aa    "nachwort"
b8aa

soweit so gut, aber am empfänger kam folgendes an
b000
790us nichts
b000
790us nichts
8208    off
8,8us nichts
82c8 on
2us nichts
6541   was soll das sein? (eigentlich ca81)
2us nichts
ca83    fifo on
und nun gehts nach 500ms wieder von vorne los

irgendwiekomen zu wenig daten an...kennt jemand die lösung für mein 
problem?

von Sven M. (atommeyer)


Lesenswert?

ich habe die wesentlichen fehler gefunden.

FEHLER   6541   was soll das sein? (eigentlich ca81)
war doch ca81, habe mich auf dem oszi nur verzählt.

FEHLER   tmp = rf12_rxfinish(&emp_register);
die übergabe an die funktion ist falsch es muss heißen:
tmp = rf12_rxfinish(emp_register);

FEHLER   #define RF12_DataLength 5
das ist zu klein, es muss midestens um 3 größer sein als die datenlänge 
(wegen crc und größe)

aber warum das umschalten der betriebsarten mit dem schalter nicht 
funktioniert, habe ich nicht heraus bekommen.

von Sven M. (atommeyer)


Angehängte Dateien:

Lesenswert?

alles gelöst
musste beim umschalten nur noch folgende flags löschen:

RF12_status.Rx = 0;
RF12_status.Tx = 0;
RF12_status.New = 0;

haben den endgültigen code mal mit angehängt, falls es irgendjeman 
interessiert.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.