Forum: Mikrocontroller und Digitale Elektronik timer / compare register


von K_II (Gast)


Lesenswert?

Hallo

ich will am pin PB0 ein ungleichmässiges rechteck signal erzeugen 
eigenlich nicht schwer ..
 ich initialisiere dazu meine timer2  folgendermassen...
1
DDRB = 0xFF;
2
3
TCCR2 |= (1<<CS20)|(1<<CS21)|(1<<CS22);   // prescaler auf 1024 bei 8 MHZ rund 8Khz
4
TCCR2 &= ~(1 << WGM20)|~(1 << WGM21)|~(1 << COM20)|~(1 << COM21);   // compare mode normal OC2 disconected, normaler mode
5
6
TCNT2 = 0x00;                            //startwert auf 0 setzten
7
8
OCR2  = 0x80;                            //compare value einstellen
9
10
TIMSK |= (1<<OCIE2)|(1<<TOIE2);                   //interrupts enablen für den timer


wenn jetzt die interrupts ausgelöst werden soll der PB0 ein bzw 
ausgeschaltet werden ..
1
SIGNAL (TIMER2_OVF_vect)
2
{
3
4
 PORTB |= ( 1 << PB0 );
5
6
7
}
8
9
10
SIGNAL (TIMER2_COMP_vect)
11
{
12
13
 PORTB &= ~( 1 << PB0 );
14
  
15
}

bei dem eingestellen compare wert in OCR2 (0x80) würde ich dann einen 
gleichmässigen rechteck erwarten ... es kommt aber ne null linie mit 
kurzen peaks raus ... was mach ich da falsch?

aso µc ist ein ATMega32 mit 8MHz intern...


K_II

von Johannes M. (johnny-m)


Lesenswert?

> TCCR2 &= ~(1 << WGM20)|~(1 << WGM21)|~(1 << COM20)|~(1 << COM21);
Das klappt so gar nicht! Diese Anweisung macht in diesem Fall schlicht 
und ergreifend gar nichts. Schau Dir den Artikel zum Thema 
Bitmanipulation noch mal genauer an...

Abgesehen davon: Der Timer 2 beim Mega32 hat eine PWM-Betriebsart, die 
eigentlich genau das machen sollte, was Du vorhast (und zwar 
hardwaremäßig), nur eben nicht an PB0, sondern an PD7.

Ach ja, SIGNAL ist veraltet. Nimm ISR.

von K_II (Gast)


Lesenswert?

Hi

danke jetzt gehts ... ich hab noch nen anderen fehler gefunden ... hab 
zwischen drin im code immer das compare register auf 0 gesetzt ... warum 
is mir schleierhaft :)

ich weis das der m32 auch eine bzw mehrere hardware pins hat ich brauch 
aber 6 oder 8 (mal sehn) kanäle ...und nich nur einen...

das mit dem einen kanal is halt nen anfang .. denn irgendwo muss man ja 
anfangen das ganze zu begreifen ...


Frohes Fest
K_II

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.