Du schickst:
send_package(0x74,0xBE,0xFE,0xFF,0xFF,0xFF,0x00,0x7C);
mit 500 ms Abstand. Die letzten 3 Byte sind bei mir anders, außerdem
kommt mir das Delay von 300µs zwischen den einzelnen Bytes etwas kurz
vor.
Bei meinem CDC-Emulator habe ich folgende Paramter für ein Skoda
Symphony genutzt (sollte bei dir trotzdem funktionieren):
1 | void SpiInit(void)
|
2 | {
|
3 | DDRB |= (1<<PB7)|(1<<PB6); // UCLK und DO als Ausgang
|
4 | // USICR |= (1<<USIWM0)|(1<<USICS1)|(1<<USICLK)|(1<<USITC); //Three wire mode, clock source externeal-positive edge, output clock on pb7
|
5 | }
|
6 |
|
7 | unsigned char master_trans(unsigned char byte)
|
8 | {
|
9 |
|
10 | USIDR=byte; //data to be sent
|
11 | USISR=(1<<USIOIF); //set counter overflow flag
|
12 | do
|
13 | {
|
14 | USICR= (1<<USIWM0)|(1<<USICS1)|(1<<USICS0)|(1<<USICLK)|(1<<USITC); //send data bits
|
15 | }
|
16 | while (!(USISR&(1<<USIOIF))); //when 8 bits shifted out, overflow flag will be cleared
|
17 | _delay_us(700); //delay between bytes sent in one frame
|
18 | return USIDR; //return received data in case data from radio is processed (RC-5 similar protocol)
|
19 | }
|
20 |
|
21 | //send 0x74,0xBE,0xFE,0xFF,0xFF,0xFF,0xCF,0x7C
|
22 |
|
23 | void OpenSymphonyAux (void)
|
24 | {
|
25 | master_trans (0x74);
|
26 | master_trans (0xBE); //disc
|
27 | master_trans (0xFE); //track
|
28 | master_trans (0xFF); //min
|
29 | master_trans (0xFF); //sec
|
30 | master_trans (0xFF); //state
|
31 | master_trans (0xCF);
|
32 | master_trans (0x7C);
|
33 |
|
34 | //state:
|
35 | //Value 0x00 0x10 0x20 0x04 0x08
|
36 | //Info normal scan random random repeat
|
37 | }
|
700µs zwischen den einzelnen Bytes, mit einem Intervall von 10ms, statt
wie bei dir 500ms.
Funktioniert bei mir, aber aus irgendeinem Grund sagt er bei CD4 - no
cd. Geht trotzdem. Ist auch ein Tiny 2313, mit nativem SPI.