Hallo!
Ich habe mal deinen Code geflasht:
Code:
// Die Anoden der rechten IR-LEDs hängen mit Vorwiderstand an PA0 (X1-AN0)
// Die Anoden der linken IR-LEDs hängen mit Vorwiderstand an PA1 (X1-AN1)
// Die Kathoden beider IR-LEDs sind mit PA3 (X3-AN3) verbunden
// Der IR-Empfänger ist mit PA2 (X2-AN2) verbunden
// pacman-bee
#define ddr_acs_led_l DDRA // Anoden der IR-LEDs links
#define port_acs_led_l PORTA
#define pin_acs_led_l (1<<PA1)
#define ddr_acs_led_r DDRA // rechts
#define port_acs_led_r PORTA
#define pin_acs_led_r (1<<PA0)
#define ddr_acs_36kHz DDRA // Kathoden der IR-LEDS mit 36kHz getaktet
#define port_acs_36kHz PORTA
#define pin_acs_36kHz (1<<PA3)
#define ddr_acs_tsop DDRA // Eingang IR-Empfänger
#define port_acs_tsop PINA // Achtung, das ist ein Eingang!
#define pin_acs_tsop (1<<PA2)
#include <avr/io.h>
#include <util/delay.h>
void leds(uint8_t status) // status bit0 bis 3 entspricht den LED0 bis 3
{
PORTB &= 0b11110000; // alle LED ausschalten
PORTB |= 0b1111 & status; // gewünschte LED einschalten
}
int main(void)
{
DDRB |= 0b1111; // PB0 bis PB3 sind die LED 0 bis 3
leds(0b1001); // LED 0 und 3 einschalten
_delay_ms(10000); // eine Sekunde warten
leds(0); // alle LED ausschalten
ddr_acs_led_l |= pin_acs_led_l; // linke ACS-LED Anode
ddr_acs_36kHz |= pin_acs_36kHz; // Kathoden beide LED
port_acs_36kHz &= ~pin_acs_36kHz; // Dauerlicht
while(1)
{
port_acs_led_l |= pin_acs_led_l; // linke IR-LED anschalten
leds(0b0010); // LED1 zur Kontrolle einschalten
_delay_ms(5000);
port_acs_led_l &= ~pin_acs_led_l; // linke IR-LED ausschalten
leds(0); // LED1 zur Kontrolle ausschalten
_delay_ms(3000);
}
return(0);
}
Bei diesem Programm leuchten zwar die LEDs wie vorgeschrieben, die IR-LEDs allerdings nicht. Die IR-LEDs sind alle richtig rum eingebaut und es gibt auch keine kalten Lötstellen. Danach habe ich mit dem Multimeter an den Anschlüssen von X1, X2 und X3 gemessen und festgestellt, dass dort überhaupt keine Spannung anliegt (bzw. 0,09 V).
Wie kann das sein?
Lesezeichen