Tja ich probiere jetzt schon einige zeit damit rum aber ich kriege
keinen Ton raus. Könnt ihr mal gucken ob die SPI Ansteuerung so richtig
ist?
Danke im vorraus!!!!
hier der relevante ausschnitt
1 | int main(void)
|
2 | {
|
3 |
|
4 |
|
5 | // Eingänge //
|
6 | DDRC = 0x00;
|
7 | PORTC= 0xFF;
|
8 |
|
9 | // Ausgänge //
|
10 | DDRB = 0xFF;
|
11 | DDRD = 0xFF;
|
12 |
|
13 | PORTB |= (1<<PB2);
|
14 |
|
15 | // Initialisierungen //
|
16 | lcd_init();
|
17 | encode_init();
|
18 |
|
19 |
|
20 | SPCR = (1 << SPE) | (1 << MSTR)| (1<<SPR1);
|
21 |
|
22 | // Variablen //
|
23 |
|
24 | ukw = 8888;
|
25 | kanal = 0;
|
26 | zsp =0;
|
27 |
|
28 | // Anschalten im analogen Modus //
|
29 | PORTB &= ~(1<<PB2);
|
30 | spi(0x48); // CTL
|
31 | spi(0x01); // CMD
|
32 | spi(0xC0); //
|
33 | spi(0x05);
|
34 | spi(0x00);
|
35 | spi(0x00);
|
36 | spi(0x00);
|
37 | spi(0x00);
|
38 | spi(0x00);
|
39 | PORTB &= ~(1<<PB2);
|
40 |
|
41 | PORTB &= ~(1<<PB2);
|
42 | spi(0x80);
|
43 | status = empf();
|
44 | PORTB &= ~(1<<PB2);
|
45 |
|
46 | _delay_ms(50);
|
47 | _delay_ms(50);
|
48 | _delay_ms(50);
|
49 | _delay_ms(50);
|
50 |
|
51 | /////////////////////////////////////////////////////////////////////////////////////////////
|
52 |
|
53 |
|
54 | /*
|
55 |
|
56 | // LCD Anzeige //
|
57 | lcd_setcursor( 0, 1 );
|
58 | lcd_string("Sendername");
|
59 |
|
60 |
|
61 |
|
62 | lcd_setcursor( 0, 2 );
|
63 | lcd_string("Sendertext");
|
64 |
|
65 | */
|
66 | lcd_setcursor( 8, 1 );
|
67 | char Buffer[20]; // in diesem {} lokal
|
68 | itoa( ukw, Buffer, 10 );
|
69 | lcd_string(Buffer);
|
70 |
|
71 | // UKW Frequenz setzen //
|
72 | PORTB &= ~(1<<PB2);
|
73 | spi(0x48); // CTL
|
74 |
|
75 | spi(0x20);
|
76 | spi(0x00);
|
77 | spi(ukw); //
|
78 | spi(ukw >> 8); //
|
79 | spi(0x00);
|
80 | spi(0x00);
|
81 | spi(0x00);
|
82 | spi(0x00);
|
83 | PORTB &= ~(1<<PB2);
|
84 |
|
85 | PORTB &= ~(1<<PB2);
|
86 | spi(0x80); // CTL
|
87 | status = empf();
|
88 | PORTB &= ~(1<<PB2);
|
89 |
|
90 |
|
91 |
|
92 |
|
93 | /////////////////////////////////////////////////////////////////////////////////////////////
|
94 | // Hauptschleife //
|
95 | /////////////////////////////////////////////////////////////////////////////////////////////
|
96 | while(1)
|
97 | {
|
98 |
|
99 |
|
100 |
|
101 |
|
102 | switch (kanal)
|
103 | {
|
104 | case 0:
|
105 |
|
106 |
|
107 |
|
108 | lcd_setcursor( 8, 1 );
|
109 | char Buffer[20]; // in diesem {} lokal
|
110 | itoa( ukw, Buffer, 10 );
|
111 | lcd_string(Buffer);
|
112 |
|
113 |
|
114 | // if(zsp != ukw) {
|
115 |
|
116 | // UKW Frequenz setzen //
|
117 | PORTB &= ~(1<<PB2);
|
118 | spi(0x48); // CTL
|
119 |
|
120 | spi(0x20);
|
121 | spi(0x00);
|
122 | spi(ukw); //
|
123 | spi(ukw >> 8); //
|
124 | spi(0x00);
|
125 | spi(0x00);
|
126 | spi(0x00);
|
127 | spi(0x00);
|
128 | PORTB &= ~(1<<PB2);
|
129 |
|
130 | PORTB &= ~(1<<PB2);
|
131 | spi(0x80); // CTL
|
132 | status = empf();
|
133 | PORTB &= ~(1<<PB2);
|
134 | //}
|
135 | /////////////////////////////////////////////////////////////////////////////////////////////
|
136 | // RDS Empfang //
|
137 | /////////////////////////////////////////////////////////////////////////////////////////////
|
138 | PORTB &= ~(1<<PB2);
|
139 | spi(0x48);
|
140 |
|
141 | spi(0x24);
|
142 | spi(0x01);
|
143 | spi(0x00);
|
144 | spi(0x00);
|
145 | spi(0x00);
|
146 | spi(0x00);
|
147 | spi(0x00);
|
148 | spi(0x00);
|
149 | PORTB &= ~(1<<PB2);
|
150 |
|
151 | PORTB &= ~(1<<PB2);
|
152 | spi(0xC0);
|
153 | status = empf();
|
154 | resp1 = empf();
|
155 | resp2 = empf();
|
156 | resp3 = empf();
|
157 | resp4 = empf();
|
158 | resp5 = empf();
|
159 | resp6 = empf();
|
160 | resp7 = empf();
|
161 | resp8 = empf();
|
162 | resp9 = empf();
|
163 | resp10 = empf();
|
164 | resp11 = empf();
|
165 | resp12 = empf();
|
166 | PORTB &= ~(1<<PB2);
|
167 |
|
168 |
|
169 | // RDS Radio Text //
|
170 | gty = resp6 >> 4;
|
171 |
|
172 | if (gty == 0b0010)
|
173 | {
|
174 | lcd_setcursor( 0, 2 );
|
175 | lcd_data(resp8);
|
176 | lcd_data(resp9);
|
177 | lcd_data(resp10);
|
178 | lcd_data(resp11);
|
179 | }
|
180 |
|
181 | // RDS Sendername //
|
182 | gty = resp6 >> 4;
|
183 |
|
184 | if (gty == 0)
|
185 | {
|
186 | lcd_setcursor( 0, 1 );
|
187 | lcd_data(resp10);
|
188 | lcd_data(resp11);
|
189 | }
|