Hallo miteinander,
ich stehe vor einem merkwürdigem Problem. Ich habe den PortD (0 bis 4)
und PortC (0 bis 5) mit einer LED-Matrix belegt.
In der Main steht erstmal zum testen
1 | #define MUX_ROW PINC
|
2 | #define MUX_ROW_DDR DDRC
|
3 |
|
4 | #define MUX_COL PIND
|
5 | #define MUX_COL_DDR DDRD
|
6 |
|
7 | #define LED_REF PINB
|
8 | #define LED_REF_DDR DDRB
|
9 |
|
10 | #define TEMP_SENSE PINA
|
11 | #define TEMP_SENSE_DDR DDRA
|
12 |
|
13 | int main (void) {
|
14 |
|
15 | // Give some time to startup
|
16 | _delay_ms(30);
|
17 |
|
18 | PORTA = 0x00;
|
19 | PORTB = 0x00;
|
20 | PORTC = 0xFF;
|
21 | PORTD = 0x00;
|
22 |
|
23 | MUX_COL_DDR = 0xFF;
|
24 | MUX_ROW_DDR = 0xFF;
|
25 | LED_REF_DDR = 0xFF;
|
26 | TEMP_SENSE_DDR = 0x00;
|
27 |
|
28 |
|
29 | PORTB = 0xFF;
|
30 | _delay_ms(1000);
|
31 | PORTB = 0x00;
|
32 |
|
33 | while (1)
|
34 | {
|
35 | PORTC = ~0x02;
|
36 | PORTD = 0x10;
|
37 | _delay_ms(250;
|
38 |
|
39 | // LED leuchtet
|
40 |
|
41 | PORTC = ~0x04;
|
42 | PORTD = 0x10;
|
43 | _delay_ms(250);
|
44 | PORTD = 0x08;
|
45 | _delay_ms(250);
|
46 |
|
47 | // Keine LED Leuchtet
|
48 | }
|
Alle LEDs funktionieren. Wenn ich manuell die Transistoren schalte,
leuchten alle LEDs. Der Ausgang am Prozessor macht aber beim zweiten
Teil überhaupt nichts. Am PortD werden die Ausgänge auf High gesetzt, am
PortC bleiben sie konstant high. Nur die Portpins PC0 und PC1 lassen
sich schalten.
Ein Kurzschluss vom Löten ist ausgeschlossen.
Liegt es am Programm, oder am Prozessor?
Grüße
M. Schwaikert