Problem mit 16-Bit Zähler im Vergleichsmodus bei ATMEGA8

OP Persönliche Seite #1517258
Hallo,
ich versuche mich gerade in 16-Bit-Zähler einzuarbeiten.
Dazu habe ich einen ATMEGA-8 genommen, ihn mit Wiederstand und 
Kondensatoren in ein Breadboard gesteckt und mit 1-kOhm-Wiederständen 
die Ports C0-5 mit LEDs bestückt.
Irgendwie mache ich alles so, wie in den Tutorials und Threads 
beschrieben (oder nicht???) und trotzdem gibt es bei mir zwei Probleme:
1.Die LED an PORTB5 leuchtet nicht.
2.Die LEDs blinken nicht.

Hier der Quellcode:
1
#include <avr\io.h>
2
#include <avr\interrupt.h>
3

4

5
volatile int counter = 0;
6
volatile int set = 0;
7

8
ISR (TIMER1_COMPA_vect){
9
counter++;
10
if(counter == 3){
11
counter=0;
12
if(set==0){
13
  set=1;}
14
if(set==1){
15
  set=0;}
16
}
17

18
}
19

20
void init(){
21
DDRC = 0b00011111;
22
TCNT1 = 0;
23
OCR1A = 12500;
24
TCCR1A = (1<<WGM12);
25
TIMSK = (1<<OCIE1A);
26
TCCR1B = (1<<CS11) | (1<<CS10);
27
set = 0;
28
sei();
29
}
30

31

32
int main(void){
33
init();
34
  while(1){
35
  if (set==0){
36
  PORTC = 0b00011111;}
37
  if (set==1){
38
  PORTC = 0b00000000;}
39
  }
40
}
Könnt ihr mit vielleicht helfen?
mit freundlichen Grüßen,
Valentin
#1517285
Valentin Buck schrieb:
> Nicht, wenn der Interrupt dreimal gezogen hat und set auf 1 gesetzt
> wurde.

Nein. Am Ende des Interrupts ist set immer 0. Schau dir den Code nochmal 
genau an, spiele notfalls "von Hand" Zeile für Zeile durch.
OP Persönliche Seite #1517387
Also ich habe das mit dem Bit-Setzen von WGM12 jetzt mal weggelassen.
Also es blinkt immer noch. Aber immer noch so langsam wie vorher.

Die Formel für die Frequenz(fout=fin/(2*TEiler*(1+OCR1n))) habe ich mal 
umgestellt und bin auf folgende Formel für OCR1n gekommen:

OCR1n = (fin/(fout*2*Teiler))-1

Also für diesen Fall:

(8000000/(10*2*64))-1 = 6249

und nicht 12500!

Aber selbst mit 6349 im OCR1A blinkt der CHip nur ca. mit 1/5Hz!
Was ist da los?
#1517452
Valentin Buck schrieb:
> Also ich habe das mit dem Bit-Setzen von WGM12 jetzt mal weggelassen.
> ...
> Aber selbst mit 6349 im OCR1A blinkt der CHip nur ca. mit 1/5Hz!
> Was ist da los?

Was glaubst du eigentlich, warum ich deine Frage zu dem Bit oben mit 
"Ja" beantwortet habe? Aus Bosheit, um dich gezielt in die Irre zu 
führen?

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 16 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.