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
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.
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.
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.
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
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?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.