Gast
#4534403
Hallo ich bin gerade dabei mein HC-SR04 an mein Atmega16 zu hängen und wollte um zu sehen ob er vernünftig läuft 2 LED's ansteuern, die auf das Echo Signal des HC-SR04 Reagieren, sprich bei LOW Pegel die eine LED an, bei High die andere, jedoch ist es bei mir so das nur die 1. LED dauer lechtet. kann mir vllt jemand Helfen. #include <avr/io.h> #include <util/delay.h> #include <avr/interrupt.h> #define F_CPU 1000000UL //1MHz CPU Takt //Impuls Start: PD2 auf High ISR (TIMER1_COMPA_vect) { PORTD|=(1<<PD2); } //Impuls Ende: PD2 auf Low ISR(TIMER1_COMPB_vect) { PORTD &= ~(1<<PD2); } int main(void) { // Ein- und Ausgänge //Eingänge: Echo: PD3 //Ausgänge: DDRD |= (1<<PD2); //Trigger DDRA |= (1<<PA0)|(1<<PA1); //Status LED1 :PA0, LED2 :PA1 //Register Konfiguration TCCR1B |= (1<<WGM12); // CTC Modus aktiv TCCR1B |= (1<<CS10); //Prescaller 1:1 = 1000000 Hz TIMSK |= (1<<OCIE1A) | (1<<OCIE1B); // Timer Interrups zum Vgl. OCR1A = 20000; // Periodendauer: 20 ms OCR1B = 10; // Implusdauer: 10 us while (1) { if (PIND & (1<<PD3)) //Wenn Echo auf High { PORTA |= (1<<PA0); //LED1 AN PORTA &= (1<<PA1); //LED2 AUS _delay_ms (1); } if (!(PIND & (1<<PD3))) //Wenn Echo auf LOW { PORTA &= (1<<PA0); //LED1 AUS PORTA |= (1<<PA1); //LED2 AN _delay_ms(1); } } }