- 3D-Druck Einstieg und Tipps         
Seite 3 von 4 ErsteErste 1234 LetzteLetzte
Ergebnis 21 bis 30 von 33

Thema: Timer beim ATMega32 in C

  1. #21
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    02.08.2006
    Ort
    Würzburg, Germany
    Beiträge
    716
    Anzeige

    E-Bike
    Hallo,

    drei Dinge fallen mir spontan auf:

    - die Laufvariable muss volatile sein (volatile long int Laufvariable = 0 Warum ist die überhaupt Long? Wenn die nur bis 100 zählt reicht ein Smallint bis 127 oder zumindest ein Byte. Controller-Speicher ist kostbar!
    - in die ISR müsste noch ein OCR1A = 15625; oder?
    - ist die Display-Ausgabe in der Main auch in einer Endlosschleife?

    Viele Grüße
    Andreas

  2. #22
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    02.08.2006
    Ort
    Würzburg, Germany
    Beiträge
    716
    Nachtrag: Ich habe gerade das Register OCR1A nachgeschlagen. Das ist ja der Compare-Vergleichswert. Da reicht es, wenn er einmal gesetzt wird. In der ISR kannst du ihn weglasen.

    Die Initialisierung des Timers habe ich nicht geprüft. Ich hoffe die Bits stimmen alle, und auch der Interrupt wird richtig aktiviert. Wenn es immer noch nicht läuft, würde ich eine LED anschalten, wenn die Interrupt-Routine ausgeführt wird. (Vor dem sei natürlich ausschalten)

  3. #23
    Neuer Benutzer Öfters hier
    Registriert seit
    05.06.2012
    Beiträge
    14
    hmm.. danke dir erst mal für deine mühen. code hab ich versucht --> erfolglos

    zum datentyp. in der praxis zählt er höher als bis 100 (100 war nur zur vereinfachten darstellung im forum - aber auch mit 100 funktioniert es nicht)

    led werde ich testen.

  4. #24
    Neuer Benutzer Öfters hier
    Registriert seit
    05.06.2012
    Beiträge
    14
    led wird nicht angesteuert - ergo wird die routine gar nicht angesprochen. aber warum ?

  5. #25
    Erfahrener Benutzer Robotik Einstein Avatar von wkrug
    Registriert seit
    17.08.2006
    Ort
    Dietfurt
    Beiträge
    2.214
    Warum rätselst Du da rum?
    Nimm den Simulator vom AVR Studio und simuliere das Prog Schritt für Schritt.
    Dann siehst Du schon wo es hakt.
    Du kannst ja das OCRA1 Comparematch Flag auch händisch setzten und musst dann nicht ewig im Code warten.

  6. #26
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    02.08.2006
    Ort
    Würzburg, Germany
    Beiträge
    716
    Hallo,

    wenn die ISR gar nicht angesteuert wird würde ich sagen ist die Initialisierung des Timers falsch. Das sind nur 3 Zeilen, da muss man halt ein bisschen spielen, wenn man nicht weiß was man da tut.

    Nach lesen des Datenblattes frage ich mich, warum du z.B.WGM10 setzt? Das hat mit Timer 1 gar nichts zu tun. Wenn überhaupt heißt das Bit WGM12. Aber wäre nicht Normal Operation besser? Du müsstest dann in der ISR den Timer nur manuell wieder auf 0 setzen.

    Viele Grüße
    Andreas

  7. #27
    Erfahrener Benutzer Robotik Einstein Avatar von wkrug
    Registriert seit
    17.08.2006
    Ort
    Dietfurt
    Beiträge
    2.214
    Du müsstest dann in der ISR den Timer nur manuell wieder auf 0 setzen
    Das Thema hatten wir schon ein paar Antworten weiter oben.

  8. #28
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    02.08.2006
    Ort
    Würzburg, Germany
    Beiträge
    716
    Guten Morgen,

    Zitat Zitat von wkrug Beitrag anzeigen
    Das Thema hatten wir schon ein paar Antworten weiter oben.
    jetzt habe ich es auch gelesen.

    Trotzdem sollte das entsprechende Bit laut Datenblatt WGM12 heißen. CTC gibt es nicht, CTC1 auch nicht, deswegen hat das kompilieren in den Antworten weiter oben nicht funktioniert. Aber WGM10 ist laut Datenblatt eindeutig falsch! In der Tabelle für die WGM-Bits des Registers TCCR1A sieht man, dass nur WGM12 gesetzt sein muss für CTC.

    Viele Grüße
    Andreas

  9. #29
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    01.10.2009
    Beiträge
    437
    Zitat Zitat von tom77? Beitrag anzeigen
    Weder ein syntaktisch noch ein semantisch Fehler wird vom Compiler angezeigt
    Ist auch ein wildes Durcheinander.

    Im letzten geposteten Code:
    Code:
    //Timer1 (16Bit) Initialisieren
    TCCR1A |= (1<<CS02) | (1<<CS00) | (1<<WGM10);
    OCR1A = 15625;
    TIMSK |= (1<<OCIE1A);
    sei();
    TCCR1A enthält keine Prescalerbits, ein paar Posts vorher war das noch ein bisserl besser:
    Code:
    TCCR1B |= (1<<CS02) | (1<<CS00);
    Lies das Datenblatt statt programming-by-guessing.
    Prescalerbits und auch einige andere Bitnamen haben bei Atmel die Timernummer im Namen, ein CS02 ist ein Timer0-Bit, hat hier nur keinen Einfluss, da das Register sowieso das Falsche ist und die Bits für Timer0 und Timer1 ander gleichen Position stehen.
    Außerdem ver-odert man bei der Initialisierung nicht:
    Code:
    TCCR1A |= ...
    sondern weist direkt zu, damit die Register einen definierten Zustand erhalten.

    Mach das alles richtig und es wird gehen.

  10. #30
    Neuer Benutzer Öfters hier
    Registriert seit
    05.06.2012
    Beiträge
    14
    ich danke euch allen für die posts. werde mich wohl selbst etwas mehr einlesen müssen und hoffen dass ich etwas mehr finde.

Seite 3 von 4 ErsteErste 1234 LetzteLetzte

Ähnliche Themen

  1. Timer beim atmega8
    Von MrTaco im Forum C - Programmierung (GCC u.a.)
    Antworten: 1
    Letzter Beitrag: 19.05.2010, 15:28
  2. ausschaltverzögerung beim einschalten (timer)
    Von Warloxx im Forum Elektronik
    Antworten: 7
    Letzter Beitrag: 03.09.2009, 19:55
  3. Timer => Fehlermeldungen beim compilieren
    Von The Man im Forum Assembler-Programmierung
    Antworten: 5
    Letzter Beitrag: 14.02.2007, 11:07
  4. Timer/Counter0 beim Butterfly
    Von Heiko R. im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 3
    Letzter Beitrag: 09.11.2005, 18:55
  5. Timer beim Mega16
    Von maw_hn im Forum C - Programmierung (GCC u.a.)
    Antworten: 3
    Letzter Beitrag: 22.08.2005, 10:03

Stichworte

Berechtigungen

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

fchao-Sinus-Wechselrichter AliExpress