Hi,
habe folgenden Code... in den kommentaren steht, was der code macht, wie
ich es glaube. bei google habe ich soweit auch nichts gefunden und mein
c-buch ist noch auf dem weg.
1 | void set(void) {
|
2 | muster[0][0] = 0b111111111;
|
3 | muster[0][1] = 0b111111111;
|
4 | muster[0][2] = 0b111111111;
|
5 | muster[1][0] = 0b011111111;
|
6 | muster[1][1] = 0b011111111;
|
7 | muster[1][2] = 0b011111111;
|
8 | muster[2][0] = 0b111111101;
|
9 | muster[2][1] = 0b111111101;
|
10 | muster[2][2] = 0b111111101;
|
11 | muster[3][0] = 0b111111110;
|
12 | muster[3][1] = 0b111111110;
|
13 | muster[3][2] = 0b111111110;
|
14 | }
|
15 |
|
16 |
|
17 | void multiplexSetColumns0(int ntesmuster) {
|
18 | set();
|
19 | PORTC = (muster[ntesmuster][0]>>1); //Dies funktioniert in der praxis
|
20 | uint16_t fuerporta = muster[ntesmuster][0]; // bei ntesmuster=3 gilt: fuerporta = 0b111111110
|
21 | fuerporta &= ~(0b111111110); // fuerporta = 0b000000001
|
22 | fuerporta = (fuerporta<<3); // fuerporta = 0b000001000
|
23 | PORTA = (fuerporta | PORTA); // wenn PORTA vorher 0b00000011 war, dann ist es nun PORTA = 0b00001011
|
24 | }
|
Der pullup an PORTA am 4. pin sollte somit ausgeschaltet sein, dass
heisst auf masse liegen. Dem ist jedoch nicht so... bevor ich die arrays
eingeführt hatte, habe ich normale uint16_t variablen verwendet, und da
hat es noch funktioniert... ich komme desshalb auch echt nicht auf eine
lösung...