mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik RFM12 empfängt nur einmal und stürzt dann ab


Autor: Günther H. (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Forum,

nach einigem Testen und Ausprobieren habe ich den RFM12 nun in eine 
Schaltung eingelötet und musste leider fesstellen, dass er nur einmal 
empfängt und dann abstürzt. Aus diesem Grund habe ich die Schaltung in 
drei Teile modularisiert: den 7805, den AVR, und eben den RFM12. Doch 
leider empfängt der RFM12 wieder nur einmal und dann nichts. Es ist so 
schlimm, dass ich nicht mehr weiter weiß und deswegen hier um Rat frage. 
Hat jemand schon mal etwas ähnliches erlebt und weiß wie ich das Problem 
lösen kann?

Zur Problembeschreibung:
- Ich habe diesselbe Schaltung schon mit verschiedenen AVR und RFM12 
ausprobiert und immer dasselbe.
- Mit einem geregelten Netztteil (welches das 7805-Modul speist) tritt 
der Fehler nicht auf, und der RFM12 bleibt auch nach dem Empfangen 
empfangsbereit.
- Nachdem der RFM12 abgestürzt ist, hilft es nur den Strom komplett 
auszuschalten
- Nachdem der RFM12 abgestürzt ist, wird der 7805 heißer
- Aufgrund der Modularisierung konnte ich fesstellen, dass der Fehler 
irgendwo im AVR-Teil der Schaltung liegt, denn wenn ich das AVR-Modul 
auf einem Steckbrett aufbaue und mit dem 7805-Modul und dem RFM12 Modul 
verbinde, funktioniert es, und der RFM12 bleibt nach dem Empfangen 
empfangsbereit
- Um irgendwelchen Interferenzen vorzubeugen habe ich auch 
Stabilisierungskondensatoren an das AVR- und das RFM12 Modul angefügt, 
die aber das Problem nicht beheben.
- ich habe auch schon versucht nach dem Empfangen, den RFM12 neu zu 
initialisieren, aber das bringt auch nichts
- manchmal empfängt der RFM12 auch 2mal (sehr selten), und stürzt dann 
aber ab
- habe auch schon verschiedene Batterien (9V - 4,5V) ausprobiert - 
nichts hilft
- mein erster Versuch mit der Schaltung (nicht modularisiert) hatte 
einen komplett anderen Aufbau auf der Platine (ich vermute, dass 
einfaches Layout-Ändern nichts hilft)

Aus diesem Grund habe ich Bilder meines Schaltplans und der 
Lochrasterschemen meiner Modulteile in einem Zip-File beigefügt. 
Vielleicht kann hier jemand mal drüberschauen und mir sagen, woran es 
liegen könnte, denn wie gesagt, wenn ich das 7805-Modul und das RFM12 
Modul an das Steckbrett anschließe (mit dem AVR), dann läuft die 
Schaltung sehr robust (RFM12 stürzt nicht ab).
Die Schaltung ist so aufgebaut, dass wenn der RFM12 bereit ist, aber 
nichts empfängt periodisch eine blaue LED leuchtet:
Sub Rf12_ready                                              'ready Empfangen
  Reset Spi_cs
  ' In die Whileschleife wird nur gegangen, wenn RFM* nichts empfangen hat.
  Schleifencount = 0
  While Spi_sdo = 0
    Schleifencount = Schleifencount + 1
    If Schleifencount = 0 Then
      Toggle Portc.3                                        ' blaue Kontroll LED
    End If
    If Count >= Maxchar Then
      Countl = 0
      County = 0
      For Count = 1 To Maxchar
        Print Bin(rfdata(count))
        If Rfdata(count) = L Then
          Countl = Countl + 1
          Print "L"
        Elseif Rfdata(count) = Y Then
          County = County + 1
          Print "Y"
        End If
        Rfdata(count) = 0
      Next Count
      If Countl >= 3 And County >= 3 Then
         Print "PORTD.7 && PORTC.5 && PORTC.4"
         Portd.7 = 1

         Portc.5 = 1
         Wait 1
         Portc.5 = 0
         Waitms 500
         Portc.4 = 1
         Wait 1
         Portc.4 = 0
         Waitms 500

        Portd.7 = 0
      End If
      Countl = 0
      County = 0
      Count = 1
    End If
  Wend
End Sub

Ist Spi_sdo aber 1, d.h. der RFM12 ist abgestürzt geht der Code einen 
Schritt zurück und eine rote LED leuchtet periodisch:
Sub Rf12_rxdata(byval Maxchar As Byte)
  Temp = Rf12_trans(&H82c8)
  Temp = Rf12_trans(&Hca81)
  Temp = Rf12_trans(&Hca83)
  Count = 0
  Avrcount = 0
  Do
    If Avrcount = 0 Then                                     ' rote Kontroll LED
      Toggle Portb.0
    End If
    Rf12_ready
    Temp = Rf12_trans(&Hb000)
    Rfdata(count) = Temp
    Count = Count + 1
    Avrcount = Avrcount + 1
  Loop
  Temp = Rf12_trans(&H8208)
End Sub

Wenn das AVR-Modul am Steckbrett angeschlossen ist leuchtet nach dem 
Empfangen immer die blaue LED (sehr robust). Nutze ich dagegen mein 
eingelötetes AVR-Modul, dann "springt" der Code zurück und nur die rote 
LED leuchtet periodisch, weswegen ich annehme, dass der RFM12 abgestürzt 
ist, denn er geht nicht mehr in der Bereit-Modus.
Vielleicht könnte sich jemand im Forum mal mein Lochrasterplatinenschema 
anschauen, vielleicht ist dort etwas auffällig, was zu obiger 
Fehlerbeschreibung passt.

Vielen Dank im vorraus
Günther

Autor: Michael U. (amiga)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

jeweils 100n DICHT an den Anschlüssen VCC/GND und AVCC/AGND des Mega 
sind ohnehin Pflicht, wozu also zeit verschwenden mit / ohne 
Kondensatoren?

Meine RFN12 legen Wert darauf, daß dicht an den Spannungsanschlüssen ein 
Elko 4,7µ-10µ höngt, ein 100n reichte allein dort nicht.

Streifenraster ist mir allerdinsg etwas unsympathisch, die langen Bahnen 
und die großen Abstände bei Dir auch. Sind alles Kapazitäten, die durch 
Übersprechen und Verkopplungen für Störungen sorgen können.

Gruß aus Berlin
Michael

Autor: Günther H. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Michael,

als erstes habe ich jetzt im RFM12-Modul anstatt dem 100n einen 10u Elko 
eingelötet. Da trat das Problem immer noch auf. Dann habe ich einen 100n 
direkt zwischen AVCC/AGND hinzugefügt - und es läuft besser! Dankeschön!

Ich habe jetzt einige Langzeittests durchgeführt, und festgestellt, dass 
mit einer 9 Volt Blockbatterie diesselben Probleme auftreten. Mit 4,5 
Volt dagegen läuft es. Deswegen habe ich einen 100n direkt zwischen 
VCC/GND gelötet. Aber es läuft immer noch nicht mit 9 Volt. Nur der 7805 
wird extrem heiß.

Hast du noch eine Idee wie man den RFM12 mit 9 Volt betreiben könnte 
(das Schaltungslayout und Gehäuse sind für eine 9V Blockbatterie 
ausgelegt).

MfG
Günther

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.