SI 4735 SPI Ansteuerung

Gast #2263480
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
      }

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren