Hallo zusammen :)
Ich habe ein Problem bei folgender Schaltung.
Das Programm soll den Zahlenwert des DTMF am Display ausgeben.
Wenn ich dem DTMF-Decoder eine 8 oder 9 signalisiere, wird diese nicht
auf dem Display angezeigt, er bleibt beim vorherigen Wert. Das Programm
sollte eigendlich fehlerfrei sein. Wenn ich jedoch an PortC4 ein
Messgerät anschließe (es reicht schon wenn ich nur einen Messfühler dran
halte, üblicherweise messe ich dann gegen Masse, Ergebnis = 0) wird der
richtige Wert angezeigt. Es werden die richtigen Werte vom Decoder
ausgegeben.
Ich wäre dankbar wenn ihr mir helfen könntet.
1 | #include <avr/io.h>
|
2 | #define F_CPU 3686400UL
|
3 | #include <util/delay.h>
|
4 | #include <avr/interrupt.h>
|
5 | #include <stdbool.h>
|
6 |
|
7 | uint8_t segcodeB[10];
|
8 | bool segcodeD[10];
|
9 | uint8_t temp = 0;
|
10 | int main(void)
|
11 | {
|
12 | //welche Zahl welche leuchtenden Segmente
|
13 | // = 0b00gfedcb
|
14 | segcodeB[0] = 0b00011111;
|
15 | segcodeB[1] = 0b00000011;
|
16 | segcodeB[2] = 0b00101101;
|
17 | segcodeB[3] = 0b00100111;
|
18 | segcodeB[4] = 0b00110011;
|
19 | segcodeB[5] = 0b00110110;
|
20 | segcodeB[6] = 0b00111110;
|
21 | segcodeB[7] = 0b00000011;
|
22 | segcodeB[8] = 0b00111111;
|
23 | segcodeB[9] = 0b00110111;
|
24 | // = a
|
25 | segcodeD[0] = 1;
|
26 | segcodeD[1] = 0;
|
27 | segcodeD[2] = 1;
|
28 | segcodeD[3] = 1;
|
29 | segcodeD[4] = 0;
|
30 | segcodeD[5] = 1;
|
31 | segcodeD[6] = 1;
|
32 | segcodeD[7] = 1;
|
33 | segcodeD[8] = 1;
|
34 | segcodeD[9] = 1;
|
35 | //4 7seg Displays ansteuerbar machen + Element A
|
36 | DDRD &=~(1<<PD3)|(1<<PD4)|(1<<PD5)|(1<<PD6)|(1<<PD7);
|
37 | //Elemente b-g ansteuerbar machen
|
38 | DDRB &=~(1<<PB0)|(1<<PB1)|(1<<PB2)|(1<<PB3)|(1<<PB4)|(1<<PB5);
|
39 | PORTD|=(1<<PD2);
|
40 | PORTC |=(1<<PC0)|(1<<PC1)|(1<<PC2)|(1<<PC3);
|
41 | MCUCR=0b00000011;
|
42 | GICR=0b01000000;
|
43 | sei();
|
44 |
|
45 | while(1)
|
46 | {
|
47 | temp = PINC;
|
48 | if (temp<10)
|
49 | {
|
50 | PORTD=(1<<PD3)|(segcodeD[temp]<<PD7);
|
51 | PORTB=segcodeB[temp];
|
52 | }
|
53 | else
|
54 | {
|
55 | }
|
56 | }
|
57 |
|
58 | }
|