RFM12B-Ersatz

    This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

    • Ja, das meine ich z.B. $Baud 115200. Damit ich richtig verstanden werde: für mich heisst Polling der Controller frägt in einer Schleife das Interrup-Flag ab und "steht" solange still. Bei Interruptbetrieb arbeitet der Controller im Programm weiter und schreibt beim Interruptaufruf des UART ein Byte in den Sendepuffer.
      Ich bevorzuge Interruptbetrieb.
    • Wenn du sowas hast, dann ist das Interrupt-Betrieb (Senden).

      BASCOM Source Code: Senden im Interrupt-Betrieb

      1. ' Beispiel Interrupt-Betrieb
      2. $Regfile = "m8def.dat"
      3. $HWStack = 40
      4. $SWStack 40
      5. $Framesize = 40
      6. $Crystal = 3686400
      7. $Baud = 19600
      8. Config SerialOut = Buffered , Size = 64
      9. Enable Interrupts
      10. Do
      11. Print "Hallo"
      12. Waitms 500
      13. Loop
      Display All

      Wenn du die Zeile 11 auskommentierst, wird die Ausgabe in Zeile 17 Zeichen für Zeichen gepollt. D.h. die Zeile 19 wird erst abgearbeitet, wenn Zeile 17 vollständig abgearbeitet ist.

      Im Übrigen muss es nicht zwingend sein, dass im Pollbetrieb das Programm blockiert. Das hängt vom Code ab, wie man das löst.
      Man kann auch im Pollbetrieb Senden ohne das Programm zu blockieren.
    • Mitch64 wrote:

      die Zeile 19 wird erst abgearbeitet, wenn Zeile 17 vollständig abgearbeitet ist.
      Eigentlich schon, wenn das letzte Zeichen an den Ausgabebuffer übergeben wurde.
      Das Programm läuft dann schon in Zeile 19 und der HW-UART gibt das letzte Byte aus.


      jepe wrote:

      Im Gegensatz zum SPI, da steht auch Interrupt ON/OFF
      Der Interrupt bezieht sich auf den Empfang im Slave-Mode. Das kannst du beim UART-Empfang auch haben, schau mal bei On Urxc.
    • Hallo
      ich habe in der Zwischenzeit die Probleme gelöst. Anbei findet ihr je ein Programm für den RFM69CW als RFM12B-Ersatz als Empfänger resp. als Sender.
      Die Beispiele sind als reinen Ersatz für die Funktion des RFM12B gedacht; die zusätzlichen Möglichkeiten des RFM69 sind nicht ausgeschöpft. Es sind keine automatischen Abläufe vorhanden und die interne CRC-Berechnung wird auch nicht benutzt. Wenn jemand weiss wie die interne CRC-Berechnung des RFM69 in BASCOM nachprogrammiert werden kann kann auch die interne CRC-Berechnung in Zusammenarbeit mit dem RFM12B benützt werden. Wenn kein RFM12B mit dem RFM69 benutzt wird kann auch die RFM69-interne CRC-Berechnung benutzt werden aber ev. Vorsicht, siehe Beitrag von DG7GJ siehe hier
      Weiter wird auf RFM69-interne zeitliche Abläufe keine Rücksicht genommen; wer möchte kann ja die entsprechenden internen Register auslesen und auswerten. Ich vermute jedoch dass einige us Waitstates notfalls ebenfalls genügen.
      Noch ein Hinweis: immer aufpassen und eine Aktion mit dem RFM69 mit Chipselect abschliessen und mit der neuen Aktion neu selektieren; Chipselect nicht einfach aktiv lassen wenn interne Register gewechselt werden.
      Files