- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Ergebnis 1 bis 10 von 23

Thema: Attiny861A - Timer1 läuft viel zu schnell

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    04.07.2012
    Beiträge
    201

    Frage Attiny861A - Timer1 läuft viel zu schnell

    Hallo,

    Ich seh momentan das Problem nicht, evtl. kann mir mal jemand die Augen öffnen.

    Ich habe einen Attiny861A mit 8MHz, ich benutze den Timer1 um eine Frequenz von 1 Hz zu erzeugen.

    Leider läuft der Timer viel zu schnell. Was habe ich falsch gemacht?

    -der Attiny861A wird von meinen mySmartUSB MK2 -Programmer als Attiny861 erkannt. (ohne A, lässt sich aber trotzdem beschreiben)
    -im Chip habe ich 8Mhz ohne Teiler durch 8
    -Timerwerte habe ich mit rnAVR berechnet. "Const Timervorgabe = 34286" will er nicht, ich muß die Timervorgabe als Word dimensionieren. (hatte ich auch noch nicht)
    -mit Wait 1 passt das Timing Augenscheinlich
    -macht Bascom einen unterschied zwischen Attiny861 und Attiny861A?

    Hier mal mein Testcode:

    Code:
    $regfile = "attiny861.dat"
    $crystal = 8000000
    $hwstack = 40
    $swstack = 16
    $framesize = 32
    
    
    Config Timer1 = Timer , Prescale = 256
    
    Config Pinb.4 = Output
    Led3 Alias Portb.4
    Led3 = 1
    
    On Timer1 Timer_irq
    
    'Const Timervorgabe = 34286       'Fehler: Value doesn't fit into Byte
    Dim Timervorgabe As Word
    Timervorgabe = 34286
    
    Enable Timer1
    Enable Interrupts
    
    
    Do
    
    Loop
    
    Timer_irq:
      Timer1 = Timervorgabe
    
       Toggle Led3
       'Wait 1
    Return
    Danke für Eure Hilfe

    mfG
    Mario

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    02.11.2005
    Alter
    49
    Beiträge
    1.146
    Timer1 ist ein 10-Bit Timer/Counter, kann also bis maximal 1023 zählen...
    Entweder Du setzt den Prescaler höher oder Du benutzt den 16-Bit Timer0.

    Gruß,
    askazo

  3. #3
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    04.07.2012
    Beiträge
    201
    Hallo askazo,

    danke für deine Antwort.

    mmmmh... ich dachte Timer1 ist der 16Bit Timer und Timer0 ein 8Bit Timer.

    Hab im Datenblatt nur folgendes gefunden.

    • Peripheral Features
    – One 8/16-bit Timer/Counter with Prescaler
    – One 8/10-bit High Speed Timer/Counter with Prescaler
    • 3 High Frequency PWM Outputs with Separate Output Compare Registers
    • Programmable Dead Time Generator
    Also ist dann Timer0 der 16Bit Timer?

    mfG
    Mario


    Edit: mit Timer0 nimmt Bascom schonmal "Const Timervorgabe = 34286". Läuft aber immernoch viel zu schnell.

    Code:
    $regfile = "attiny861.dat"
    $crystal = 8000000
    $hwstack = 32
    $swstack = 32
    $framesize = 32
    
    
    Config Timer0 = Timer , Prescale = 256
    
    Config Pinb.4 = Output
    Led3 Alias Portb.4
    Led3 = 0
    Enable Timer0
    On Timer0 Timer_irq
    
    Const Timervorgabe = 34286
    
    Enable Interrupts
    
    Do
    
    Loop
    
    Timer_irq:
      Timer0 = Timervorgabe
    
       Toggle Led3
       'Wait 1
    Return
    Geändert von dj_cyborg (29.07.2013 um 11:40 Uhr)

  4. #4
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    8.678
    ... ich dachte Timer1 ist der 16Bit Timer und Timer0 ein 8Bit Timer ... im Datenblatt nur folgendes gefunden ...
    Kann es sein, dass Du nur das 22-seitige Datenblatt hast? Nimm mal die volle Prise (klick da). Und lies bei Kapitel 11 und 12.
    Ciao sagt der JoeamBerg

  5. #5
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    17.09.2004
    Alter
    39
    Beiträge
    647
    Deine Timerberechnung ist erstmal korrekt. Deine IRQ wird alle 1.09 sec aufgerufen. Jedenfalls theoretisch...

    Was heisst denn der Timer läuft zu schnell? Wie schnell wird die IRQ aufgerufen?
    Unser Sommer ist ein grün angestrichener Winter. Das einzige reife Obst, das wir haben, sind gebratene Äpfel. [Heinrich Heine]

  6. #6
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    04.07.2012
    Beiträge
    201
    Hallo oberallgeier,

    vielen Dank für deine Antwort und deinen Link.

    Also wenn ich das richtig verstanden habe muß ich den Timer0 vom 8Bit-Mode auf 16Bit-Mode umschalten?!

    Sowas hatte ich bis jetzt leider noch nicht. Es sind ja Codeschnipsel in C aufgeführt aber wie mache ich das in Bascom?

    Danke

    mfG
    Mario

    - - - Aktualisiert - - -

    Hallo DanielSan,

    Danke für deine Antwort.

    also die ToggleLed leuchtet fast durchgehend. Bei 1Hz sollte sie ja gemütlich Blinken.
    Der Timer0 scheint wohl beim Attiny861A ein paar Eigenheiten zu haben.

    mfG
    Mario

Ähnliche Themen

  1. Atmega 32 Uhr läuft zu schnell
    Von Natureengeneer im Forum C - Programmierung (GCC u.a.)
    Antworten: 9
    Letzter Beitrag: 24.10.2012, 16:24
  2. Wie schnell läuft ein Schrittmotor
    Von Hellmut im Forum Motoren
    Antworten: 1
    Letzter Beitrag: 20.03.2008, 19:29
  3. Hilfe! Uhr läuft zu schnell?
    Von HPM im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 6
    Letzter Beitrag: 28.02.2007, 22:13
  4. PCF 8583 läuft zu schnell
    Von Zeroeightfifteen im Forum Microcontroller allgemeine Fragen/Andere Microcontroller
    Antworten: 5
    Letzter Beitrag: 02.04.2006, 17:54
  5. Timer1 Läuft nicht richtig
    Von DeltaEx im Forum C - Programmierung (GCC u.a.)
    Antworten: 2
    Letzter Beitrag: 23.01.2006, 17:19

Stichworte

Berechtigungen

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

12V Akku bauen