www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Frage über OCF0 Checking in ATmega16 Timer0


Autor: Paramet W. (paman)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Zusammen,

Ich habe über Timer0 in CTC Mode versucht. Und zwar wollte OCF0 Flag 
überprüfen, ob Set oder nicht Set ist.

Ich habe ein Programm versucht zu schreiben, aber nicht funktioniert.. 
T.T
In If Loop funktioniert nicht richtig.
Könnten Sie mir ein Vorschlag geben, was ich machen sollte

Gruß

PaMan

[c]

#include <avr/interrupt.h>
#include <avr/io.h>
#include <stdint.h>
/*********************************************************************** 
*******/

int main (void)
{
  DDRA = 0xFF;    // Set PortA as Output

  DDRB =  0b11111010; // PB3( OC0 as Output) PB0(T0 as Input)
                                PB2(SW as Input)
  PORTB = 0b00000101;


  while(PINB & (1<<PINB2));  // wait switch clear to start

//Initial Timer/Counter0
  TCNT0  = 0x00;    // Clear counter
  OCR0   = 0xFF;    // Match at Top
  TIFR |= (1<<OCF0);    //

         while(1)
  {
         TCCR0 = 0b00011110;  // Start T/C0, CTC Mode, extclk T0

           if (OCF0==1)
          { PORTA |= (1<<PORTA1);  // show OK at PortA1 }

           else
          { PORTA |= (1<<PORTA2);  // show NOK at PortA2 }
  }
}

[\c]

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn du innerhalb der SChleife den Timer immer wieder
startest, wird der nie so richtig zum zählen kommen.


Initialisierungen werden nur einmal gemacht. Ausserhalb
der Hauptschleife!

----------

    if (OCF0==1)

OCF0 ist ein Bit im TIFR Register!

   if( ( TIFR & OCF0 ) != 0 )

Autor: Paramet W. (paman)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oh!!!  Das kann nicht direkt mit dem Bit arbeiten.

Bedanke für Ihre Hilfe,

PaMan

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.