- Akku Tests und Balkonkraftwerk Speicher         
Seite 9 von 10 ErsteErste ... 78910 LetzteLetzte
Ergebnis 81 bis 90 von 95

Thema: RC5 Senden mit Attiny13

  1. #81
    Benutzer Stammmitglied
    Registriert seit
    22.11.2007
    Beiträge
    57
    Anzeige

    Praxistest und DIY Projekte
    Hi, Mic

    Naja, unscheinbarer 8-Pinner ist nicht ganz richtig!

    KnowHow des Programmierers ist wohl die erste Instanz!

    Mfg Harry

  2. #82
    Benutzer Stammmitglied
    Registriert seit
    22.11.2007
    Beiträge
    57
    Frohes Fest euch allen!

    Mfg
    Harry

  3. #83
    Neuer Benutzer Öfters hier
    Registriert seit
    05.07.2007
    Ort
    73105
    Alter
    53
    Beiträge
    8

    Sleep + PcInt0

    Hallo an alle.
    Hab mich an den Code von "Radbruch" gehängt, weil ich genau
    solche Tinys hier habe und nen kleienen Hand RC5 Sender bauen will.
    Hier sollte man natürlich auf Batteriesparen setzen.
    Also Tiny13 in Sleep legen.
    Mit den richtigen Registern angesteuert auch kein Problem.
    Mcucr = &B00110000 'Sleepmodus : 00110000 = Powerdown !
    Pcmsk = &B00011000
    Gimsk = &B00100000
    Gifr = &B00100000

    Aber : Wo in dem Code kann ich nen Interrupt auslösen lassen
    bzw. in den Code durch den Irq einspringen ? (PcInt0)
    Command ändern mit anderer Taste ist ja kein Hexenwerk.
    Nur das Schlafen legen.....
    Denn mit "Senden_aktiv = 0" wird der Träger munter
    weiter gesendet.
    Also WO unterbrechen, dass
    a: der String fertig gesendet wird, und
    b: der µC an der richtigen Stelle wieder aufwacht ?
    Eventuell Probleme mit Timer0 ? oder den ASM Code ?

    Gruß Pizzakurier

    PS: guten Rutsch an alle =D>

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

    Mit den Sleep-Modi der tinys habe ich noch keine Erfahrungen. Das Erste worüber ich jetzt im Datenblatt (Seite 27) gestolpert bin:

    If a reset occurs during sleep mode, the MCU wakes up and executes from the Reset Vector.
    Also einfach einen Reset auslösen und alles beginnt von vorne. Das würde wunderbar funktionieren, wenn du nur eine feste Codesequenz senden willst. Ein Taster an Pin1 gegen GND (eventuell noch ein PullUp gegen Vcc) würde den tiny aufwecken und den Code senden lassen.

    Nachdem der Code gesendet wurde (wir senden nur einmal) könnte man z.B. hier schlafen gehen:

    Code:
       ...
    'endlos wiederholen'
       $asm
          sleep
       $end Asm
       Goto Label
    ...
    (nur theoretisch, noch nicht getestet)

    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!

  5. #85
    Neuer Benutzer Öfters hier
    Registriert seit
    05.07.2007
    Ort
    73105
    Alter
    53
    Beiträge
    8
    Zitat Zitat von radbruch
    Hallo pizzakurier
    If a reset occurs during sleep mode, the MCU wakes up and executes from the Reset Vector.
    Also einfach einen Reset auslösen....
    (nur theoretisch, noch nicht getestet)

    mic
    Genau.
    Auf das bin ich noch garnicht gekommen.
    Ich kann einen Pinchange-Interrupt als Reset ausführen.
    Dann im Index oben die Taste auswählen, gewünschten Command setzen
    und wie Du sagtest unten wieder schlafen legen.
    Muss mal kucken ob ich nen PCint. als Reset beschalten kann....
    Muss ich sofort kucken und testen....

    Gruß Pizzakurier \/

    @EDIT

    Bei Einstellungen diesen Code einfügen :
    Code:
    Config Pinb.1 = Output                                      'ocr0b
    Config Pinb.2 = Output                                      'led
    Config Pinb.3 = Input                                       'taste down
    Config Pinb.4 = Input                                       'taste up
    Portb = &B00011000
    
    Enable Interrupts                                           'enable global ints
    On Pcint0 Int
    Mcucr = &B00110000                                          'Sleepmodus : 00110000 = Powerdown !
    Pcmsk = &B00011000
    Gimsk = &B00100000
    Gifr = &B00100000
    Direkt unter Label das hier :
    Code:
    Label:
    
    Enable Pcint0
    !sleep
    und zu guter letzt, das Int-Sub Programm:

    Code:
      $end Asm
    Return
    
    Int:                                                        'Wenn Interrupt ausgelöst wird, (Taste gedrückt)
    Disable Pcint0                                              'schalte INT0 ab
    Return                                                      'hoch zur Hauptschleife nach Befehl Sleep
    Damit wird der komplette RC5 gesendet und schläft dann ein.
    Bei mir liegen 2 Taster auf PB3 und PB4 mit jeweils Pullup aktiv.
    Jetzt muss ich nur noch die 2 Taster auswerten für verschiedene Befehle

    Guten Rutsch an alle BASCOMer (und der Rest natürlich auch )
    Pizzakurier

  6. #86
    Neuer Benutzer Öfters hier
    Registriert seit
    05.07.2007
    Ort
    73105
    Alter
    53
    Beiträge
    8

    Endergebnis

    So - Hier nun das Endergebnis

    Platine:
    Bild hier  

    gesamte Schaltung:
    Bild hier  

    und die Behausung:
    Bild hier  

    Layout:
    Bild hier  

    Bascom Projekt gibts hier :
    http://www.6c33.de/avr/handsender_la...ender_lang.bas

    und für Sprint-Layout 4 das Layout
    http://www.6c33.de/avr/handsender_la...ender_lang.lay
    (rechtsklich - Ziel speichern unter)

    Viel Spass damit.
    Schaltplan brauchts für das hier glaube ich nicht

    Viele Grüsse und ein gutes neues Jahr 2008

    Pizzakurier

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

    Sehr schön gelöst mit dem Sleep (das @Edit hast du ja recht heimlich angehängt). Verblüffend schlank umgesetzt und natürlich vor dem Senden eingebaut. Super. Und das es auch mit 3V funktioniert hatte ich schon vermutet. Mich würde noch der Wert für den verwendeten Vorwiderstand für die IR-LED interessieren.

    Nun haben wir die Basis für alle möglichen kleinen RC5-Anwendungen komplett. Man könnte die Sendecodes noch als #defines im Programmkopf unterbringen und das Ganze noch etwas ordentlicher dokumentieren. Aber das kann auch die Aufgabe für die nachfolgenden Anwender sein.

    Noch eine kleine Anregung: Wenn man die zu sendenden Codes im EEProm ablegt, kann man für alle, die nicht in Bascom programmieren, eine fertige Hex-Datei anbieten. Zusammen mit deinem Projekt wäre das ein wohl einen Eintrag im RN-Wiki wert. Das sollten aber die BASCOMer selbst machen, denn für mich war das nur ein "Gastspiel".

    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. #88
    Neuer Benutzer Öfters hier
    Registriert seit
    05.07.2007
    Ort
    73105
    Alter
    53
    Beiträge
    8
    Hallo Mic.

    Zitat Zitat von radbruch
    Hallo pizzakurier

    Sehr schön gelöst mit dem Sleep ...
    Man könnte die Sendecodes noch als #defines im Programmkopf unterbringen
    Noch eine kleine Anregung: Wenn man die zu sendenden Codes im EEProm ablegt, kann man für alle, die nicht in Bascom programmieren, eine fertige Hex-Datei anbieten. Zusammen mit deinem Projekt wäre das ein wohl einen Eintrag im RN-Wiki wert.

    mic
    Danke für die Blumen.
    Der Vorwiderstand ist für eine LD271 und hat bei mir 47 Ohm.
    Ein Wehrmutstropfen bleibt noch : Der RC5 code wird nur ein bis 2x gesendet und der Tiny schläft bei gedrückter Taste ein.
    Muss mal probieren, ob ein
    "if portb.1=1 and portb.2=1 and portb.4=1 then ..."
    vor dem schlafengehen das ganze eventuell das ganze dazu bewegt, dauerhaft bei gedrückter Taste zu senden.
    Dann wäre da noch das Toggle-Bit.
    Aber das kann man relativ einfach mit dem Befehl "toggle" und einer Bitmaske realisieren. Braucht man für "eigene" Projekte aber kaum )
    Interessant ist noch die RC5 Emppfangsgeschichte. Muss mal probieren, ob das mit "getrc5" in Basacom mit dem Tiny13 auch geht . ( braucht glaube ich nur Timer0) Er muss ja nicht demodulieren (macht der Tsop)
    Die Geschichte mit dem Eeprom hatte ich mir auch schon überlegt.
    Wäre Sinnvoll, wenn man z.B. noch ne UART hätte zum seriell ändern.
    Werd aber nu mal das Dauersenden bei Tastendruck probieren.
    Melde mich.
    Gruß Bernhard.

    PS: Hat´s in Stuggitown auch Schnee ?
    Heut N8 hats bei uns (Bad Boll) ca. 3cm (hoho) hingeworfen )

  9. #89
    Neuer Benutzer Öfters hier
    Registriert seit
    05.07.2007
    Ort
    73105
    Alter
    53
    Beiträge
    8

    Klasse RC5 Sender fertig

    Werd aber nu mal das Dauersenden bei Tastendruck probieren.
    Sodele.
    Dauersenden geht nu.
    der Code vor dem Sleep funktioniert.
    Code:
    Label:
    
    If Pinb.1 = 1 And Pinb.2 = 1 And Pinb.3 = 1 And Pinb.4 = 1 Then       'wenn keine Taste gedrückt...
    Enable Pcint0                                               'PcInt einschalten
    'gute Nacht :-))
    !sleep
    End If
    Somit sendet der Code dauerhaft, solange eine Taste gedrückt wird.
    Bascom-Code im vorigen Thread ist aktualisiert.
    Damit bin ich nun endgültig zufrieden.
    Der Code hat sehr viel Potential. Zub Bsp, wenn Timer1 durch andere Aufgaben in grösseren Prozessoren belegt ist etc.
    Bin auf Antworten gespannt.
    Ach ja : Warum kam der Code nicht ein JAhr früher ?
    Nun hab ich mich mit nem Tiny2313 rumgeschlagen, hatte das Basiswissen von jetzt über den Sleep Befehl noch nicht und liess den Tiny damals über ein Diodenmatrix auf INT0 bei Tastendruck aufwachen, weil er mit dem PCint nicht mehr aufwachen wollte. Heute weiss ich, dass die Deklaration PCMSK wichtig ist, damit er weiss, auf welche Pin´s er reagieren muss.
    Aber hat grad richtig Spass gemacht, meine kleine IR Fernbedienung zu bauen. Endlich haben meine kleinen Tiny13 ein ZuHause =D>

    VlG
    Bernhard

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

    Dass man den Code mehrfach senden sollte, hatte ich auch nicht bedacht.

    Vielleicht so? (nur theoretisch)
    Code:
    Label:
    
    ' vermutlich ist PinB.5 (!reset) high deshalb ist PINB ohne gedrückte Taste wohl 62'
    
    
    If Pinb = 62 Then                                           'wenn keine Taste gedrückt
       Enable Pcint0                                            'PcInt einschalten
       'gute Nacht :-)) mic: Ob das auch in einer "Condischen" funktioniert weiß ich nicht'
       !sleep
    Else
       Rc5_code.11 = Not Rc5_code.11                            'sonst toggle-Bit wechseln und weitersenden
    End If
    
      'Bitmaske auf erstes von 14 zu sendende Bits setzen'                            '
       Rc5_bitmaske = &B0010000000000000
    und die eigentliche Tastenabfrage in der Pcint0-ISR:
    Code:
    Int:                                                        'Wenn Interrupt ausgelöst wird, (irgendeine Taste gedrückt)
    Disable Pcint0                                              'schalte INT0 ab
    
    If Pinb.1 = 0 Then                                          'Taste grün
    Rc5_code = &B0011010010000001
    End If
    If Pinb.2 = 0 Then                                          'Taste rot
    Rc5_code = &B0011010010000000
    End If
    If Pinb.4 = 0 Then                                          'Taste blau
    Rc5_code = &B0011010010000010
    End If
    
    Return                                                      'hoch zur Hauptschleife nach Befehl Sleep
    Hab's nicht getestet, weil Aufbau eingemottet. Wir haben am Filderrand satte 1cm Neuschnee.

    Gruß

    mic

    [Edit]Ich bin einfach zu langsam. Schön dass es nun endgültig funktioniert
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

Seite 9 von 10 ErsteErste ... 78910 LetzteLetzte

Berechtigungen

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

Solar Speicher und Akkus Tests