RFM12B-Ersatz

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    Aufgrund technischer Veränderungen ist der Mailverkehr innerhalb des Forums (Private Nachrichten) nur noch eingeschränkt möglich. Die Einschränkung ist notwendig, um zusätzliche Betriebskosten für das Forum zu vermeiden. Näheres zu den Hintergründen im Thread "Aktuelles zum Forum".Wir bitten um Verständnis.

    Hinweis kann nach Kenntnisnahme deaktiviert werden!

    • Wenn du sowas hast, dann ist das Interrupt-Betrieb (Senden).

      BASCOM-Quellcode: 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
      Alles anzeigen

      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 schrieb:

      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 schrieb:

      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.
      Dateien
    • Hallo
      Leider hat sich beim Empfangsteil ein Systemfehler gezeigt. a_67_e210de67 Ich habe beim Empfang die Anzahl Datenbytes begrenzt. Wenn alles richtig läuft ist alles o.k.
      Wenn jedoch das Längenbyte ausserhalb der (begrenzten) Anzahl Empfangsbytes liegt wird nicht weiter empfangen. Grund ist der Interrupt "PayloadReady." Dieser wird erst zurückgesetzt wenn das FIFO leer ist. In meinem vorigen Empfangsprogramm habe ich jedoch nur den Chip-Select zurückgesetzt in der Annahme der Interrupt wird damit ebenfalls zurückgesetzt. Dem ist nicht so. Leider gibt es keinen Befehl das FIFO zurückzusetzen. Am einfachsten ist es in diesem Falle die Daten solange auszulesen bis das FIFO leer ist. Dann wird auch der Interrupt zurückgesetzt.
      Anbei die korrigierte Version meines Programms:
      Dateien