mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik timer / compare register


Autor: K_II (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

ich will am pin PB0 ein ungleichmässiges rechteck signal erzeugen 
eigenlich nicht schwer ..
 ich initialisiere dazu meine timer2  folgendermassen...
DDRB = 0xFF;

TCCR2 |= (1<<CS20)|(1<<CS21)|(1<<CS22);   // prescaler auf 1024 bei 8 MHZ rund 8Khz
TCCR2 &= ~(1 << WGM20)|~(1 << WGM21)|~(1 << COM20)|~(1 << COM21);   // compare mode normal OC2 disconected, normaler mode

TCNT2 = 0x00;                            //startwert auf 0 setzten

OCR2  = 0x80;                            //compare value einstellen

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 ..
SIGNAL (TIMER2_OVF_vect)
{

 PORTB |= ( 1 << PB0 );


}


SIGNAL (TIMER2_COMP_vect)
{

 PORTB &= ~( 1 << PB0 );
  
}

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

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: K_II (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

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.