Timer2 ???

Gast #56454
Lesenswert?

Hallo,
wenn du Codevision AVR benutzt, kannst du den CodeWizardAVR (F2)
aktivieren.
Stellst den Typ und die Frequenz ein und dann unter Timers
die gewünschten Einstellungen machen.
Generiert wird dir der Code automatisch, so das du nur noch in den
Interrupt eine entsprechende Zählschleife einbinden mußt.
Gast #56456
Lesenswert?

Hallo,
mal ein versuch von mir

#include <90s8535.h>

// Timer 2 overflow interrupt service routine
interrupt [TIM2_OVF] void timer2_ovf_isr(void)
{

// Place your code here
int i;
i=i+1;
if (i>100)
{
    var=var+1;
    i=0;
}
else
{
}
// Reinitialize Timer's 2 value
TCNT2=0x00;
}

var kann z.B. global als int vereinbart werden.

// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: 3,906 kHz
// Mode: Output Compare
// OC2 output: Disconnected
TCCR2=0x07;
ASSR=0x00;
TCNT2=0x01;
OCR2=0x00;

kann es nicht testen, da ich keinen 90S8535 habe
Gast #56459
Lesenswert?

Ich selber kenne BASCOM überhaupt nicht.
Ich will nur den Timer2 verwenden und
eine Zahl z.B. alle Sekunde um eines erhöhen.
Aber ich schaffe es nicht ? Hmm...
Hoffentlich kann mir jemand helfen
Gast #56462
Lesenswert?

@Trasher
Ein optimierender Compiler (und als einen solchen kann man einen
C-Compiler normalerweise anschauen), legt bei globalen Variablen,
welche in Funktionen verwendet werden manchmal Kopien an, die nicht
immer mit dem Original verglichen werden. Deklariert man die Variable
hingegen als "volatile", dann wird immer auf dem Original operiert.
(Irrtum möglich, aber nicht wahrscheinlich ;-) )

MfG, Daniel

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