So habe nun den ganzen Tag getüftelt hänge aber immer noch fest.
Hier mal mein bisheriger Code:
Leider bekomme ich bei der Zeile "//Zählerstand auslesen und in Variable schreiben" noch den Fehler angezeigt: "lvalue required as left operand of assignment".Code:#define F_CPU 1200000UL //Taktfrequenz CPU 1,2MHz #include <avr/io.h> #include <util/delay.h> #include <avr/interrupt.h> #include <stdio.h> //LED-Ports #define LED1 1 #define LED2 2 #define LED3 3 #define LED4 4 #define C 0 //Variable für Zählerstand int main(void) { DDRB = 0b00011110; //Eingänge und Ausgänge definieren PORTB = 0b00000001; //Pullups setzen //Einstellungen für PCINT MCUCR = (1<<ISC00); //Jede logische Änderung an INT0 erzeugt eine Interrupt-Anforderung GIMSK = (1<<PCIE); //PCINT aktivieren PCMSK = (1<<PCINT0); //PCINT0 Eingang wird genutzt //Einstellungen Timer / PWM TCCR0A = ((1<<WGM00) | (1<<WGM01)); //FastPWM (Top=0xFF Update of OCRx at = TOP TOV Flag Set on = MAX) TCCR0B = ((1<<CS00) | (1<<CS01)); //Prescaler clk/64 (zählt in ca. 0,002s bis 219) sei(); //globale Interrupts aktivieren while(1) { if(C >= 100) { PORTB |= ((1<<LED1) | (1<<LED2) | (1<<LED3) | (1<<LED4)); } else if (C <=100) { PORTB &= ~((1<<LED1) | (1<<LED2) | (1<<LED3) | (1<<LED4)); } } } ISR(PCINT0_vect) { if(PINB & (1<<PB0)) //erkennung steigender Flanke { TCNT0 = 0; } else //sonst { C = TCNT0; //Zählerstand auslesen und in variable schreiben } }
Über Hilfe wäre ich wieder dankbar.
Was natürlich auch gut zu wissen wäre ist, ob der Code ansonsten für mein Vorhaben richtig umgesetzt ist.
LG
Lichti01







Zitieren

Lesezeichen