Archiv verlassen und diese Seite im Standarddesign anzeigen : Programmierschnittstellen ATMEL µC
AVRprogger91
16.12.2016, 16:46
Hallo zusammen,
ich habe eine Frage an euch.
Es gibt ja mehrere Möglichkeiten auf einen µC das Programm das man geschrieben hat aufzuspielen.
Ich habe das bis jetzt immer mit "ISP" -> In System Programming gemacht.
Das sind die am häufigsten verwendeten Programmierschnittstellen:
ISP
TDI
PDI
JTAG
Nun frage ich mich ob alle Programmierschnittstellen die ISP-Programmierung unterstützen?
JTAG und SPI können das.
Wie sieht es mit den anderen aus?
Wann verwende ich welche Schnittstelle?
MfG
OK:
1. Alle mir bekannten ATMEL AVR Controller können ISP = In System Programming.
Das bedeutet der Controller kann in der Zielschaltung programmiert werden, wenn man eine entsprechende Buchse vorsieht.
Problematisch ist das nur, wenn auf einer der genutzen Schnittstellen ( MISO, MOSI, SCK, Reset ) eine niederohmige Last oder festes Potential liegt.
Ausserdem darf der Reset Pin nicht per Fuse abgeschaltet werden. Zudem muss der Controller einen geeigneten Takt haben - Die Fuses müssen dafür richtig gesetzt sein.
2. High Voltage Programming geht auch mit jedem Controller.
Da hierbei einige Pins mit höheren Spannungen als 5V beaufschlagt werden kann man das üblicherweise in der Zielschaltung nicht machen.
Also Chip in den Programmer und dann erst in die Zielschaltung einbauen.
Dafür ist dann auch kein Takt oder sonstwas nötig.
3. JTAG ist eigentlich eine Debug Schnittstelle die bei den AVR's aber erst ab dem ATMEGA 16 funktioniert. Da hierbei während des Debug Vorgangs Breakpoints in das Programm eingefügt werden, ist auch eine Programmierung über JTAG möglich. JTAG benötigt exklusiv ein paar Pins die dann in der Zielschaltung nicht vernünftig genutzt werden können.
4. Die letzte Progrmmierschnittstelle ist, soweit ich mich entsinne PDI. Die geht nur bei relativ neuen AVR's und läuft ähnlich wie ISP - Direkt gearbeitet hab ich damit aber noch nicht.
Was benutzt man denn nun.
Wenn's ums debuggen geht ist wohl JTAG eine gute Alternative. Auch wenn JTAG Interfaces relativ teuer sind.
Am flexibelsten ist wohl ISP auch wenn man dabei ein paar Sachen falsch machen kann.
High Voltage Programming ist dann interessant, wenn man einen Controller "verfused" hat, oder kleine Serien auflegen will. Auch die Programmer dafür sind nicht gerade billig.
PDI geht nur bei Controllern der neueren Generation und dürfte dann ähnlich nutzbar sein wie ISP.
Da ich natürlich nicht alle jemals gebauten AVR Controller kennen kann, bitte ich eventuelle Fehler zu Entschuldigen und zu Berichtigen!
Wenn man's ganz genau wissen will, muss man das Datenblatt zu Rate ziehen.
Manchmal sind die ISP Pins nicht dort wo man sie erwarten würde z.B. ATMEGA 128
Peter(TOO)
16.12.2016, 19:43
3. JTAG ist eigentlich eine Debug Schnittstelle die bei den AVR's aber erst ab dem ATMEGA 16 funktioniert. Da hierbei während des Debug Vorgangs Breakpoints in das Programm eingefügt werden, ist auch eine Programmierung über JTAG möglich. JTAG benötigt exklusiv ein paar Pins die dann in der Zielschaltung nicht vernünftig genutzt werden können.
JTAG (Joint Test Action Group) war eigentlich ursprünglich nur für den Test von bestückten Leiterplatten gedacht und ist eine IEEE-Norm.
Die Idee war, dass wenn man alle Pins eines ICs setzen und Lesen kann, man eine bestückte leiterplatte auf das Vorhandensein aller Verbindungen und Kurzschlüsse testen kann. Dazu bekam dann jedes IC ein Schieberegister, welches im Testmodus mit den Pins verbunden ist. Diese Schieberegister lassen sich dann noch in Serie schalten.
Der nächste Schritt war es dann auch interne Funktionen eines ICs testen zu können.
Daraus entstanden dann auch noch die Möglichkeiten zum Debuggen und Programmieren.
Die Hardware-Schnittstelle ist unabhängig vom Hersteller genormt. Das Protokoll besteht dann aus allgemein genormten Befehlen und solchen die Hersteller-, bzw. IC-Spezifisch sind.
ISP (In System Programming) ist eigentlich ein Oberbegriff und sagt nur etwas über den Einsatz der Schnittstelle aus. JTAG ist auch ISP.
Ausser JTAG sind alle anderen Interface herstellerspezifisch und je nach IC-Familie und Generation auch sehr unterschiedlich.
MfG Peter(TOO)
AVRprogger91
16.12.2016, 22:26
Und SPI -> Serial Peripheral Interface sagt eigentlich nur aus, das es sich um eine Serielle Schnittstelle handelt.
Das heißt, dass folgende Schnittstellen zu SPI gehören:
ISP, JTAG, PDI, TDI,
da sie ja alle seriell arbeiten.
Stimmt das so?
Die Schnittstellen sind wohl seriell.
Allgemein wird aber mit SPI eine Schnittstelle bezeichnet die seriell Peripherie ansteuert.
Dabei steuert ein Master einen bzw. mehrere Slaves an.
Üblicherweise werden dafür die Ports MISO, MOSI, SCK und pro Slave Chip eine eigene ENABLE Leitung benutzt.
Bei vielen ATMEL Controllern werden dann diese Pins + Reset auch für die ISP Programmierung benutzt - Aber nicht bei allen.
JTAG ist im Prinzip auch ISP, spricht man allerdings in der ATMEL Welt von ISP ist meistens die 6 oder 10 Polige ISP Programmier- Schnittstelle gemeint.
Jedes Programmiergerät kann eine, zwei, oder sogar 3 Schnittstellen bedienen.
Also richtet man sich als Hobbyist danach, welchen Programmer man hat, oder wie viel Geld man für ein Programmiergerät ausgeben mag.
Vorschlag:
Schnapp Dir mal ein Datenblatt von nem ATMEGA 16 und guck in der entsprechenden Rubrik, wie die Schnittstellen funktionieren.
Ist zwar viel Text, aber sehr lehrreich.
Counterfeiter
18.12.2016, 12:01
ISP = bei Tinys und Megas verbreitet, nur programmieren (4 Leitungen + GND, VCC)
PDI = bei den XMegas verbreitet, programmieren und debuggen (2 Leitungen + GND, VCC)
debugWire = bei den Tiny verbreitet, programmieren und debuggen (1 Leitung + GND, VCC)
JTAG = bei AVR von Mega bis 32 bit zu finden, programmieren und debuggen (min. 4 Leitungen + GND, VCC)
TDI = ein Signal der JTAG Leitung?! Sonst mir nicht bekannt...
Immer schön darauf achten welcher Controller was kann. Mit ISP fährt man IMO bei Atmel am schlechtesten, da man viele Leitungen hat und nicht ordentlich debuggen kann.
AVRprogger91
12.01.2017, 12:04
Und das "High Voltage Programming" bezeichnet man als HVSP, stimmt das?
TDI ist eine der Leitungen, so wie Du es gesagt hast.
Sorry, mein Fehler!
Könnt Ihr mir auch bei meinen anderem Problem Helfen?
Es geht um die HID eibindung in einen µC.
Thema wurde im C-Softwarebereich bereits erstellt.
MfG
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.