mikrocontroller.net

Forum: Compiler & IDEs Timer1 Overflow


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

Bewertung
0 lesenswert
nicht lesenswert
Hi Leute

sicher ein leichtes Ding für euch: Beim Overflow des T1 soll ein
Register um 1 erhöht, und als LED Leiste angezeigt werden.

Leider bleiben die LEDs alle aus. Nichts erhöht sich.
Springt der vielleicht nicht in die INT-Routine?

Autor: sep (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ach ja das
if ( overflw == 5)

muss im Normalfall
if ( overflw == 43)
heißen. Hab es hier nur zum Debuggen verkürzt.

Autor: Nico Schümann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So wird das nix..
Du brauchst globale Variablen, auf die du aus jeder Funktion zugreifen
kannst. Dann brauchst du noch das Schlüsselwort volatile, damit du auf
die Variable auch aus Interruptroutinen aufrufen kannst, sonst denkt
sich der Compiler vielleicht mal, dass er da irgendwas optimieren kann,
was ungut wäre

#include <avr/io.h>
#include <avr/iom8515.h>
#include <avr/interrupt.h>

volatile uint8_t min_counter_low = 0x00;
volatile uint8_t min_counter_high = 0x00;
volatile uint8_t overflw = 0x00;

int main(void)
{DDRB = 0xFF;
 PORTB = 0x00;
 TCCR1B |=  (1<<CS12);
 TIMSK |= (1<<TOIE1);
 sei();
 for (;;)
 {PORTB = min_counter_low;
 }
 return 0;
}
ISR (TIMER1_OVF_vect)
{++overflw;  //++bla ist etwas schneller als bla++
}



  if ( overflw == 5)
  {
    min_counter_low++;
    overflw = 0x00;
  }


}

Autor: Nico Schümann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hm, da ging was schief.. Also ab ISR.. nochmal:
ISR (TIMER1_OVF_vect)
{++overflw;  //++bla ist etwas schneller als bla++
 if (overflw == 5)
 {++min_counter_low;
  overflw = 0x00;
 }
}

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.