- Reichelt Elektronik    Werbung      
Ergebnis 1 bis 10 von 11

Thema: RC5 Fernbedinung ATtiny2313 und powerdown Mode Proplem

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Benutzer Stammmitglied Avatar von Der bastler
    Registriert seit
    09.05.2011
    Ort
    Langenhorn, Hamburg, Germany, Germany
    Beiträge
    72
    Hallo Searcher und Forum
    Also die RC5 Fernbedinung soll ja mal in ein handgeäuse verbaut werden, nur so mal neben bei

    Zur Funktion der Fernbedinung:
    -----------------------------------------------------------------------------
    Wenn ich TASTE1 Drücke soll das programm code senden in POWERDOWN gehen.
    beim erneuten drücken der TASTE1 code senden und un POWERDOWN gehen
    -----------------------------------------------------------------------------
    Wenn ich TASTE2 Drücke soll das programm code senden in POWERDOWN gehen.
    beim erneuten drücken der TASTE2 code senden und un POWERDOWN gehen
    -----------------------------------------------------------------------------
    Wenn ich TASTE3 Drücke soll das programm code senden in POWERDOWN gehen.
    beim erneuten drücken der TASTE3 code senden und un POWERDOWN gehen
    -----------------------------------------------------------------------------

    so hätte ich das gerne, aber leider geht das nicht
    hier der code den ich geändert habe:
    Code:
    $regfile = "attiny2313.dat"
    $crystal = 8000000
    $hwstack = 40
    $swstack = 16
    $framesize = 32
    
    'Ddrd = &B00000010
    
    Config Portd.6 = Output
    Led_gelb Alias Portd.6   'LED GELB - Ob Programm Arbeitet ( Nur zum TESTEN)
    
    Config Portd.2 = Input
    Portd.2 = 1
    Config Portd.3 = Input
    Portd.3 = 1
    Config Portd.4 = Input
    Portd.4 = 1
    Config Portd.5 = Input
    Portd.5 = 1
    Config Portd.5 = Input
    Portd.6 = 1
    
    Config Int0 = Low Level
    Enable Interrupts
    On Int0 Isr_int0
    Disable Int0
    
    Dim Geraet As Byte , Kommando As Byte
    Dim Togglebit As Byte
    Togglebit = 0
    
    'NEU
    Led_gelb = 0
    'NEU
    
    Do
      If Pind.3 = 0 Then
        Led_gelb = 1
        Geraet = 0           'Blinker / Lauflicht / Radio
        Kommando = 1         'Was wird geschaltet
        Rc5send Togglebit , Geraet , Kommando
        'NEU
        Disable Int0
        'NEU
        Waitms 50
        Gosub Code
      End If
      If Pind.4 = 0 Then
        Led_gelb = 1
        Geraet = 0           'Blinker / Lauflicht / Radio
        Kommando = 2         'Was wird geschaltet
        Rc5send Togglebit , Geraet , Kommando
        'NEU
        Disable Int0
        'NEU
        Waitms 50
        Gosub Code
      End If
      If Pind.5 = 0 Then
        Geraet = 0           'Blinker / Lauflicht / Radio
        Kommando = 4         'Was wird geschaltet
        Rc5send Togglebit , Geraet , Kommando
        'NEU
        Disable Int0
        'NEU
        Waitms 50
        Gosub Code
      End If
      Loop
    End
    
    Code:
    'Togglebit = 0                         'AUS
    'Geraet = 0                            'AUS
    'Rc5send Togglebit , Geraet , Kommando 'AUS
    Waitms 80
    Enable Int0
    Led_gelb = 0
    Powerdown
    Return
    End
    
    Isr_int0:
    'Disable Int0    'AUS
    Return
    wenn ich den code zum chip sende alles ok soweit und dann auf die TASTE1 Drücke wird nicht mal der code gesendet und (led_gelb) geht an und bleibt an nichts geht mehr, auser neu programieren....
    noch was zur schaltung, der abblokkodensator ist im IC-Halterrung verbaut und der kondensator ja der fehlt wahr ja auf schnell gemacht.....

    Soweit erst mal danke und Lieben Gruß
    T. Sch.

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von Searcher
    Registriert seit
    07.06.2009
    Ort
    NRW
    Beiträge
    1.720
    Hallo Bastler,
    ich habe im Code ein paar Stellen farbig markiert:
    Zitat Zitat von Der bastler Beitrag anzeigen
    Code:
    $regfile = "attiny2313.dat"
    $crystal = 8000000
    $hwstack = 40
    $swstack = 16
    $framesize = 32
    
     'Ddrd = &B00000010  'Würde PORTD.1 auf Output schalten. Ich würde die komplette Zeile rauslöschen
    
    Config Portd.6 = Output
    Led_gelb Alias Portd.6   'LED GELB - Ob Programm Arbeitet ( Nur zum TESTEN)
    
    Portd.1 = 1   'Pullup auf portd.1, Portds sind ist defaultmäßig nach reset sowieso auf Input.
    Config Portd.2 = Input
    Portd.2 = 1
    Config Portd.3 = Input
    Portd.3 = 1
    Config Portd.4 = Input
    Portd.4 = 1
    Config Portd.5 = Input
    Portd.5 = 1
    Config Portd.5 = Input  'ist doppelt und kann entfallen
    Portd.6 = 1  'Einschalten von LED_gelb
    ...dann auf die TASTE1 Drücke wird nicht mal der code gesendet und (led_gelb) geht an und bleibt an nichts geht mehr, auser neu programieren....
    Wo ist TASTE1 angeschlossen? Bei PORTD.1 fehlt Aktivierung von Pullup (oben in grün hinzugefügt)
    Portd.5 ist sowieso Input und wird darüber hinaus auch zwei Mal als Input konfiguriert.

    Fuses richtig gesetzt? Insbesondere CKDIV8 für 8MHz Systemtakt.

    Das DISABLE INT0 würde ich direkt nach dem IF PIN Befehl einfügen. Das Verhalten kenne ich auch nicht genau und kann ich im Augenblick auch nicht testen.

    Sonst fällt mir im Augenblick nichts Neues ein Bild  

    Gruß
    Searcher
    Geändert von Searcher (23.09.2017 um 13:51 Uhr)
    Hoffentlich liegt das Ziel auch am Weg
    ..................................................................Der Weg zu einigen meiner Konstruktionen

  3. #3
    Benutzer Stammmitglied Avatar von Der bastler
    Registriert seit
    09.05.2011
    Ort
    Langenhorn, Hamburg, Germany, Germany
    Beiträge
    72
    PonyPro2000 Fuse einstellung
    Bild  

    Nachreichen...

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von Searcher
    Registriert seit
    07.06.2009
    Ort
    NRW
    Beiträge
    1.720
    Zitat Zitat von Der bastler Beitrag anzeigen
    PonyPro2000 Fuse einstellung
    Die Fuses sind richtig.
    Benutzt Du nicht die Bascom IDE zum Fuses setzen/lesen?


    Hast Du mal ausprobiert, den Interrupt sofort nach Abfrage der Tasten zu disablen, so wie unten angedeutet?

    Durch den Tastendruck wird über den INT0 der µC aus dem powerdown herausgeholt.
    Wird der Interrupt nicht sofort disabled, könnte durch den Tastendruck, den man ja nicht innerhalb von µs oder wenigen Millisekunden lösen kann, ein weiterer bzw viele weitere INT0 erkannt werden. Die ISR würde andauernd angesprungen werden, führt zwar keine Kommados aus aber nimmt Rechenzeit weg. Weitere Konsequenzen traue ich mir nicht auszumahlen ... Bild  
    Möglicherweise müßte man das Konzept des Programms überarbeiten oder auch mal testen ob man ohne ISR auskommt.
    Code:
    If Pind.3 = 0 Then
        Disable Int0
        Led_gelb = 1
        Geraet = 0           'Blinker / Lauflicht / Radio
        Kommando = 1         'Was wird geschaltet
        Rc5send Togglebit , Geraet , Kommando
       'NEU
        ' Disable Int0
        'NEU
        Waitms 50
        Gosub Code
    End If
    Gruß
    Searcher
    Hoffentlich liegt das Ziel auch am Weg
    ..................................................................Der Weg zu einigen meiner Konstruktionen

Ähnliche Themen

  1. [ERLEDIGT] Proplem mit LED Matrix Display
    Von Jackeder im Forum Elektronik
    Antworten: 2
    Letzter Beitrag: 31.01.2016, 16:01
  2. ATtiny2313 in den Sleep-Mode versetzen?
    Von ledi im Forum C - Programmierung (GCC u.a.)
    Antworten: 1
    Letzter Beitrag: 01.06.2010, 11:30
  3. ATtiny2313 mit PWM mode 14 klappt nicht in der Simulation
    Von newbee08 im Forum C - Programmierung (GCC u.a.)
    Antworten: 1
    Letzter Beitrag: 23.09.2008, 10:51
  4. Vista Proplem
    Von InFaIN im Forum Asuro
    Antworten: 21
    Letzter Beitrag: 23.06.2008, 23:47
  5. fernbedinung mit pic
    Von nourdine im Forum PIC Controller
    Antworten: 0
    Letzter Beitrag: 14.05.2007, 08:21

Berechtigungen

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

    Werbung      Labornetzteil AliExpress