Hi, Anna,
möglicherweise geht es so, ich habe das aber (noch) nicht getestet - muss jetzt essen gehen.
Code:
#include <stdlib.h>
#include <avr/pgmspace.h>
#include <stdio.h>
#include <util/delay.h>
#include <avr/io.h>
#include <avr/interrupt.h>
/* ============================================================================== */
void Timer0_init(void)
{
TCCR0 |= (1<<WGM01) | (1<<CS01);
OCR0 = 124;
TIMSK |= (1<<OCIE0);
}
/* ============================================================================== */
/* ============================================================================== */
/* === Nicht unterbrechbare ISR für timer2 ===================================== */
ISR(TIMER0_COMP_vect) // Vektor 7
{
if (Izeit_1 <= 60000) //Timer bis 60 000 - 3 sec Datenerfassung möglich
Izeit_1 ++; // war: alle drei Sekunden wird 60000 erreicht
// und Izeit_1 bleibt in der uint16-Grenze
else
{
Izeit_1 = 0; // ansonsten: Rückstellen auf Null
// PORTC ^= (1<<PC5); // Zur Anzeige gLED am PC5/SCL toggeln
// Hallo Anna: das Toggeln hier würde Deinen Schaltvorgang im main
// stören - daher wurde es "auskommentiert".
}
}
/* ============================================================================== */
int main(void)
{
uint16 Izeit_1=0;
Timer0_init();
DDRC |= 0xff;
PORTC=0x00;
//####### Grundlegende Initialisierungen der Hardware, Portdefinition -------------
//Pins/Ports als Ein- (0) oder Ausgänge (1) konfigurieren, Pull Ups (1) aktivieren
DDRC = 0b00000001; // PC0 .. 6, (kein PC7 bei m168), NUR Ausgang PC1 aktiv
PORTC = 0b00000000; // Anmerkung: die binäre Codierung der Ports hat den
// Vorteil, dass man/ich gleich sehe, "was los ist".
// So kann ich es mir eben besser vorstellen als in hex.
cli();
Izeit_1=0;
sei();
while(1)
{
if (Izeit>5000)
{
PORTC ^= (1<<PC1);
}
}
}
Wenn Du das in der Zwischenzeit testen kannst wär schön, ansonsten hol ich nachher meine RNControl, dafür habe ich auch einen m16. Es sei denn, wir können uns vorerst mit Tests auf (m)einem m168/20MHz begnügen.
Viel Glück
Lesezeichen