Forum: Mikrocontroller und Digitale Elektronik ATMega8 lässt sich nicht programmieren


von Andi K. (fry12)


Angehängte Dateien:

Lesenswert?

Hallo Leute,

ich bin neu in der Welt der µC-Programmierung und stehe gleich vor dem 
ersten Problem: Mein Microcontroller (ein ATMega8-16PU) lässt sich nicht 
programmieren. Ich bin nach dieser Anleitung vorgegangen:

http://www.rn-wissen.de/index.php/AVR-Einstieg_leicht_gemacht

Aufgebaut wurde alles auf einem Steckbrett, zusammen mit einem 
Spannungsregler (9V -> 5V) und einem Adapter, der den 6- bzw. 10-pol ISP 
Anschluss auf das Steckbrett bringt (selbstgelötet, auf einer 
Experimentierplatine). Nun habe ich sowohl in AVR Studio 5.1 als auch 
mit avrdude versucht den ATMega zu programmieren, es tut sich allerdings 
nichts. Als Programmer verwende ich einen AVRISP mkII.

Ich bin relativ ratlos, da eigentlich alles passen müsste. Ich habe die 
Pins VCC, AREF und AVCC an die 5V angeschlossen (ist das bei AREF 
überhaupt nötig?) und beide GND Pins an GND. Ich hab mit meinem 
Multimeter auch bereits getestet, ob der 6pol Stecker Kontakt mit den 
jeweiligen Pins des µC hat (habe leider keinen Durchgangsprüfer, daher 
Test mit Widerstandsmessung -> ca. 0,5 Ohm, ist das in Ordnung?).

Einzig bei der Pinbelegung des ISP Anschlusses bin ich mir nicht im 
Klaren.  Vgl. Abbildung:
1 - MISO
2 - VCC
3 - SCK
4 - MOSI
5 - RESET
6 - GND

Stimmt das?

Anbei noch ein paar Bilder.

Grüße
Andreas

von Vlad T. (vlad_tepesch)


Lesenswert?

was benutzt du denn für einen Programmer?

häng mal "-B 6" oder so an die Kommandozeile des avrdude.
Das sorgt dafür, dass er mit geringerer Datenrate flasht, da bei 
frischen µCs normalerweise das DVI8 fuse gesetzt ist und die 
Programmiergeschwindigkeit zu hoch für sie .

Edit:
ok, den Programmername hatte ich übersehen.
Hab mit dem noch nix zu tun gehabt, aber dversuchen kann man es ja 
trotzdem mal mit dem Parameter

von Vlad T. (vlad_tepesch)


Lesenswert?

noch eine Idee: stimmt denn die Spannungsversorgung?
Die Versorgungsleisten mancher Steckbretter sind in der Mitte 
unterbrochen und müssen mit Brücken verbunden werden.

von Andi K. (fry12)


Lesenswert?

Vlad Tepesch schrieb:
> was benutzt du denn für einen Programmer?
>
> häng mal "-B 6" oder so an die Kommandozeile des avrdude.
> Das sorgt dafür, dass er mit geringerer Datenrate flasht, da bei
> frischen µCs normalerweise das DVI8 fuse gesetzt ist und die
> Programmiergeschwindigkeit zu hoch für sie .
>
> Edit:
> ok, den Programmername hatte ich übersehen.
> Hab mit dem noch nix zu tun gehabt, aber dversuchen kann man es ja
> trotzdem mal mit dem Parameter

Okay, werde ich versuchen.

Spannungsversorgung stimmt, habs mit einem Multimeter an VCC und GND 
gemessen. Ergebnis: 4,95V

von Martin (Gast)


Lesenswert?

Was sagt dein AVRISPmkII? Led grun, rot?

von Martin (Gast)


Lesenswert?

Was bekommst du als Meldung? kannst du überhaupt was machen? z.B. Fuse 
lesen?

von Vlad T. (vlad_tepesch)


Lesenswert?

AREF würde ich nicht direkt mit VCC verbinden. (warum legst du die 
Verbindung eigentlich um den AVR rum, anstatt auf die Spannungsleiste zu 
gehen, was die ÜBersicht erhöhen würde?)
willst du die Versorgungsspannung als Referenz, kannst du die auch so 
auswählen und mit einem zusätzlichen Kondensator von Aref gegen Masse 
stabilisieren.
Das lässt dir zusätzlich die Freiheit die interne 2.56 Volt-Referenz zu 
wählen.

von Andi K. (fry12)


Lesenswert?

Martin schrieb:
> Was sagt dein AVRISPmkII? Led grun, rot?

Beide LEDs leuchten grün.

Also ich gebe ein:

sudo avrdude -c avrispmkII -P usb -p m8 -B 6 -v

und als Antwort erhalte ich:
1
avrdude: Version 5.11.1, compiled on Oct 30 2011 at 10:37:28
2
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
3
         Copyright (c) 2007-2009 Joerg Wunsch
4
5
         System wide configuration file is "/etc/avrdude.conf"
6
         User configuration file is "/home/andreas/.avrduderc"
7
         User configuration file does not exist or is not a regular file, skipping
8
9
         Using Port                    : usb
10
         Using Programmer              : avrispmkII
11
         Setting bit clk period        : 6.0
12
avrdude: usbdev_open(): Found AVRISP mkII, serno: 000200102232
13
         AVR Part                      : ATMEGA8
14
         Chip Erase delay              : 10000 us
15
         PAGEL                         : PD7
16
         BS2                           : PC2
17
         RESET disposition             : dedicated
18
         RETRY pulse                   : SCK
19
         serial program mode           : yes
20
         parallel program mode         : yes
21
         Timeout                       : 200
22
         StabDelay                     : 100
23
         CmdexeDelay                   : 25
24
         SyncLoops                     : 32
25
         ByteDelay                     : 0
26
         PollIndex                     : 3
27
         PollValue                     : 0x53
28
         Memory Detail                 :
29
30
                                  Block Poll               Page                       Polled
31
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
32
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
33
           eeprom         4    20   128    0 no        512    4      0  9000  9000 0xff 0xff
34
           flash         33    10    64    0 yes      8192   64    128  4500  4500 0xff 0x00
35
           lfuse          0     0     0    0 no          1    0      0  2000  2000 0x00 0x00
36
           hfuse          0     0     0    0 no          1    0      0  2000  2000 0x00 0x00
37
           lock           0     0     0    0 no          1    0      0  2000  2000 0x00 0x00
38
           calibration    0     0     0    0 no          4    0      0     0     0 0x00 0x00
39
           signature      0     0     0    0 no          3    0      0     0     0 0x00 0x00
40
41
         Programmer Type : STK500V2
42
         Description     : Atmel AVR ISP mkII
43
         Programmer Model: AVRISP mkII
44
         Hardware Version: 1
45
         Firmware Version Master : 1.17
46
         Vtarget         : 0.0 V
47
         SCK period      : 8.00 us
48
49
avrdude: stk500v2_command(): command failed
50
avrdude: stk500v2_program_enable(): bad AVRISPmkII connection status: Target not detected
51
avrdude: initialization failed, rc=-1
52
         Double check connections and try again, or use -F to override
53
         this check.
54
55
56
avrdude done.  Thank you.

Was meinst du mit Fuses lesen? (wie gesagt, bin Anfänger)


Vlad Tepesch schrieb:
> AREF würde ich nicht direkt mit VCC verbinden. (warum legst du die
> Verbindung eigentlich um den AVR rum, anstatt auf die Spannungsleiste zu
> gehen, was die ÜBersicht erhöhen würde?)
> willst du die Versorgungsspannung als Referenz, kannst du die auch so
> auswählen und mit einem zusätzlichen Kondensator von Aref gegen Masse
> stabilisieren.
> Das lässt dir zusätzlich die Freiheit die interne 2.56 Volt-Referenz zu
> wählen.

Hab beides geändert, danke für die Tipps ;)

von Martin (Gast)


Lesenswert?

> avrdude: stk500v2_program_enable(): bad AVRISPmkII connection status: Target not 
detected
> avrdude: initialization failed, rc=-1
>          Double check connections and try again, or use -F to override
>          this check.

Prüfe noch mal alle Verbindungen, besonders von ISP zu µC, da ist 
irgendwo ein Wackelkontakt, sind MISO, SCK, MOSI, RESET von AVRISPmkII 
mit dem richtige Pins von µC verbunden?

Hast 5V zwischen Pin 7 und 8 von µC?

von Wastl F. (rescuetigerchen)


Lesenswert?

mit welcher frequenz soll der mega8 denn laufen? auf internem takt? wenn 
ja, muss das auch über die fuses eingestellt werden. ansonsten noch 
einen Quarz mit entsprechenden Kondensatoren an die XTAL pins 
anschließen.

von Bjojon (Gast)


Lesenswert?

Hallo,

du musst an den VCC Pin des AVR ISP die Versorgungsspannung des 
Controllers anlegen (das ist ein Eingang). Sonst stimmt der Signalpegel 
am Ausgang des Programmers nicht.

Die Ausgabe von AVRDude zeigt:

  Vtarget         : 0.0 V

Probiers mal.

von Dr.Who (Gast)


Lesenswert?

Wastl F. schrieb:
> mit welcher frequenz soll der mega8 denn laufen? auf internem takt? wenn
> ja, muss das auch über die fuses eingestellt werden.

Ne, er hat ihn ja noch nicht programmiert. D.h. die Fuses sind 
automatisch noch auf internen Takt eingestellt (1Mhz).

von Martin (Gast)


Lesenswert?

Bjojon schrieb:
> du musst an den VCC Pin des AVR ISP die Versorgungsspannung des
> Controllers anlegen (das ist ein Eingang). Sonst stimmt der Signalpegel
> am Ausgang des Programmers nicht.

Hast Recht, der AVRISP wird im Brett direkt von 7805 mit Spannung 
versorgt so funktioniert bestimmt nicht.

von XJ600 (Gast)


Lesenswert?

Wie Groß ist der Kondensator, den du am Reset hast? Nehm den mal raus 
und probier's dann.

von XJ600 (Gast)


Lesenswert?

Achso und dass der ISP direkt vom 7805 versorgt wird ist eigentlich ok. 
Bei mir klappt das imemr ohne Probleme.

von Wastl F. (rescuetigerchen)


Lesenswert?

>Ne, er hat ihn ja noch nicht programmiert. D.h. die Fuses sind
>automatisch noch auf internen Takt eingestellt (1Mhz).
Na denn. Taktrate des ISP wurde ja schon angesprochen, muss dann ja 
unter 250k liegen.
Vielleicht mal einen anderen mega nehmen? Könnte ja auch defekt sein.
Zumindest die Spannungen sind richtig, sonst würden nicht beide LEDs am 
MKII grün leuchten. Reset ist auch OK...
Die Fehlermeldung deutet (mit zwei t geschrieben sieht das irgendwie 
bescheuert aus...) aber eher auf einen Fehler mit dem Atmega hin.

von Stefan (Gast)


Lesenswert?

Die Anzeige der Target Spannung ist unabhängig von der ISP Kommunikation 
(zumindest, wenn man das AVR Studio niummt, nicht avrdude).

Da er hier aber 0 Volt anzeigt, würde ich den Fehler nicht in der 
Verbindung zwischen Adapterplatine und AVR suchern, sondern in der 
Strecke: Spannungsregler->Adapterplatine->Flachkabel->Programmer.

von Andi K. (fry12)


Lesenswert?

Bjojon schrieb:
> Hallo,
>
> du musst an den VCC Pin des AVR ISP die Versorgungsspannung des
> Controllers anlegen (das ist ein Eingang). Sonst stimmt der Signalpegel
> am Ausgang des Programmers nicht.
>
> Die Ausgabe von AVRDude zeigt:
>
>   Vtarget         : 0.0 V
>
> Probiers mal.

Ich hab den VCC jetzt direkt am Controller angeschlossen.


XJ600 schrieb:
> Wie Groß ist der Kondensator, den du am Reset hast? Nehm den mal raus
> und probier's dann.

100nF. Hab ihn entfernt, aber keine Besserung


Stefan schrieb:
> Die Anzeige der Target Spannung ist unabhängig von der ISP Kommunikation
> (zumindest, wenn man das AVR Studio niummt, nicht avrdude).
>
> Da er hier aber 0 Volt anzeigt, würde ich den Fehler nicht in der
> Verbindung zwischen Adapterplatine und AVR suchern, sondern in der
> Strecke: Spannungsregler->Adapterplatine->Flachkabel->Programmer.

Ich hab gerade nochmal die Spannung an den GND und VCC Pins der 
Stiftleiste an der Adapterplatine gemessen...4,95V. An der 6-pol-Buchse 
liegen zwischen Pin 2 und Pin 6 ebenfalls 4,95 V an. Dass der Programmer 
funktioniert weiß ich sicher, ich habe ihn bereits mit einem anderen µC 
testen können.

Langsam verzweifel ich ein wenig ;D

von Andi K. (fry12)


Lesenswert?

Wenn ich den Programmer ausgesteckt lasse und mit dem PC verbinde ist 
die LED zunächst Rot. Dann steck ich ihn auf die Adapterplatine und sie 
bleibt ein paar Sekunden rot ehe sie dann doch auf grün wechselt.

Edit: Sie wird nur grün wenn ich in AVRStudio die Device ID und Target 
Voltage auslesen will...seltsam

von Dr.Who (Gast)


Lesenswert?

Haben die ATMegas eigentlich auch die Clock div/8 Fuse? Oder nur die 
Tiny-Serie?

von Karl H. (kbuchegg)


Lesenswert?

Dr.Who schrieb:
> Haben die ATMegas eigentlich auch die Clock div/8 Fuse? Oder nur die
> Tiny-Serie?

Haben sie zum Teil.
Aber das ist irrelevant.
Alle Megas werden so ausgeliefert, dass sie im Auslieferungszustand mit 
1Mhz laufen.

Im Grunde braucht es nicht viel um einen Mega in Betrieb zu nehmen: 
Spannung an Vcc/AVcc und Rückleitung GND-Pins an Netzteil-Masse und das 
Teil läuft bereits. Die restliche Rundumbeschaltung dient dazu, den 
Betrieb zuverlässiger zu machen (Kondensatoren, R an Reset).

von Andi K. (fry12)


Lesenswert?

Okay, ich habs gerade mit einem ATMega16 getestet. Mit dem gleichesn 
Ergebnis. Es liegt wohl doch an irgendeinem Wackelkontakt an der 
Adapterplatine (obwohl ich eigentlich alle Pins auf Durchgang geprüft 
hab, siehe 1. Post von mir)?

von Mario (Gast)


Lesenswert?

Versucht doch mal die Verbindung AVR ISP zu µC direkt ohne Platine.

von Karl H. (kbuchegg)


Lesenswert?

Andreas F. schrieb:

> 1 - MISO
> 2 - VCC
> 3 - SCK
> 4 - MOSI
> 5 - RESET
> 6 - GND
>
> Stimmt das?

Sollte eigentlich stimmen
vgl.
AVR In System Programmer: ISP

Wobei das die Ansicht von oben ist!

(Probier mal eine LED an den Reset Anschluss zu geben.
Wenn der Programmer auf den µC zugreift, musste man da was sehen)

Ansonsten würde ich mal den Adapter beiseite lassen und die Drähte 
direkt in die Buchse vom Brennerkabel stecken.

Ich hab schon Mega8 programmiert, indem ich an einen alten Sockel direkt 
Drähte angelötet habe und die dann in die entsprechenden Löcher vom 
Sockel eines Mega32 (der natürlich nicht im Sockel war) gesteckt habe an 
dem dann der Programmer hing. Geht zur Not alles.
Spannung muss da sein, MISO/MOSI/SCK und RESET und dann sollte der 
Programmer den µC auch schon ansprechen können.

von Andi K. (fry12)


Lesenswert?

Karl Heinz Buchegger schrieb:
> Ansonsten würde ich mal den Adapter beiseite lassen und die Drähte
> direkt in die Buchse vom Brennerkabel stecken.
Ich habs gerade ausprobiert...alles funktioniert! Es lag also 
tatsächlich an der Adapterplatine :) Vielen Dank für eure Tipps!

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