mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik timer-interrupt alle 448µs <- bitte werte überprüfen!


Autor: kalle (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hi
ich will das mein schönes timer interrupt alle 448µs aufgerufen wird,
aber irgendwie scheints nicht zu klappen, ich weis nicht warum.. könnte
mal einer meine werte überprüfen?

Fosc = 16 MHz
TCCR2 = (1<<CS22|1<<CS20)       // <-- prescaler 1024 (?)
TCNT2 = 249                     // overflow nach 7 mal inkrementieren:

nach meiner rechnung stimmt das..

Ftimer = 16 000 000Hz / 1024 = 15625Hz, d.h. alle 1/15625s nen
inkrement, das entspricht 64µs, d.h. nach 7 mal inkrementieren sind
448µs verstrichen

das stimmt alles oder?


ich post lieber mal mein code, nicht das darin der fehler liegt..
#include <avr/io.h> 
#include <avr/interrupt.h>

SIGNAL(SIG_OVERFLOW2)
{
  TCNT2 = 249;  
}

int main(void)
{
  TCCR2 = (1<<CS22|1<<CS20);  
  TCNT2  = 249;      
  TIMSK |= (1<<TOIE2);    
  sei();
  
  while(1);
  
  return 0;
}

sry das ich euch damit belästige, aber ich find den fehler nicht..

Autor: inoffizieller WM-Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Benutz den CTC-Mode! Das ist die genaueste Möglichkeit, deine Zeit zu
erzeugen!

Was macht er denn nicht? Die genaue Zeit oder gar nichts?

Autor: inoffizieller WM-Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
TCCR2 = (1<<CS22|1<<CS20);

Prioritäten der Klammern und des | ?

Es müsste wohl TCCR2 = (1<<CS22)|(1<<CS20);
heissen.

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das dürfte schon allein aus dem Grunde nicht funktionieren, dass Du
SIGNAL benutzt, ohne die signal.h einzubinden! Da dürfte der Compiler
wahrscheinlich eine Fehlermeldung ausspucken. SIGNAL ist veraltet, in
der aktuellen AVR-libc geht das mit ISR(VEKTORNAME). Die alten
Vektornamen werden zwar noch unterstützt, aber Du solltest auch mal
nach den neuen Namen schauen, damit es in der Zukunft auch klappt.

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.