Danke für Eure Hilfe
Ich werde mal so etwas in der Art versuchen
Code:#include <avr/io.h> #include <stdlib.h> #include<avr/interrupt.h> #include<avr/signal.h> //Definition einiger Datentypen, reine Geschmacksache #define uchar unsigned char // 1 Byte ohne Vorzeichen 0 bis 255 erlaubt #define uint unsigned int // 2 Byte ohne Vorzeichen 0 bis 65535 erlaubt //Definition der Konstanten #define reload 100 // Reload Wert für Timer0 256 - 100 = 156 // Defintion der globalen Variablen volatile uchar count_10ms; // Zähler für die 10ms INT // Timer0 Overflow Routinen, Aufruf alle 10 ms SIGNAL (SIG_OVERFLOW0 ) { TCNT0 = reload; //Timer0 neu einstellen auf 100 count_10ms++; //Zähler um 1 erhöhen if(count_10ms >= 100) //Abfrage 1 Sekunde vorbei, 100 * 10 ms { //dann LED umschalten if(bit_is_set(PORTB,1)) //PIN gesetzt ??? PORTB = 0x00; else PORTB = 0x01; count_10ms = 0; //Zähler löschen } } //Einstellen der Hardware des AVR +++++++++++++++++++++++++++++++++++++++++++++ void init(void) { //Port einstellen DDRB = 0x01; //PortB.1 auf Ausgang //TimerO einstellen TIMSK = _BV(TOIE0); // Timer0 Overflow INT erlauben TCNT0 = reload; // TIMER0 vorladen mit 100 TCCR0 = _BV(CS02) ; // Vorteiler auf 256, ab hier läuft der TIMER0 // Global Interrupts freigeben sei(); } //Hauptprogramm, hier startet der uC ++++++++++++++++++++++++++++++++++++++++++ void main (void) { init(); // Hardware einstellen gehen for(;;) // Endlosschleife { } }







Zitieren

Lesezeichen