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

OP Persönliche Seite #1517258
Lesenswert?

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
OP Persönliche Seite #1517387
Lesenswert?

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
Lesenswert?

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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren