Hallo ich bin's schon wieder. Ich will auf einem FPGA ein ISP Modul zum Programmieren eines Softcores implementieren. Der ISP-Programer nennt sich mySmartUSB light. Mein Modul tut mittlerweile auch das was ich will, was ich vom ISP-Programer nicht behaupten kann. Mit dem Protokoll habe ich mich nach den Datasheets von Atmel orientiert (Siehe Atmega328 Datasheet, 31.8). Beim starten eines Programmiervorgangs wird dabei immer dieser Command gesendet: 0b 10101100 01010011 000000 000000. Der Controller antwortet (auf MISO) beim 3. Byte mit dem empfangenen 2. Byte (also 0101001). Dabei wird der Wert von MISO mit der fallenden Taktflanke eingelesen (siehe Bild). Ich habe den Vorgang mit dem Oszilloskop gemessen (Bild). Nur leider sagt der Programer: timeout beim starten des Programmiervorgangs. Man sieht auch auf dem Oszi das der Programmer den Startbefehl mit fallender SCK-Frequenz mehrmals sendet. Er akzeptiert also die Antwort meines FPGAs nicht, welcher aber genau das macht, was im Datasheet beschrieben ist! Kann da mal jemand drüber schauen, vielleicht hab ich mal wieder etwas Offensichtliches übersehen... verwendeter ISP-Programer: http://shop.myavr.de/Systemboards%20und%20Programmer/mySmartUSB%20light%20-%20AVR%20ISP%20Programmer.htm?sp=article.sp.php&artID=200006 Eingestellt ist der Atmega328. Atmel Datasheet: http://www.atmel.com/Images/Atmel-42735-8-bit-AVR-Microcontroller-ATmega328-328P_Datasheet.pdf Atmel Appnote ISP-Protokoll: http://www.atmel.com/Images/Atmel-0943-In-System-Programming_ApplicationNote_AVR910.pdf
Hier mein zweiter Versuch, in dem das Datenbit von MISO bei der steigenden SCK-Flanke anliegt. Funktioniert auch nicht!
Und hier habe ich noch die Messdaten von einer erfolgreichen Übertragung auf einen Atmega.
Also, das Problem lag daran das der Programer noch weitere Abfragekommandos ausführt. Wenn keine passenden Antworten vom FPGA kommen, bricht er ab. Hab jetzt die benötigten Befehle noch implementiert und jetzt geht's.
M. M. schrieb: > Also, das Problem lag daran das der Programer noch weitere > Abfragekommandos ausführt. Magst du auch verraten, welche?
S. R. schrieb: > Magst du auch verraten, welche? So sieht der Ablauf (gesendete Befehle für EEPROM Programmierung) aus: // Beginn -Programming Enable -Read Signature Byte (0-2) // Programmierung while( nicht alle Bytes geschrieben ){ -Write EEPROM Memory -Read EEPROM Memory } // Abschließende (nochmalige) Kontrolle der Daten while{ nicht alle Adressen gelesen } -Read EEPROM Memory }
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.