So habe nun den ganzen Tag getüftelt hänge aber immer noch fest.
Hier mal mein bisheriger Code:
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
}
}
Leider bekomme ich bei der Zeile "//Zählerstand auslesen und in Variable schreiben" noch den Fehler angezeigt: "lvalue required as left operand of assignment".
Ü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
Lesezeichen