Programm für Atmega 8L

Gast #778474
Lesenswert?
• ▲
▼
Hallo erstmal!

Ich versuche den Timer 16Bit von dem Atmega 8L zu benutzen. Aber das 
funktioniert nicht. Ich benutze Winavr mit kamavr. Hier der C-Code.

#include <stdint.h>
#include <stdlib.h>

#include <avr/eeprom.h>
#include <avr/interrupt.h>
#include <avr/io.h>
#include <avr/pgmspace.h>
#include <avr/sleep.h>
#include <avr/wdt.h>



int main (void)
{

DDRC=1;
PORTC=1;
TCCR1B=0x02;
OCR1AH=20000>>8;
OCR1AL=20000%256;
TIMSK=0x10;

sei();

while(1);
 return 1;
}



ISR (TIMER1_COMPA_vect)

{
PORTC=0;
}

Ich will erstmal nur, dass er in die ISR reinkommt.

gruss mc
#778511
Lesenswert?
• ▲
▼
mc wrote:
> Hallo erstmal!
>
> Ich versuche den Timer 16Bit von dem Atmega 8L zu benutzen. Aber das
> funktioniert nicht.
Was funktioniert nicht?

> int main (void)
> {
>
> DDRC=1;
> PORTC=1;
> TCCR1B=0x02;
Bitte schreib das so, dass man ohne Blick ins Datenblatt erkennen 
kann, was da passiert. Siehe Bitmanipulation.
In diesem Fall
1
TCCR1B = 1 << CS11;

> OCR1AH=20000>>8;
> OCR1AL=20000%256;
Dürfte zwar in diesem Fall funktionieren, ist aber Murks. Schreib
1
OCR1A = 20000;
Die Drecksarbeit erledigt der Compiler.

> TIMSK=0x10;
Siehe oben bei TCCR1B

Und wie gesagt: Musst schon erzählen, was genau nicht funktioniert bzw. 
was Dich zu der Annahme verleitet, dass es nicht funktioniert. Von der 
Funktion her scheint da zumindest kein dicker Fehler drin zu sein. Aber 
es gibt viele Stolpersteine, v.a. dann, wenn man den Simulator benutzt.
Gast #779251
Lesenswert?
• ▲
▼
> #include <stdint.h>
> #include <stdlib.h>
>
> #include <avr/eeprom.h>
> #include <avr/interrupt.h>
> #include <avr/io.h>
> #include <avr/pgmspace.h>
> #include <avr/sleep.h>
> #include <avr/wdt.h>

holla... wozu das alles? o_O
#include <avr/interrupt.h>
#include <avr/io.h>
die reichen dafür.

> DDRC=1;
> PORTC=1;

misst du auch am richtigen pin? PORTC=1 setzt nur das bit PC0. nur, um 
das mal auszuschließen. der rest sieht ziemlich richtig aus...

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