VW Beta CDC emulator

Gast #4188360
Lesenswert?
• ▲
▼
Hallo
ich bin gerade dabei einen CDC emulator zu bauen trete jedoch seit tagen 
auf der stelle. in der theorie sieht das echt machbar aus und es gibt 
auch einige seiten auf denen man das eigentlich alles nachlesen kann. 
nur ich habe alles ausprobiert und bekomme einfach nicht das "no cd 
Changer" vom display weg. kann ich einfach immer die sequenz
0x74,0xBE,0xFE,0xFF,0xFF,0xFF,0x00,0x7C
sender oder muss ich vorher noch etwas anderes initialisiren? in sachen 
intervall habe ich auch viel verschiedenes gelesen. viele verwenden 
einen intervall von 41ms andere sagen dass es einmal in der sekunde 
reicht das zu senden.
mein radio ist ein Beta V und als Controller verwende ich einen 
Attiny2313A
vielen dank schonmal im vorraus!
Carl
Angehängte Dateien:
#4188971
Lesenswert?
• ▲
▼
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.
#4189352
Lesenswert?
• ▲
▼
Hardwaremäßig ist alles richtig angeschlossen? Poste mal deine 
Schaltung.
Portpins, Porteinstellungen passen alle?

Ansonsten musst du die Fuses natürlich entsprechend deiner Taktfrequenz 
setzen. In deinem Code hast du 8MHz für F_CPU gesetzt, das sollte passen 
mit CLKDIV8 nicht gesetzt.
Ich glaube, ich hatte bei mir die Fuses auf default gelassen, also 8MHz 
interner Oszilator mit CLKDIV8 = 1MHz.

Kannst du die Taktfreuenz nachvollziehen? Mit einer LED? Hast du sonst 
Messmittel (Oszi?)

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.