- Labornetzteil AliExpress         
Seite 7 von 10 ErsteErste ... 56789 ... LetzteLetzte
Ergebnis 61 bis 70 von 95

Thema: RC5 Senden mit Attiny13

  1. #61
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    26.05.2007
    Beiträge
    594
    Anzeige

    LiFePo4 Akku selber bauen - Video
    Vollversion bringt doch nur was, wenn der Code > 4kB ist...
    Programmierung und Fuses kann man aber auch super mit PonyProg setzen, oder hab ich was verpasst?

  2. #62
    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 stefan_Z

    oder hab ich was verpasst?
    Nein, ich denke nicht, dass du was verpasst hast. Manche Programmierer funktionieren eben nicht mit jeder Software. Ich kenne Harrys Programmer leider nicht, dass muss er sich letztlich selbst erarbeiten wie das mit seinem Programmer funktioniert.

    PonyProg funktionierte mit meinem Programmer auch nicht, die Lösung fand ich dann schließlich irgendwo in einem Forum und seitdem funzt es bei mir.

    Eine Vollversion von Bascom dürfte auch meiner Meinung nach nicht die Lösung bringen und ist für den tiny13 auch sicher nicht nötig.

    Übrigens bin ich dem eigentlichen RC5-Problem vermutlich schon wieder etwas näher gekommen. Ich habe nun einen 50 Ohm Vorwiderstand und kann aus ca. 1m Entfernung senden. Allerdings akzeptiert mein RP6 nur bestimmte Addressen/Kommando-Kombinationen. Es sind 5, 9, 21 und 27. Mit einem geänderten Testprogramm das feste Codes sendet, erhalte ich auch regelmässigen Empfang, aber eben immer noch nicht das erwartete und auch nicht mit den vermuteten Timings. Ich vermute, der RP6 macht eine Plausibilitätsprüfung und filtert ungültige Codes raus. Das würde allerdings bedeuten, dass meine zusammengesetzten Bitfolgen für den RC5-Code nicht stimmen. Ich muss mir wohl die msb-lsb-Geschichte nochmal genauer anschauen. Das Programm sieht nun so aus
    Code:
    'RC5-Code senden mit ATtiny13                                         16.12.07 mic'
    
    'Achtung! Das ist ein eher theoretischer Code den ich noch nicht getestet habe!'
    'Es sollten im 0,2 Sekundentakt die Werte 0 bis 31 als Addresse und Kommando'
    'mit Togglebit=0 gesendet werden. Ob das so funktioniert muss ich noch testen'
    
    'Die IR-LED wird mit Widerstand(!) zwischen Pin5(PB0, OC0A) und GND angeschlossen  '
    'Trägerfrequenz = 36kHz(Puls/Pause 1:1), Bitlänge = Trägerfrequenz/64'
    'Code basierden auf den Angaben von: http://www.sbprojects.com/knowledge/ir/rc5.htm'
    
    'Einstellungen --------------------------------------------------------------------'
    
    'Wir verwenden einen tiny13'
    $regfile = "ATtiny13.dat"
    'der mit internen 9,6MHZ getaktet wird (Fuse Takt/8 nicht gesetzt!)'
    $crystal = 9600000
    'Weitere, von mir noch nicht geprüfte Compileranweisungen:'
    $hwstack = 32
    $swstack = 8
    
    'Hier musste ich von 16 auf 8 ändern,ich habe keine Ahnung, was das bewirkt'
    'Mit 16 erhalte ich eine Fehlermeldung:'
    'Out of SRAM-Space bei Dim Rc5_bit_gesetzt As Word'
    $framesize = 8
    
    'Dims und Declears ----------------------------------------------------------------'
    
    'Der zu sendende RC5-Code als 16bit-Wert'
    Dim Rc5_code As Word
    
    'Bitmaske für das zu sendende Bit aus RC-Code'
    Dim Rc5_bitmaske As Word
    
    'Teiler des Trägertaktes und Kennung des Halbbits'
    '128-65 bedeutet erstes Manchester-Halbbit, 64-1 bedeutet zweites Manchester-Halbbit'
    '0 bedeutet komplettes Bit gesendet!'
    Dim Rc5_halbbit As Byte
    
    'die zu sendende RC5-Adresse (5 Bits, 0-31)'
    Dim Rc5_adresse As Byte
    
    'das zu sendende RC5-Kommando (6 Bits, 0-63)'
    Dim Rc5_kommando As Byte
    
    'größer 0 bedeutet aktuelles zu sendende Bit ist gesetzt'
    Dim Rc5_bit_gesetzt As Word
    
    'Zähler für das Demo'
    Dim Count As Byte
    
    'Hilfsvariable'
    Dim Temp As Byte
    
    'Startblinken'
    Config Portb.0 = Output
    Portb.0 = 1
    Wait 1
    Portb.0 = 0
    Wait 1
    
    'Die Sendesubroutine deklarieren'
    Declare Sub Rc5_send(byval Address As Byte , Byval Command As Byte , Byval Tog As Byte)
    
    'Initialisierung ------------------------------------------------------------------'
    
    'Timer0 auf CTC-Mode mit OC0A-Toggeln und OCR0A löschen nach Match bei perscale=1'
    Config Timer0 = Timer , Compare A = Toggle , Prescale = 1 , Clear Timer = 1
    
    'MatchCompareRegister setzen: 133 für 36kHz oder 126 für 38kHz'
    Ocr0a = 255
    
    'ISR für Timer0 bei Compare0A-Match definieren'
    On Oc0a Rc5_isr Nosave
    
    'MatchCompare Interrupt erlauben'
    Enable Oc0a
    
    'Interrupts generell erlauben'
    Enable Interrupts
    
    'Es wird noch wird nicht gesendet'
    Rc5_bitmaske = 0
    
    'Hauptprogramm --------------------------------------------------------------'
    
    Do
       Call Rc5_send(0 , 31 , 0)
       Waitms 200
       Call Rc5_send(1 , 15 , 0)
       Waitms 200
       Call Rc5_send(2 , 7 , 0)
       Waitms 200
       Call Rc5_send(4 , 3 , 0)
       Waitms 200
       Call Rc5_send(8 , 1 , 0)
       Waitms 200
       Call Rc5_send(16 , 0 , 0)
       Waitms 200
    Loop
    
    'Sub und ISR ---------------------------------------------------------------------'
    
    'die eigentliche Sendefunktion'
    Sub Rc5_send(address As Byte , Command As Byte , Tog As Bit)
       '14 bits RC5-Code zusammensetzen in der 16 Bit Variablen Rc5_code'
       'Bitnummer: 1111110000000000'
       '           5432109876543210'
       'Funktion:  --sstaaaaacccccc'
    
       '2 Startbits setzen'
       Rc5_code = &B11
    
       'Bitmuster nach links weiterschieben und Platz für die nächsten Bits schaffen'
       Shift Rc5_code , Left , 1
    
       'das Toggle-Bit setzen wenn gewünscht'
       If Tog <> 0 Then
          Set Rc5_code.0
       End If
    
       'address hat 5 gültige Bits'
       Shift Rc5_code , Left , 5
    
       'überflüssige Addressbits ausblenden'
       Address = Address And &B11111
    
       'und Address-Bits in Rc5_code setzen'
       Rc5_code = Rc5_code Or Address
    
       'command hat 6 gültige Bits'
       Shift Rc5_code , Left , 6
    
       'überflüssige Commandbits ausblenden'
       Command = Command And &B111111
    
       'und Kommando-Bits in Rc5_code setzen'
       Rc5_code = Rc5_code Or Command
    
       'Bitmaske auf bit13 (erstes von 14 RC5-Bits) setzen
       'Bitnummer: 1111110000000000'
       '           5432109876543210'
       'Funktion:  --sstaaaaacccccc'
       'Maske:     0010000000000000'
       Rc5_bitmaske = &B0010000000000000
    
       'Start der Übertragung mit dem ersten Halbbit'
       Rc5_halbbit = 64
    
       'Ab hier übernimmt die ISR die Kontrolle. Wir warten, bis alle Bits gesendet sind'
       Do
          nop
       Loop Until Rc5_bitmaske = 0
    
       'LED ausschalten'
       Config Portb.0 = Input
    
       'Fertig'
    End Sub
    
    
    'Ab hier folgt die ISR'
    Rc5_isr:
       'Code aus der Basom-Hilfe on interrupt isr nosave'
       $asm
          PUSH R24 ; since we are going to use R24 we better save it
          IN r24, SREG ; get content of SREG into R24
          PUSH R24 ; we can save a register
       $end Asm
    
       'Wenn wir senden wollen'
       If Rc5_bitmaske > 0 Then
    
          'ermitteln wir den Status des aktuellen Bits'
          Rc5_bit_gesetzt = Rc5_code And Rc5_bitmaske
    
          'und wenn wir beim Start des ersten Halbbits sind,'
          If Rc5_halbbit = 64 Then
    
             'geben wir das erste Halbbit invertiert aus (Manchestercodierung?)
             If Rc5_bit_gesetzt > 0 Then
                Config Portb.0 = Input
             Else
                Config Portb.0 = Output
             End If
          'ende erstes Halbbit'
          End If
    
          'Beim zweiten Halbbit müssen wir nun den gewünschten Bitstatus ausgeben'
          If Rc5_halbbit = 32 Then
             If Rc5_bit_gesetzt > 0 Then
                Config Portb.0 = Output
             Else
                Config Portb.0 = Input
             End If
          'ende zweites Halbbit'
          End If
    
    
          'Bitzeit ist Trägerfrequenz/64, also wir zählen den Bittimer runter'
          Rc5_halbbit = Rc5_halbbit - 1
    
          'Bei RC5_halbbit = 0 ist das aktuelle Bit gesendet, wir senden nun das nächste Bit'
          If Rc5_halbbit = 0 Then
    
             'und laden den Bittimer mit dem Startwert für erstes Halbbit.'
             Rc5_halbbit = 64
    
             'Dann setzen wir die Bitmaske auf das nächste zu sendende Bit'
             Rc5_bitmaske = Rc5_bitmaske / 2
    
             'Rc5_bitmaske = 0 beim nächsten Aufruf der ISR bedeutet,'
             'alle Bits sind gesendet, also sind wir fertig'
          'nächstes Bit'
          End If
    
       'und wiederholen 14 mal'
       'Ende wenn rc5_bitmaske >0'
       End If
    
       $asm 'Code aus der Basom-Hilfe on interrupt isr nosave'
          POP R24 ;get content of SREG
          Out Sreg , R24 ; Save Into Sreg
          POP R24 ; get r24 back
       $end Asm
    Return
    und belegt so 99% des tiny13-Speichers.

    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!

  3. #63
    Benutzer Stammmitglied
    Registriert seit
    22.11.2007
    Beiträge
    57
    PonyProg sagt mir was....

    Aber funktioniert das mit MysmartUSB ???

    Mfg Harry

  4. #64
    Benutzer Stammmitglied
    Registriert seit
    22.11.2007
    Beiträge
    57
    Zu, Mic, nein, ich meinte die Vollversion von AVR Worpad, denn bei dieser version die bei mir dabei war geht nur der mega8 u. 88 und überhaupt keine tinys....
    Habe MySmartUSB + MyMultiprog V1.06

    Mfg
    Harry

  5. #65
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    26.05.2007
    Beiträge
    594
    OK, den Progger kenn ich nicht, aber was sagen denn AVRdude und Pony dazu?
    Zum Thema AVRstudio: http://www.mikrocontroller.net/topic/83275

  6. #66
    Benutzer Stammmitglied
    Registriert seit
    22.11.2007
    Beiträge
    57
    Avrdude geht angeblich nur die version 5.1 kann ich aber nirgends finden und pony findet den Programmer überhauptnicht.

    Mfg Harry

  7. #67
    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 Harry

    Habe MySmartUSB
    Also ich verwende auch den mysmartusb (auf der Platine steht: v2.11) und das Demo von myavr WorkPad Plus (build 2523) und kann die Fuses meiner tiny13 damit lesen und schreiben. Ich verwende dabei einen ISP-Stecker auf meiner Testplatine und ein kleines Kabel zwischen Programmer und der Platine.

    Vielleicht sitzt auch nur dein tiny nicht richtig im Sockel, bzw. hat Kontaktprobleme durchs rein/rausstöpseln.

    Allerdings habe ich inzwischen vier tinys hier rumliegen die ich damit überhaupt nicht mehr ansprechen kann. Die ersten drei habe ich wohl mit Versuchen am ADC und zu hohen Eingansspannung am Pin gekillt, den Vierten habe ich geröstet, weil ich ihn falsch in den Sockel meiner Schaltung gesteckt hatte. Alle vier führen zwar noch ihr letztes Programm aus, können aber mit dem Programmer nicht mehr angesprochen werden (weder flashen noch Fuses lesen/schreiben).

    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. #68
    Benutzer Stammmitglied
    Registriert seit
    22.11.2007
    Beiträge
    57
    Okay, werd mal myavr workpad plus installieren, hab vorher nur das normale installiert (SE) vielleicht sind da die tinys freigeschaltet!

  9. #69
    Benutzer Stammmitglied
    Registriert seit
    22.11.2007
    Beiträge
    57
    siehe da, es funktioniert!!!!

  10. #70
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    26.05.2007
    Beiträge
    594
    Und was ist mit der Treiber-CD? Sollte ja dabei sein, laut Internet...

Seite 7 von 10 ErsteErste ... 56789 ... LetzteLetzte

Berechtigungen

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

LiFePO4 Speicher Test