Atmega16 mit iPod kommunizieren lassen

OP #1875906
Lesenswert?

Hallo,

ich sitze seit ein paar Tagen daran meinen atmega16 über die serielle 
Schnittstelle mit dem iPod zu verbinden.

Hier im Forum scheinen einige Leute zu sein, die dies schon geschafft 
haben.

Allerdings gibt es hier nirgendwo Code, den ich einfach kopieren könnte.

Mein Programm soll dem iPod den Befehl "play" übermitteln.


Seht ihr einen offensichtlichen Fehler?


Mein iPod ist folgendermaßen verschaltet:
http://stud3.tuwien.ac.at/~e0026607/ipod_remote/ipod_dock_pinout.html


Viele Grüße
Tobi
Angehängte Dateien:
#1876058
Lesenswert?

Wieso eigentlich die Delays nach jedem Byte? Das ist nicht nötig. Ich 
hatte das mal auf einem MSP430 gemacht, ging auf Anhieb. Ich bild mir 
auch ein, den Code hier schon mal gepostet zu haben....im Anhang nochmal 
aus meinem Projekt. Wichtig sind die Konstanten-Arrays und die 
BuildIPodMessage() Funktion. Der Rest gehört zu einem RC5 -> IPod 
Umsetzer. Vielleicht hilft es. Achso, PutSingleChar() musst du natürlich 
passend implementieren, oder durch dein uart_put_char ersetzen.
Angehängte Dateien:
OP #1878668
Lesenswert?

So... ich hatte ein anderes "play" als christian.
Der Befehl von Christian ist um ein byte länger. einmal 0x00 mehr.

http://nuxx.net/wiki/Apple_Accessory_Protocol#Advanced_Remote_.28Mode_4.29
auf dieser Seite ist "play" mit nur zwei byte angegeben.

Hab's verändert. Funktioniert immernoch nicht.

Ich glaube auch eher, dass mein "play" richtig ist.

Also die F_CPU hab ich mit großer Sicherheit richtig eingestellt. 
Sämtliche andere Projekte funktionieren. Auch LED-blinken im 
Ein-Sekunden-Takt.

Eine Kommunikation zwischen zwei Mikrocontrollern funktioniert auch.

Hm... Da keiner sagt, dass mein Code falsch ist, denke ich, dass die 
Kontakte am iPod nicht korrekt sind.

Was ich mich die ganze Zeit schon Frage ist: Muss der iPod wissen, mit 
welcher Baudrate der Befehl ankommt? Mein Mikrocontroller muss das 
nämlich wissen, aber auf allen Internetseiten für iPod Accessory 
Protocol steht, dass 19200 Baud normal sind, aber dass auch ander 
Baudraten funktionieren.

@christian: Welche Baudrate benutzt du eigentlich?


p.s: schonmal vielen Dank für die ersten Tipps.
#1878761
Lesenswert?

Ich habe 19200 Baud benutzt. Generiert aus einem 3,6867 MHZ Quarz auf 
dem MSP430. Da ich die Timer-UART genommen habe, hab ich da den 
Baudratenquarz verwendet. Hast du auch richtig gezählt am Stecker? Und 
der Widerstand, mal einen anderen probiert? Ist deine Spannung am AVR 
auch 3,3V? Der IPod hat ein 3,3V Interface da dran.

Nochmal hier: http://pinouts.ru/PortableDevices/ipod_pinout.shtml und 
hier: http://www.adriangame.co.uk/ipod-acc-pro.html vergleichen, ob das 
alles passt.
OP #1878954
Lesenswert?

ich hab einfach einen poti als spannungsteiler genommen.... das liegen 
jetz ungefähr 3,4V an. am tx vom µc bzw. am rx vom iPod.

ich hab mal am tx vom iPod gemessen... da liegen weniger als 3V an... 
ist das falsch?

Ich glaube den Widerstand zu wechseln macht keinen sinn... das sind 
definitiv 500k
#1879079
Lesenswert?

Stimmt, 500k ist korrekt, das hab ich nochmal nachgeschaut. Dann wirds 
am Protokoll liegen. Mein Code den ich gepostet habe, funktioniert auf 
jeden Fall mit dem IPod Touch. Wieso da jetzt einen Längendiskrepanz 
ist, weiß ich aus dem Stegreif jetzt auch gerade nicht mehr. Müsste ich 
zu Hause nochmal nachschauen, ob das wirklich der aktuelle Code war.
Hast du mal andere Kommandos getestet?

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