Hallo, ich wollte mal zu Testzwecken einen Atmel Atmega328p mit einem ISP-Programmer programmieren. Dazu habe ich mir folgenden Programmer geholt: https://www.amazon.de/ISP-Programmer-Adapter-STK500-ATmega-ATtiny/dp/B00IYNAXUC/ref=sr_1_5?ie=UTF8&qid=1487491568&sr=8-5&keywords=tremex Ich habe also auf einem Breadboard einen Atmega328p. Dieser wird mit 5V von einem 7805 versorgt. Vcc und Avcc sind mit dem Pluspol und die beiden GND-Pins mit dem Minuspol verbunden. Zusätzlich ist ein 0,1µF Kondensator zwischen Vcc und GND geschaltet. An dem Resetpin ist ein 10k-Widerstand an Vcc angeschlossen. Die Pins des Diamex-ISPs sind mit den entsprechenden Pins am µC angeschlossen (SCK, MISO, MOSI, RESET). Zum Testen ist habe ich eine einfache LED, welche blinken soll. Wenn ich jedoch das Programm flashen will, erhalte ich immer Fehlermeldungen (s. Anhang). Das Hostsystem ist ein Windows 10 x64. Kann mir jemand helfen oder vielleicht ein Tipp geben? Gruß, Freddy
Hallo Freddy, versuche malin Bascom bei Options->Programmer: 'USBprogProgrammer/AVR ISP MkII' Deinen Progger kenne ich nicht. Ich benutze seit einigen Jahren eine Diamex AllAvr. Deiner wird wohl ähnlich sein. 73 Wilhelm
Schau mal da: http://www.diamex.de/dxshop/USB-ISP-Programmer-fuer-Atmel-AVR-Rev2 Atmel Studio muss installiert sein. Kontrollier mal unter Systemsteuerung/System/Hardware/Gerätemanger ob der Jungo Treiber installiert ist, ohne den gehts nicht.
Wilhelm S. schrieb: > versuche malin Bascom bei Options->Programmer: > > 'USBprogProgrammer/AVR ISP MkII' Klappt leider nicht. Er sagt, er findet keine USB-Device mit "MK2". Heinz V. schrieb: > Atmel Studio muss installiert sein. Kontrollier mal unter > Systemsteuerung/System/Hardware/Gerätemanger ob der Jungo Treiber > installiert ist, ohne den gehts nicht. Version 7 ist ok? Oder doch lieber eine ältere? Ich hatte das schon einmal installiert, aber da ging es auch nicht. Ich kann es aber gerne nochmal installieren.
http://www.diamex.de/dxshop/USB-ISP-Programmer-fuer-Atmel-AVR-Rev2 Du kannst dort evtl. notwendige Treiber runterladen.
Freddy L. schrieb: >> 'USBprogProgrammer/AVR ISP MkII' > > Klappt leider nicht. Er sagt, er findet keine USB-Device mit "MK2". Kann auch nicht denn das ist ein STK500. Steht doch in der verlinkten Artikelbeschreibung.
Heinz V. schrieb: > Du kannst dort evtl. notwendige Treiber runterladen. Angeblich braucht man die unter Win10 nicht. Ich werde es mal trotzdem versuchen. Bin momentan unterwegs.
Freddy L. schrieb: > Angeblich braucht man die unter Win10 nicht. Braucht man dort tatsächlich nicht. Kann man ganz einfach verifizieren: Man zieht den Programmer ab und schaut sich im Gerätemanager die Liste der "Anschlüsse (COM und LPT)" an. Dann steckt man das Teil dran und beobachtet die Liste. Hier sollte ein neuer COM-Port auftauchen. Das ist dann der gesuchte Programmer und auch alles, was nötig ist, um ihn zu benutzen. Natürlich muss man die Software auf die Nummer eben dieses COM-Ports einstellen und als Protokoll STK500v2. Damit sollte auf jeden Fall erstmal der Programmer selber erreichbar sein. Überprüfen läßt sich das, indem man die ISP-Geschwindigkeit einstellt oder die Targetspannung anzeigen läßt. Geht das, ist die Anbindung des Programmers selber OK. Alles andere sind dann Probleme in der Verkabelung zwischen Programmer und Target, bei der Beschaltung des Targets oder bei dessen Taktsystem.
c-hater schrieb: > Überprüfen läßt sich das, indem man die ISP-Geschwindigkeit > einstellt oder die Targetspannung anzeigen läßt. Geht das, ist die > Anbindung des Programmers selber OK. In Atmel Studio habe ich das schon hinbekommen. Ich weiß leider nicht, was das alles für Takte sind und was sie bewirken. Hättest du irgendeine Quelle zum Nachlesen? Ich werde selber aber auch noch mal schauen.
Den Jungo treiber brauchst du ganz sicher nicht. Den braucht man nur für Programmer, die KEINEN seriellen Port emulieren. Ebenso brauchst du keinen libusb Treiber, aus dem selben Grund. Benutze mal zum Vergleich avrdude, das Programm gibt detailliertere Fehlermeldungen aus. Download: http://download.savannah.gnu.org/releases/avrdude/avrdude-6.3-mingw32.zip Befehl: avrdude -c stk500v2 -P COM1 -p atmega328p -vvv Wenn dein COM-Port eine zweistellinge Nummer hat, dann schreibe: -c \\.\COM10
Stefan U. schrieb: > Befehl: avrdude -c stk500v2 -P COM8 -p atmega328p -vvv Hat leider nicht geklappt (s. Anhang). EDIT: COM-Port habe ich über den Geräte-Manager ermittelt. Sowohl Port 10 als auch Port 8 haben nicht funktioniert. Beim Port 10 musste ich jedoch den Parameter anpassen, da "-c" den Programmer setzt (s. "avrdude -h")
:
Bearbeitet durch User
Die Fehlermeldung kommt dann, wenn der COM Port nicht existiert. Bist du sicher, dass dein Programmer COM8 verwendet? Und warum hast du dann COM10 versucht? Wie wird dein Programmer im Gerätemanager angezeigt?
Ich habs über den Geräte-Manager ermittelt. Da steht auch der COM-Port dahinter. Wenn man in den Erweiterten Einstellungen schaut, kann man auch manuell einen COM-Port definieren. Da habe ich mal den nächsten freien ausgewählt, weil bei den anderen belegt dahinter stand.
Ok, dann ist zumindest momentan COM10 richtig. Aber die Fehlermeldung "Das System kann die angegebene Datei COM10 nicht finden" widerspricht dem. Kann es sein, dass du keine Admin Rechte hast? Probier mal einfach zum Vergleich COM6. Das ist zwar ein andere gerät, aber so merkst du, ob dein Windows generell ein Problem damit hat, COM-Ports zu öffnen.
Ist der Atmega auch wirklich fabrikneu, dass heist der interne Oszillator enabled? Falls der 328 schon mal geflasht wurde und die Fuses auf einen externen Quarz gestellt sind, muß ein solcher auch beim Programmieren auf einem Steckbrett angeschlossen werden (+ 2 Kondensatoren).
Stefan U. schrieb: > Aber die Fehlermeldung "Das System kann die angegebene Datei COM10 nicht > finden" widerspricht dem. Kann es sein, dass du keine Admin Rechte hast? Das spielt keinerlei Rolle. Natürlich dürfen auch Nicht-Admins auf COM-Ports zugreifen. Ein Problem könnte aber dumme, nur noch historisch wertvolle Software sein, die COM-Ports nur bis COM9 ansprechen kann. Keine Ahnung, ob BASCOM zu dieser Kategorie gehört. Die Abhilfe gegen dieses Problem bestünde natürlich darin, dem COM-Port im Gerätemanager eine Nummer kleiner 10 zuzuweisen. Achtung: Windows zickt da manchmal rum. Am besten nach der Zuweisung einen Reboot ausführen und dann im Gerätemanager kontrollieren, dass die zugewiesene Nummer tatsächlich benutzt wird.
Quarz? schrieb: > Ist der Atmega auch wirklich fabrikneu Ja sollte er. Ich habe ihn bei Reichelt bestellt. Davor habe ich ihn noch nie benutzt. Sollte also leer sein. Ich habe mal COM6 benutzt, das sieht schonmal besser aus (s. Anhang)
c-hater schrieb: > Die Abhilfe gegen dieses Problem bestünde natürlich darin, dem COM-Port > im Gerätemanager eine Nummer kleiner 10 zuzuweisen. Aber das hat vorher doch auch schon nicht funktioniert! Über modernere Software wie Atmel Studio 7 und über die Arduino IDE 1.8.1 funktioniert es auch nicht. Hättest du vielleicht noch eine andere Idee? Gruß, Freddy
Freddy L. schrieb: > Über modernere Software wie Atmel Studio 7 und über die Arduino IDE > 1.8.1 funktioniert es auch nicht. Was genau funktioniert nicht? Hast du die beiden Sachen ausprobiert, die ich vorgeschlagen habe und somit den Fehlerbereich eingegrenzt?
@Freddy Wir sind also jetzt darüber hinaus, den COM-Port zu öffnen. Stimmt die Ausgabe "Vtarget 2,6V?" und sind die ungewöhnlichen 2,6V auch gewollt? Mess mal nach. Ich wette, dass dein µC keine ordentliche Spannungsversorgung hat.
Mein Problem ist, dass ich das Ding nicht benutzen kann, um mein einfaches LED-Blink-Programm auf den µC zu brennen. Die COM-Ports habe ich überprüft. Es ist der richtige auch ausgewählt. Die Verkabelung des Targets (Atmega328p) ist minimalistisch: 5V an Vcc und Avcc, 2x GND an GND. Außerdem die SCK, MISO, MOSI Pins an die entsprechenden Pins des µC. Reset am Reset-Pin. Außerdem 10k-Widerstand von Vcc nach Reset-Pin. Mehr ist da nicht. Und ich finde den Fehler leider nicht.
Stefan U. schrieb: > Stimmt die Ausgabe "Vtarget 2,6V?" und sind die ungewöhnlichen 2,6V auch > gewollt? Mess mal nach. Ich wette, dass dein µC keine ordentliche > Spannungsversorgung hat. Ich benutze eine Externe Spannungsversorgung. Das ist ein 12V-Netzteil, was an einem 7805 angeschlossen ist. Somit liegt die Spannung bei 5V. Die PINs zur Stromversorgung habe ich garnicht am 6PIN-Header angeschlossen. Außerdem sind die Jumper auf dem ISP auch so eingestellt, dass gar keine Spannung anliegen dürfte (s. http://www.diamex.de/dxshop/mediafiles//Sonstiges/erfos-avr-isp2.pdf)
:
Bearbeitet durch User
> 5V an Vcc Aber dein Programmer zeigt 2,6V an. Mess doch mal nach. Wenn der Programmer lügt, ist er kaputt (oder einfach nur das Flachkabel). Wenn er nicht lügt, ist dein Netzteil kaputt. > Die PINs zur Stromversorgung habe ich garnicht am > 6PIN-Header angeschlossen. Das musst du aber machen, zumindest bei den "originalen" Programmieradaptern von Atmel. Die funktionieren sonst nicht, weil ihre Ausgangstreiber sonst keine Stromversorgung haben.
Wenn ich nachmesse, dann kommt der richtige Wert. Jedoch habe ich etwas merkwürdiges entdeckt: Das Pinout im Datenblatt ist völlig falsch. ? -> x x -> GND ? -> x x -> ? ? -> x x -> Vcc (2,66V) Irgendwas stimmt hier nicht.
Freddy L. schrieb: > Das Pinout im Datenblatt ist völlig falsch. > > ? -> x x -> GND > ? -> x x -> ? > ? -> x x -> Vcc (2,66V) > > Irgendwas stimmt hier nicht. Fragezeichen und x? Ich glaub nicht daß das so in irgendeinem Datenblatt steht. Die 6 Pins haben eine eindeutige Nummerierung von 1 bis 6 und im Web sind notfalls haufenweise Bilder zu finden anhand derer man sich an der Nase des Wannensteckers orientieren kann um herauszufinden wo Pin 1 liegt.
> Wenn ich nachmesse, dann kommt der richtige Wert Welcher "richtige" Wert? Welche Spannung liegt an den Pins des Mikrocontrollers an und welche Spannung am anderem Ende des Flachkabels (Stecke notfalls eine Nadel rein, um messen zu können). > Das Pinout im Datenblatt ist völlig falsch. Dort ist es richtig dargestellt: http://makerdude.com/blog/wp-content/uploads/2012/03/icsp_hookup.png
Ok, ich habe mal die Anschlüsse aus dem Datenblatt (s. http://www.diamex.de/dxshop/mediafiles//Sonstiges/erfos-avr-isp2.pdf) genommen und spiegelverkehrt angeschlossen. Jetzt konnte folgenden Code flashen
1 | $regfile = "m328pdef.dat" |
2 | |
3 | Config Portc.5 = Output |
4 | |
5 | Do |
6 | Portc.5 = 1 |
7 | Waitms 800 |
8 | Portc.5 = 0 |
9 | Waitms 800 |
10 | Loop |
11 | |
12 | End |
Jetzt blinkt meine LED aber nicht in einem 800ms Abstand (immerhin blinkt sie), sondern in einem größeren. Liegt das am Takt des µC?
:
Bearbeitet durch User
Vermutlich musst du deinem Compiler irgendwo mitteilen, welche Taktfrequenz der µC hat. Da ist vermutlich standardmäßig 8Mhz vorgegeben, aber im Lieferzustand haben die AVR's einen Taktgeber mit 8Mhz der durch 8 geteilt wird - also effektiv 1Mhz. Du kannst im Register CLKPR den Teilerfaktor für die Taktfrequenz verändern.
Habs gefunden und gelöst! Läuft jetzt alles wie es soll! Großen dank an alle!!! Einen schönen Sonntag wünsche ich!
Freddy L. schrieb: > Ok, ich habe mal die Anschlüsse aus dem Datenblatt (s. > http://www.diamex.de/dxshop/mediafiles//Sonstiges/erfos-avr-isp2.pdf) > genommen und spiegelverkehrt angeschlossen. Das Datenblatt ist richtig. Die Abbildung zeigt die Stiftwanne von oben betrachtet (nicht von der Lötseite!) Pin 3 ist SCK (am nächsten zur Nase), Pin 1 ist MISO (Pin 1 ist auch auf dem Stecker mit einem kleinen Dreieck markiert)
Freddy L. schrieb: > Ich sehe da kein Dreieck. Hier ist eine Abbildung für einen 10-poligen, da ist es gut zu sehen: http://dl6gl.de/basteltipps/flachkabel-und-pfostenstecker beim 6-Poligen ist es genauso. Auch die Nummerierung: alle ungeraden Zahlen auf der Seite mit der Nase. Pin 1 beim Dreieck.
> Habs gefunden und gelöst!
Was denn? Sei so nett und verrate uns deine Lösung.
Freddy L. schrieb: > Ok, ich habe mal die Anschlüsse aus dem Datenblatt (s. > http://www.diamex.de/dxshop/mediafiles//Sonstiges/erfos-avr-isp2.pdf) > genommen und spiegelverkehrt angeschlossen. Jetzt konnte folgenden Code > flashen > $regfile = "m328pdef.dat" > > Config Portc.5 = Output
Hatte ich auch. Schau mal beim Flashen in das Tab "Locks and Fuse bits". Da gibt es eine Option "Oszilator divide enable". Die kannst du auf disable stellen.
Das Ding funktioniert jetzt irgendwie nicht mehr. Ich habe keine Einstellung geändert. Warum kann etwas nicht einmal laufen :( Blödes Win10
Welches Ding funktioniert nicht mehr? Was heisst "irgendwie"? Ich habe das Gefühl, dass du gar keine Hilfe haben willst.
Entschuldige, mein Fehler. Jetzt habe ich wieder die gleichen Probleme. Mal kann der COM-Port nicht geöffnet werden, mal kann die DeviceID nicht gelesen werden. Ich habe den Verdacht, dass das Problem beim Betriebssystem liegt. Ich werde mal ein Linux aufsetzten und es dann morgen nochmal probieren.
Freddy L. schrieb: > Die Verkabelung des Targets (Atmega328p) ist minimalistisch: 5V an Vcc > und Avcc, 2x GND an GND. Außerdem die SCK, MISO, MOSI Pins an die > entsprechenden Pins des µC. Reset am Reset-Pin. Außerdem 10k-Widerstand > von Vcc nach Reset-Pin. Freddy L. schrieb: > Die PINs zur Stromversorgung habe ich garnicht am 6PIN-Header > angeschlossen. Hast du denn den GND deines Programmers mit dem GND deiner Stromversorgung verbunden? Wozu überhaupt die externe Versorgung mit Netzteil wenn dein Programmer bei 5V ca. 500mA liefern kann, ist doch wesentlich einfacher zum Testen.
Aktuell sieht es bei mir so aus, dass Linux nicht will... nur für den Fall, dass sich jemand wundern sollte, wenn ich länger nicht schreiben sollte. Gruß, Freddy
Ich wollte nur noch mal schreiben, dass das Problem gelöst ist. Es schien daran zu liegen, dass der µC defekt war. Ein anderer hat sofort problemlos funktioniert. Gruß, Freddy
Hallo Freddy, na prima. Ich finde es nett, dass du dir wenigstens die Mühe gibst uns mitzuteilen, dass sich das 'Problem' gelöst hat. Weiter viel Erfolg beim Basteln. 73 Wilhelm
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.