Gast
#2516717
Hallo Leute! Ich danke schonmal für die Hilfe, konnte auch schon ein wenig was damit erreichen... steht steh ich aber vor meinem abschließendem problem, allerdings nicht der timer selbst, hoff ich. vielleicht kann mir ja nochma jemand helfen :-) also, wenn das eingangssignal an port d eine längere zeit x (von mir aus 5 sekunden) fehlt, erst dann soll der ausgang port C0 (bei mir eine rote LED) geschaltet werden und somit zeigen dass meine 'lichtschranke' zu lang unterbrochen war. zweites problem, ich hab einen taster an port B2 liegen, dieser soll eine quittierung werden und ausgang port C0 (rote led) dauerhaft ausschalten, bis die lichtschranke wieder zu lange unterbrochen wird. derzeit geht sie nur aus, wenn der taster betätigt ist. hier mal mein kleines programm, dass ich bis jetzt zusammen habe: #include <avr/io.h> #include <avr/interrupt.h> #define F_CPU 1000000UL ISR( TIMER0_OVF_vect ) { static uint8_t swTeiler = 0; swTeiler++; if ( swTeiler == 250) { swTeiler =1000000; PORTC |= (1<<0); } } int main () { DDRB=0x01; // B.0 = Ausgang DDRB &=~(1<<2); // PIN PB1 als Eingang PORTB |=(1<<2); // internen Pull-Up an PC1 aktivieren DDRC = 0x01; // B.0 = Ausgang ACSR &= ~(1<<7); // Comparator einschalten sei(); // globale interrupts freigeben while (1) { if (bit_is_set (ACSR, 5)) { PORTB &= ~(1<<0); // LED = OFF TCCR0 = (1<<CS01); TIMSK |= (1<<TOIE0); } else { PORTB |= (1<<0); } if(bit_is_clear (PINB,2)) { PORTC &=~(1<<0); } } }