www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik rfm12 mit interrupt


Autor: Sven Meyer (atommeyer)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Sven Meyer (atommeyer)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Sven Meyer (atommeyer)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Sven Meyer (atommeyer)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.