www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Timer2 bei 1Hz betrieben


Autor: Axel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Zusammen,

ich benutze ein ATmega32 /STK600.
Ich möchte anhand der Timer2 (8bits timer)  meine LEDs bei 1HZ 
umschlaten.
Aber der nichts. Die LEDs bleiben standig an.
Außerdem, habe ich auch nicht richtig verstanden, was der ich der Werte 
für die OCR2 für den vergleich mit den TCNT2 einstellen soll.
Meine Rechnungen 8000000/1024= 7,8KHZ
7800/256= 30 Overflows/s.
Wie komme ich auf 1Hz?
wie kann da mich weiterhelfen?

hier der code:


#include <avr/io.h>
#include <util/delay.h>
#include <inttypes.h>
#include <avr/interrupt.h>


ISR(TIMER2_COMP_vect)
{
  PORTB^=0xFF;//bitweise XOR
} //bei 1hz


 void main  (void)
{
  DDRB  = 0xFF;  //  Set D as output port
  // Clear Timer on compare match / Timer Clock = system clock / 1024
  TCCR2 = (1<<WGM21)|(1<<CS22)|(1<<CS21)|(1<<CS20); //WGM21  control the 
counting sequence of the counter
// (CL_2.0)
  TIFR  = OCF2;      // compare match occurs between Timer/counter2 und 
data in OCR2
// (CL_2.1)
  TIMSK = 1<<OCIE2;    // Enable Timer 2 Output Compare Match Event 
Interrupt
  OCR2  = 0x03;      // Set Output Compare Value to 10 (Compare with the 
Timer/Counter to generate Wave forms)

  sei();
while(1);
}


Danke

Axel

Autor: Joachim (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Du zählst eine Variable hoch. Wenn diese bei 30 angekommen ist,
dann ist eine Sekunde rum. Die Variable wird auf 0 gesetzt und das
Spiel beginnt von neuem.

Gruß
Joachim

Autor: Axel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Joachim,

Joachim schrieb:
> Wenn diese bei 30 angekommen ist,
> dann ist eine Sekunde rum.

wieso bei 30. Wie kommst du darauf dass, bei 30 ist ein Sekunde rum?

danke

Autor: Joachim (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Ich bin von 30 Overflows pro Sekunde ausgegangen.
Wenn sich der Interrupt 30 mal pro Sekunde meldet, sollte nach 30
Interrupts die Sekunde um sein.

Gruß
Joachim

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

Bewertung
0 lesenswert
nicht lesenswert
Axel schrieb:
> Hi Joachim,
>
> Joachim schrieb:
>> Wenn diese bei 30 angekommen ist,
>> dann ist eine Sekunde rum.
>
> wieso bei 30.

Weil deine ISR 30 mal in der Sekunde aufgerufen wird.
Hast du doch selber ausgerechnet


> Meine Rechnungen 8000000/1024= 7,8KHZ
> 7800/256= 30 Overflows/s.

> Wie kommst du darauf dass, bei 30 ist ein Sekunde rum?

Wenn ein Vorgang 30 mal in der Sekunde passiert, muss man nur 30 mal das 
Erscheinen des Vorgangs abwarten um zu wissen, das 1 Sekunde rum ist.

oder anders ausgedrückt, wenn du weißt das der ganz große Zeiger deiner 
Uhr jede Sekunde um 1 vorrückt, dann zählst du 60 Vorrückungen um 1 
Minute abzustoppen.

Autor: Axel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,


die funktion sollte so aussehen:


void main()
{
----------
--------------
------------
sei();
while(1)
if (counter==30)
      PORTB =0xff;

    if (counter>60)
      {
    counter=0;
    PORTB =0x00;
     }

  counter++;}
}


aber ist es auch möglicht mit dem OCR2 und ASSR einzustellen?

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert

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.