Diamex ISP will nicht

OP #4907420
Lesenswert?

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
Angehängte Dateien:
OP #4907464
Lesenswert?

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.
Gast #4907535
Lesenswert?

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.
OP #4907544
Lesenswert?

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.
Gast #4907546
Lesenswert?

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
OP #4907583
Lesenswert?

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")
Angehängte Dateien:
Gast #4907607
Lesenswert?

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?
OP #4907617
Lesenswert?

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.
Angehängte Dateien:
Gast #4907632
Lesenswert?

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.
Gast #4907636
Lesenswert?

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).
Gast #4907667
Lesenswert?

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.
OP #4907701
Lesenswert?

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
Gast #4907715
Lesenswert?

@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.
OP #4907719
Lesenswert?

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.
OP #4907734
Lesenswert?

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)
Gast #4907742
Lesenswert?

> 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.
#4907772
Lesenswert?

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.
Gast #4907773
Lesenswert?

> 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
OP #4907775
Lesenswert?

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?
Gast #4907783
Lesenswert?

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.
#4907798
Lesenswert?

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)
OP #4908384
Lesenswert?

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.
#4909083
Lesenswert?

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.

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