- 3D-Druck Einstieg und Tipps         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 15 von 15

Thema: Attiny12 und Timer0 ?

  1. #11
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.01.2007
    Ort
    Göttingen
    Beiträge
    706
    Anzeige

    Praxistest und DIY Projekte
    Es muss am Timer liegen, denn der hat immer
    den Wert 0
    Bist Du Dir da sicher bzw. woran machst Du das fest?

  2. #12
    Neuer Benutzer Öfters hier
    Registriert seit
    10.04.2008
    Ort
    Reit im Winkl
    Beiträge
    16
    Ich habe die Version 1.11.9.5

    Ich habe den gleichen Satz ja schon auf einem Attiny24 laufen und da gehts
    top. Darum verstehe ich das auch nicht.
    Ja und den 100nF hab ich drin.
    Das mit der LED hab ich schon versucht, das geht. Also laufen tut er.

    Und woran ich festmachen, dass der Timer 0 zurückgibt, wenn ich
    Code:
    If Rc = 0 Then Portb.0 = 0
    schreibe, dann geht Portb.0 auf low.
    Also kommt aus den Timer nicht mal 1 oder 2 raus

  3. #13
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    01.10.2009
    Beiträge
    437
    If Rc = 0 Then Portb.0 = 0 schreibe, dann geht Portb.0 auf low. Also kommt aus den Timer nicht mal 1 oder 2 raus
    Wenn der PinB.4 beim Start 1 ist, dann ist Rc beim ersten Durchlauf noch 0 (so schnell ist der Timer nicht), damit wird PortB.0 auf 0 gesetzt und das war's dann, denn auf 1 geht er laut Deinem Code nicht mehr.

    Probier mal folgendes:
    Code:
    $regfile = "attiny12.dat"                                   ' Controller = ATtiny12
    $crystal = 1200000                                          ' Takt 1MHz
    $noramclear                                                 ' RAM nicht initialisieren
    $tiny                                                       ' Stack nicht initialisieren
    '$hwstack = 32                                              ' Stackinitialisierung wird durch $TINY unterdrückt
    $swstack = 0                                                ' Software 0
    $framesize = 0                                              ' Framesize = 0
    
    '#################################################################################################################################
    '#
    '#  Hardware initialisieren
    '#
    '#################################################################################################################################
    
    Config Timer0 = Timer , Prescale = 64                       ' 1,5mS x (1200000Hz / 64) = Schwellwert 28
    
    Config Portb.0 = Output
    Config Pinb.4 = Input
    Portb.0 = 1
    
    '#################################################################################################################################
    '#
    '#  Variablen
    '#
    '#################################################################################################################################
    
    Dim Rc As Iram Byte                                         ' Variablen als IRAM definieren
    
    '#################################################################################################################################
    '#
    '#  Hauptprogramm
    '#
    '#################################################################################################################################
    
    Do
    
    'Geberweg des Senders Minimum = 65 / Maximum = 110 / Mitte = 87
    
    If Pinb.4 = 0 Then
       Bitwait Pinb.4 , Set                                     'Auf positive Flanke warten
       Timer0 = 1                                               'Zaehler starten
       Bitwait Pinb.4 , Reset                                   'Auf negative Flanke warten
       Rc = Timer0
    End If
    
    If Rc > 20 Then
      Portb.0 = 0
    Else
      Portb.0 = 1
    End If
    
    Loop

  4. #14
    Neuer Benutzer Öfters hier
    Registriert seit
    10.04.2008
    Ort
    Reit im Winkl
    Beiträge
    16
    Leider ändert das nichts
    Ich muss immer noch Rc = 0 setzen, damit die LED angeht

    Code:
    If Rc = 0 Then 
      Portb.0 = 0 
    Else 
      Portb.0 = 1 
    End If
    Ich verstehe das nicht mehr. In meinem Attiny24 läufts super

  5. #15
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    01.10.2009
    Beiträge
    437
    Mit 1.11.9.5 compiliert, im AVR Studio getestet und im Maschinencode schrittweise durchgegangen, der Code arbeitet einwandfrei.

    Prüf, ob die Portpins wie gewünscht arbeiten:
    Code:
    Do
    If Pinb.4 = 0 Then
      Portb.0 = 0
    Else
      Portb.0 = 1
    End If
    Loop
    und teste den Timer:
    Code:
    Do
    If Timer0 > 128 Then
      Portb.0 = 0
    Else
      Portb.0 = 1
    End If
    Loop
    Mit Prescaler 64 muss eine angeschlossene Led dunkler leuchten. Für ein erkennbares Blinken den Prescaler auf 1024 erhöhen, dann sollte ein Blinken mit 4,5Hz zu erkennen sein.

    Ausgang der Fernsteuerung korrekt mit Pin 3 des Tiny12 verbunden und positiver Impuls vorhanden ? Evtl. anderen Eingangspin nehmen.

Seite 2 von 2 ErsteErste 12

Berechtigungen

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

Solar Speicher und Akkus Tests