- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 10 von 10

Thema: Rc5-Sender/-Empfänger in Bascom programmieren

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    03.03.2014
    Beiträge
    13

    Rc5-Sender/-Empfänger in Bascom programmieren

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Moin zusammen!

    Ich habe folgendes Problem:

    Wenn ich über meinen IR-Sender ein Rc5 Signal an meinen IR-Empfänger (Schaltpläne siehe Anhang) schicken, erkennt der Empfänger dieses Signal nur sehr selten und auch mit keiner Regelmäßigkeit. Das Bedeutet: der Empfänger zeigt mit verschiedenen LEDs an, ob er auf ein Rc5 Signal wartet, eins empfangen hat, das "richtige" Signal empfangen hat oder kein Signal empfangen hat. Mit dem Sender möchte ich später insgesamt mindestens 4 verschiedene Signale senden und mit dem Empfänger diese Signal eben auswerten/empfangen und etwas steuern.

    Hier jetzt die Schaltpläne und Programme zum Sender/Empfänger:
    IR-Sender:
    Klicke auf die Grafik für eine größere Ansicht

Name:	IR_Sender.png
Hits:	41
Größe:	21,8 KB
ID:	27942
    Code:
    Config Portd.0 = Output                                     'Konfiguration der
    Config Pinc.0 = Input                                       'Out- und
    Config Pinc.1 = Input                                       'der Inputports
    Config Pinc.2 = Input                                       'Dito
    Config Pinc.3 = Input                                       'Dito
    Portd.0 = 0                                                 'PortD.0 Ausschalten
    
    Portc.0 = 1                                                 'Pullups Einschalten
    Portc.1 = 1                                                 'Dito
    Portc.2 = 1                                                 'Dito
    Portc.3 = 1                                                 'Dito
    
    Dim Togbit1 As Byte                                         'Dimensioniern der
    Dim Togbit2 As Byte                                         'Variablen
    Dim Command As Byte                                         'Dito
    Dim Address As Byte                                         'Dito
    Dim I As Long                                               'dito
    
    I = 0                                                       'Setzen der Variblen
    Command = 16                                                'Dito
    Togbit1 = 0                                                 'Dito
    Togbit2 = 32                                                'Dito
    Address = 17                                                'dito
    
    Main:                                                       'Hauptprogramm
    Do
    
    If Pinc.0 = 0 Then
       Portd = 1
       Waitms 50
       For I = 1 To 10                                          'Sende den Code I-mal
       Rc5send Togbit1 , Address , Command                      'Senden des
       Rc5send Togbit2 , Address , Command                      'Rc5-Codes
       Waitus 100
       Next I
       Portd = 0
    Else
       Portd = 0
    End If
    
    Loop
    End
    IR-Empfänger:
    Klicke auf die Grafik für eine größere Ansicht

Name:	IR_Empfänger.png
Hits:	31
Größe:	36,9 KB
ID:	27941
    Code:
    Config Rc5 = Pinb.1                                         'Rc5 konfigurieren
    Enable Interrupts                                           'Interrupts erlauben
    
    Config Portd = Output                                       'Konfiguration der
    Config Pinc.0 = Input                                       'Out- und
    Config Pinc.1 = Input                                       'der Inputports
    Config Pinc.2 = Input                                       'Dito
    Config Pinc.3 = Input                                       'Dito
    Config Pinc.4 = Input                                       'Dito
    Config Pinc.5 = Input                                       'Dito
    Portd = 0                                                   'Ausschalten von
                                                                'PortD
    
    Dim Address As Byte                                         'Variablen
    Dim Command As Byte                                         'dimensionieren
    Dim I As Long                                               'Dito
    I = 0                                                       'Variablen setzen
    Address = 0                                                 'Dito
    Command = 0                                                 'Dito
    
    Main:                                                       'Hauptprogramm
    Do
    Portd = 1
    For I = 1 To 100
    Getrc5(address , Command)                                   'Auf Rc5 Signal warten
    Next I
    If Address < 255 Then
       Command = Command And &B10111111                         'Lösche Toggle-Bit
       Portd = 2
       Waitms 100
       If Address = 17 And Command = 16 Then
          Portd = 4
          Waitms 100
       Else
          Portd = 2
          Waitms 100
       End If
       'Waitms 10
    Else
       Portd = 8
       Waitms 100
    End If
    
    Loop
    End

    Vielen Dank schon jetzt für eure Hilfe!

    LG
    Jonas

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von Searcher
    Registriert seit
    07.06.2009
    Ort
    NRW
    Beiträge
    1.703
    Blog-Einträge
    133
    Hallo

    Zitat Zitat von derfagottist Beitrag anzeigen
    Code:
    Config Rc5 = Pinb.1                                         'Rc5 konfigurieren
    Enable Interrupts                                           'Interrupts erlauben
    
    Config Portd = Output                                       'Konfiguration der
    Config Pinc.0 = Input                                       'Out- und
    Config Pinc.1 = Input                                       'der Inputports
    Config Pinc.2 = Input                                       'Dito
    Config Pinc.3 = Input                                       'Dito
    Config Pinc.4 = Input                                       'Dito
    Config Pinc.5 = Input                                       'Dito
    Portd = 0                                                   'Ausschalten von
                                                                'PortD
    
    Dim Address As Byte                                         'Variablen
    Dim Command As Byte                                         'dimensionieren
    Dim I As Long                                               'Dito
    I = 0                                                       'Variablen setzen
    Address = 0                                                 'Dito
    Command = 0                                                 'Dito
    
    Main:                                                       'Hauptprogramm
    Do
    Portd = 1
    For I = 1 To 100
    Getrc5(address , Command)                                   'Auf Rc5 Signal warten
    Next I
    If Address < 255 Then
       Command = Command And &B10111111                         'Lösche Toggle-Bit
       Portd = 2
       Waitms 100
       If Address = 17 And Command = 16 Then
          Portd = 4
          Waitms 100
       Else
          Portd = 2
          Waitms 100
       End If
       'Waitms 10
    Else
       Portd = 8
       Waitms 100
    End If
    
    Loop
    End
    Denke, daß Du das Rote im Empfängerprogramm ersatzlos streichen kannst. Die do-loop sorgt ja dafür, daß getrc5 immer wieder ausgeführt wird. Wird zu Beginn der for-next Schleife ein RC5 Rahmen erkannt, wird address und command entsprchend belegt. Die Schleife wird aber wieder durchlaufen und liegt kein RC5-Rahmen an wird address und command wieder mit 255 überschrieben und die folgende Auswertung nach der for-next "sieht" keinen Empfang.

    Gruß
    Searcher
    Hoffentlich liegt das Ziel auch am Weg
    ..................................................................Der Weg zu einigen meiner Konstruktionen

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    03.03.2014
    Beiträge
    13
    Okay, ich werde das nochmal ausprobieren. Ich hatte allerdings das auch schon ohne diese Schleife ausprobiert und auch viele andere Varianten...

    Aber trotzdem danke für deine schnelle Antwort

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von Searcher
    Registriert seit
    07.06.2009
    Ort
    NRW
    Beiträge
    1.703
    Blog-Einträge
    133
    Oh, noch was:
    Das
    Command = Command And &B10111111
    sollte doch zum Togglebit löschen so sein
    "Command = Command And &B01111111"
    zumindest der Bascom Hilfe nach.

    Gruß
    Searcher
    Hoffentlich liegt das Ziel auch am Weg
    ..................................................................Der Weg zu einigen meiner Konstruktionen

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    03.03.2014
    Beiträge
    13
    Zitat Zitat von Searcher Beitrag anzeigen
    Oh, noch was:
    Das

    sollte doch zum Togglebit löschen so sein
    "Command = Command And &B01111111"
    zumindest der Bascom Hilfe nach.

    Gruß
    Searcher
    Ja das soll zum löschen des Togglebits sein. Ich habe selbst leider keine Ahnung wofür das genau sein soll aber in der "Anleitung" zu diesen IR-Sender/Empfänge wars halt dabei...

  6. #6
    Erfahrener Benutzer Robotik Einstein Avatar von Searcher
    Registriert seit
    07.06.2009
    Ort
    NRW
    Beiträge
    1.703
    Blog-Einträge
    133
    Zitat Zitat von derfagottist Beitrag anzeigen
    Ja das soll zum löschen des Togglebits sein.
    Ja, das funktioniert auch. Hab selbst den Teil aus der Bascom Hilfe abgeschrieben und hat auch immer funktioniert. In Deinem Programm kann es durchaus diesen sporadischen Fehlereffekt haben. Nimm das Bitpattern, wie es in der Bascom Hilfe unter GETRC5 zu finden ist.

    Gruß
    Searcher
    Hoffentlich liegt das Ziel auch am Weg
    ..................................................................Der Weg zu einigen meiner Konstruktionen

  7. #7
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    61
    Beiträge
    5.799
    Blog-Einträge
    8
    Hallo

    Hast du das abgeschnitten oder fehlen die Angaben zum Kontroller und der eingestellten Taktfrequenz in deinen Programmen?

    Gruß

    mic
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  8. #8
    Neuer Benutzer Öfters hier
    Registriert seit
    03.03.2014
    Beiträge
    13
    Zitat Zitat von radbruch Beitrag anzeigen
    Hallo

    Hast du das abgeschnitten oder fehlen die Angaben zum Kontroller und der eingestellten Taktfrequenz in deinen Programmen?

    Gruß

    mic
    Ja, die habe ich abgeschnitten:

    Controller: Atmega8
    Takt: 3,579545Mhz

    LG
    Jonas

    - - - Aktualisiert - - -

    Hey,

    also, ich habe das ganze nochmal auprobiert, mit "richtigem" löschen des Togglebits und ohne der Schleife und, siehe da, es funktioniert! Wahrscheinlich hats also am Löschen des Togglebits gelegen.

    Aber jetzt funktionierts ja zum Glück! Vielen Dank nochmal.

    LG
    Jonas

    PS: Vielleicht stelle ich dann ja mal mein fertiges Projekt vor. Wer weiß, wer weiß...

  9. #9
    Erfahrener Benutzer Robotik Einstein Avatar von Searcher
    Registriert seit
    07.06.2009
    Ort
    NRW
    Beiträge
    1.703
    Blog-Einträge
    133
    Zitat Zitat von derfagottist Beitrag anzeigen
    also, ich habe das ganze nochmal auprobiert, mit "richtigem" löschen des Togglebits und ohne der Schleife und, siehe da, es funktioniert! Wahrscheinlich hats also am Löschen des Togglebits gelegen.
    *Daumen hoch* und wo es dran gelegen hat kannst Du ja ausprobieren indem Du den Code schrittweise wieder zurück änderst. Ich vermute daß beides einen Einfluß hatte.

    Vielleicht noch ein Tip aufgrund radbruchs Nachfrage: Im Bascom Programm immer den kompletten Header mit regfile, crystal, hwstack, swstack, framesize aufnehmen und auch posten, da sich auch dort Fehler verstecken können bzw wenn ein Eintrag nicht vorhanden ist, die Defaulteinstellungen von Bascom einen Bug beinhalten können.

    PS: Vielleicht stelle ich dann ja mal mein fertiges Projekt vor. Wer weiß, wer weiß...
    Das wär nett. Ich sehe mir gerne Projekte an, wenn möglich mit Bild oder sogar mit Video.

    Gruß
    Searcher
    Hoffentlich liegt das Ziel auch am Weg
    ..................................................................Der Weg zu einigen meiner Konstruktionen

  10. #10
    Neuer Benutzer Öfters hier
    Registriert seit
    03.03.2014
    Beiträge
    13
    Zitat Zitat von Searcher Beitrag anzeigen
    *Daumen hoch* und wo es dran gelegen hat kannst Du ja ausprobieren indem Du den Code schrittweise wieder zurück änderst. Ich vermute daß beides einen Einfluß hatte.

    Vielleicht noch ein Tip aufgrund radbruchs Nachfrage: Im Bascom Programm immer den kompletten Header mit regfile, crystal, hwstack, swstack, framesize aufnehmen und auch posten, da sich auch dort Fehler verstecken können bzw wenn ein Eintrag nicht vorhanden ist, die Defaulteinstellungen von Bascom einen Bug beinhalten können.


    Das wär nett. Ich sehe mir gerne Projekte an, wenn möglich mit Bild oder sogar mit Video.

    Gruß
    Searcher
    Vielen Dank für deinen Tipp. Aber bisher hatte ich darin noch keine Probleme, aber in Zukunft werde ich dann den kompletten Code posten.

    Und wenn ich das Projekt dann vorstelle, dann natürlich auch mit Bildern, aber im Moment hab ich halt relativ viel Stress in der Schule und so. Aber mal gucken was sich machen lässt...

    LG
    Jonas

Ähnliche Themen

  1. Problem mit RC5 Sender in Bascom
    Von D35troy3r im Forum Software, Algorithmen und KI
    Antworten: 6
    Letzter Beitrag: 17.06.2012, 19:02
  2. kleiner RC5 empfänger mit attiny13L und Bascom
    Von rocketman123 im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 6
    Letzter Beitrag: 26.11.2008, 18:50
  3. RC5 Sender und Empfänger am ATMega32 wie bekommt man beides?
    Von Steffen44 im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 22
    Letzter Beitrag: 03.07.2007, 08:27
  4. RC5 Empfänger mit ATMega2560 und Bascom 1.11.8.7 die Lösung
    Von Steffen44 im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 0
    Letzter Beitrag: 25.06.2007, 19:01
  5. RC5 Sender bauen?
    Von michaelF im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 18
    Letzter Beitrag: 09.08.2004, 14:41

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Solar Speicher und Akkus Tests