Forum: Mikrocontroller und Digitale Elektronik SI 4735 SPI Ansteuerung


von Pumukle (Gast)


Lesenswert?

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
      }

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.