www.mikrocontroller.net

Forum: Compiler & IDEs alle Timer gleichzeitig - funktioniert nicht


Autor: Stier (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Abend,

möchte gerne Nachfragen ob man gleichzeitig mehrere Timer gleichzeitig 
benutzen kann.

Habe einen Code mit dem ich Timer0 und Timer2 ans laufen gebracht habe.

Timer0 für Tastenentprellung
Timer2 für eine Stoppuhr (die ich an und ausmache)

wenn ich den Timer1 noch hinzufüge funktioniert der gesamte Code nicht 
mehr. Timer1 ohne Timer0 und ohne Timer2 lauft sehr gut. Doch alle 
gleichzeitig funktioniert nicht. Im Debug Modus durchläuft der Code die 
gesamte Routine. In der while-Schleife kommt er nur 3 Zeilen weit und 
beginnt dann wieder von vorne (main()).
int main(void) {
    ...
    TCCR0 = (1<<CS02) | (1<<CS00);
    TCCR1B = (1<<WGM12) | (1<<CS10);
    OCR1A = XTAL / DEBOUNCE - 1;
    TCNT1 = 0;
    TCCR2 = (1<<CS21) | (1<<WGM21);
    TCNT2 = 0;
    OCR2 = 49;

    TIMSK |= (1<<OCIE1A) | (1<<TOIE0);
    sei();
    while(1) {
        ...
    }
}

Wie gesagt Timer2 Stoppuhr aktiviere ich mittels Buttons.

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@  Stier (Gast)

>möchte gerne Nachfragen ob man gleichzeitig mehrere Timer gleichzeitig
>benutzen kann.

Ja.

>Habe einen Code mit dem ich Timer0 und Timer2 ans laufen gebracht habe.

Das ist ein anderes Problem ;-)

>Timer0 für Tastenentprellung
>Timer2 für eine Stoppuhr (die ich an und ausmache)

Macht man zusammen in einem Timer.

MFG
Falk

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stier schrieb:

> gesamte Routine. In der while-Schleife kommt er nur 3 Zeilen weit und
> beginnt dann wieder von vorne (main()).

Dann rate ich mal:
Du hast einen Interrupt freigegeben, für den du keine ISR hast.

Autor: Stier (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wie finde ich diesen Interrupt?

Autor: Stier (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was halt auffällig ist, dass alle Timer unabhängig funktionieren, aber 
alle zusammen nicht!

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Beispielsweise durch den Vergleich von den im Quellcode aktivierten 
Interrupts mit den dort implementierten Handlern.

Alternativ durch den Einsatz eines Hardware-Debuggers, der dir beim 
Steppen irgendwann wegfliegt und in der Sprungleiste landet.

Autor: Magnus M. (magnetus) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stier schrieb:
> Was halt auffällig ist, dass alle Timer unabhängig funktionieren, aber
> alle zusammen nicht!

Zeig uns doch mal deine Interrupthandler.

Gruß,
Magnetus

Autor: Stier (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Anhang

Autor: Michael H. (michael_h45)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Für die Compare-Vectoren fehlt die angabe, WELCHER Compare-Wert es denn 
werden soll.
Ignorierst du compilerwarnings?

Autor: Hc Zimmerer (mizch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Welcher µC?  Wenn's nicht AT90S2333, AT90S4433 oder ATtiny15 ist, hast 
Du mit ISR(TIMER1_COMP_vect) keine gültige Interrupt-Routine erstellt.

Nähere Auskunft gibt Dir gerne die freundliche Dokumentation zur 
avr-libc, Abschnitt avr/interrupts.h, zu finden z.B. in 
http://www.nongnu.org/avr-libc/user-manual/group__....

Autor: Stier (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Habe den Atmega 8 hier aus dem Shop bestellt. Compilerwarnings ignoriere 
ich so ziemlich. Dachte Warnings sind keine Errors.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stier schrieb:
> Habe den Atmega 8 hier aus dem Shop bestellt. Compilerwarnings ignoriere
> ich so ziemlich. Dachte Warnings sind keine Errors.

Das ist die richtige Einstellung.
Compilerbauer bauen die auch nur so zum Spass ein.

Autor: Huch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Warnings sind die weiss-roten Absperrbänder vor einer Baugrube. Bei 
nem Error liegst Du schon drin.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.