Forum: Mikrocontroller und Digitale Elektronik µC spinnt - Programmieren geht nicht


von M. B. (marcel_b41)


Lesenswert?

Ich habe ein Programm für eine Digitaluhr geschrieben. Ich habe dann die 
Fusebits des µC in Ponyprog geändert. Ich habe den Haken bei "JTAGEN" 
deaktiviert und bei "CKSEL3", "CKSEL2", "CKSEL1", "CKSEL0" den Haken 
rein gemacht. Jetzt kommt immer device not found. Wie kann ich den µC 
noch verwenden? Ich habe einen 16MHz Quarzoszillator an XTAL1 
angeschlossen.

von Timmo H. (masterfx)


Lesenswert?


von M. B. (marcel_b41)


Lesenswert?

Danke für deine schnelle Antwort.
Aber ich habe ja schon einen Taktgeber (den Quarzoszi) an XTAL1 und kann 
damit nicht auf die Fuses zugreifen. Ein Oszillator steht mir leider 
nicht zur Verfügung.

von c-hater (Gast)


Lesenswert?

M. B. schrieb:

> Ich habe ein Programm für eine Digitaluhr geschrieben. Ich habe dann die
> Fusebits des µC in Ponyprog geändert. Ich habe den Haken bei "JTAGEN"
> deaktiviert

OK, das ist wahrscheinlich sinnvoll.

> und bei "CKSEL3", "CKSEL2", "CKSEL1", "CKSEL0" den Haken
> rein gemacht.

Warum hast du das getan? Und außerdem: um welchen µC handelt es sich 
eigentlich konkret?

> Jetzt kommt immer device not found. Wie kann ich den µC
> noch verwenden? Ich habe einen 16MHz Quarzoszillator an XTAL1
> angeschlossen.

Das hilft oft, aber halt nicht immer. Das einzige, was immer hilft, ist 
HV-Programming. Du brauchst dazu einen Programmer, der das beherrscht.

Allerdings: Wenn man einfach immer nur sinnvolle Werte für die 
Clock-Optionen programmiert, indem man vor dem Programmieren die 
verfickten Datenblätter liest, dann braucht man kein HV-Programming und 
nicht die Kohle für einen dazu fähigen Programmer abzudrücken.

Da wird es viel billiger, den verfuseten µC einfach wegzuwerfen, als 
Lehrgeld abzubuchen und einen neuen zu kaufen. Selbst ein Mega1284P 
kostet ja nichtmal ein Drittel des günstigsten HV-fähigen Programmers...

von Tommy T. (thomas_k86)


Lesenswert?

Ich programmiere nur mit Bascom AVR.Ausgenommen die Fuses.Da Spann ich 
mir immer Von myAvr Workpad PLUS ein.Da gibts glaub ich auch eine 
Demoversion mit Zeitlimit zum Gratisdownload.Da kann soein fehler fast 
nicht mehr passieren.

von spess53 (Gast)


Lesenswert?

Hi

CKSEL3..0 = 1111 ist AVRs i.A. External Crystal/Ceramic Resonator. Von 
der Seite passt das schon.

>Aber ich habe ja schon einen Taktgeber (den Quarzoszi) an XTAL1 und kann
>damit nicht auf die Fuses zugreifen.

Anscheinend nicht. Wie hast du den Oszillator beschaltet?

MfG Spess

von Dietrich L. (dietrichl)


Lesenswert?

M. B. schrieb:
> Aber ich habe ja schon einen Taktgeber (den Quarzoszi) an XTAL1 und kann
> damit nicht auf die Fuses zugreifen. Ein Oszillator steht mir leider
> nicht zur Verfügung.

??  Es gilt aber: Taktgeber (den Quarzoszi) = Oszillator

Somit passt der Text irgendwie nicht...

Oder meinst Du mit Quarzoszi eine Quarz? Der muss aber an XTAL1 und 
XTAL2 + 2 Kondensatoren (üblicherweise je 22pF) angeschlossen werden.

Ein Oszillator wird nur an XTAL1 angeschlossen und lässt sich auch 
leicht mit z.B. einem 74HC14 bauen. Damit sollte es gehen, auch wenn der 
µC auf Quarz eingestellt ist.

Gruß Dietrich

von M. B. (marcel_b41)


Lesenswert?

spess53 schrieb:
> Hi
>
> CKSEL3..0 = 1111 ist AVRs i.A. External Crystal/Ceramic Resonator. Von
> der Seite passt das schon.
Ich denke auch, dass es passen sollte.
Bei einem anderen Projekt funktioniert es auch.

> Anscheinend nicht. Wie hast du den Oszillator beschaltet?
An der eckigen Ecke (links unten) habe ich nichts. An der darüber habe 
ich +, rechts unten habe ich - und rechts oben OUT.
Also so:

+__________OUT --> XTAL1
/          \
|          |
|__________/
           GND

von Hubert G. (hubertg)


Lesenswert?

M. B. schrieb:
> Ich habe den Haken bei "JTAGEN"
> deaktiviert und bei "CKSEL3", "CKSEL2", "CKSEL1", "CKSEL0" den Haken
> rein gemacht.
Das ergibt CKSEL3..0 = 0000

spess53 schrieb:
> CKSEL3..0 = 1111 ist AVRs i.A. External Crystal/Ceramic Resonator. Von
> der Seite passt das schon.

Um das hier zu erreichen dürfen keine Haken drinnen sein.

von Dietrich L. (dietrichl)


Lesenswert?

M. B. schrieb:
> An der eckigen Ecke (links unten) habe ich nichts.

Es gibt auch Typen, die an diesem Pin ein "Enable" haben. Welchen hast 
Du (Typenbezeichnung!)?

von M. B. (marcel_b41)


Lesenswert?

> spess53 schrieb:
>> CKSEL3..0 = 1111 ist AVRs i.A. External Crystal/Ceramic Resonator. Von
>> der Seite passt das schon.
>
> Um das hier zu erreichen dürfen keine Haken drinnen sein.
Und wie kann ich das jetzt ändern?

Dietrich L. schrieb:
> Welchen hast
> Du (Typenbezeichnung!)?
Ich habe diesen Quarzoszillator: 
http://www.pollin.de/shop/dt/MDM5OTY3OTk-/Bauelemente_Bauteile/Passive_Bauelemente/Quarze_Oszillatoren/Quarzoszillator.html
In dem anderen Projekt hatte ich den selben verwendet und genau so 
belegt. Dort funktioniert es.

von es gibt besseres (Gast)


Lesenswert?

Offtopic:
Mal wieder das ganz große Fusekino!

von Dietrich L. (dietrichl)


Lesenswert?

M. B. schrieb:
> Ich habe diesen Quarzoszillator:
> 
http://www.pollin.de/shop/dt/MDM5OTY3OTk-/Bauelemente_Bauteile/Passive_Bauelemente/Quarze_Oszillatoren/Quarzoszillator.html

Ja, da ist Pin 1 nicht angeschlossen, somit Deine Schaltung OK.

von M. B. (marcel_b41)


Lesenswert?

Dietrich L. schrieb:
> somit Deine Schaltung OK.

Aber warum funktioniert es dann nicht?

von Dietrich L. (dietrichl)


Lesenswert?

M. B. schrieb:
> Aber warum funktioniert es dann nicht?

Weil der Fehler dann woanders ist.
- der Schaltplan kann von der Realität abweichen
- ein Bauteil ist defekt
- das Layout / die Verdrahtung kann schlecht sein
- Versorgung mangelhaft,  Stützkondensatoren fehlen
- ???

Das ist vielleicht die Gelegenheit, den kompletten Schaltplan + Layout 
zu zeigen.

Wie die Fuses jetzt tatsächlich eingestellt sind und was das bedeutet, 
habe ich nicht verfolgt und kontrolliert. Ich bezog mich nur auf 
mögliche Hardwarefehler.

Gruß Dietrich

von Hubert G. (hubertg)


Lesenswert?

Die Fuseprogrammierung sollte richtig sein.
Schon mal einen anderen Oszillator probiert oder einen anderen 
Taktgenerator?
Muss ja nicht irr hoch sein, 1MHz tut es auch, eventuell den 
Programmiertakt anpassen.
GND und VCC wird ja gleich sein mit den µC?

von M. B. (marcel_b41)


Angehängte Dateien:

Lesenswert?

Dietrich L. schrieb:
> Das ist vielleicht die Gelegenheit, den kompletten Schaltplan + Layout
> zu zeigen.

Hier ist der Schaltplan...
Der Plan hat nur den Fehler, dass der Oszillator an XTAL2 ist. Gelötet 
habe ich ihn aber an XTAL1.

Hubert G. schrieb:
> Muss ja nicht irr hoch sein, 1MHz tut es auch, eventuell den
> Programmiertakt anpassen.

Könnte ich da den Taktgeber von dem Atmel Board von Pollin an den µC 
ziehen und GND verbinden?

: Bearbeitet durch User
von Dietrich L. (dietrichl)


Lesenswert?

M. B. schrieb:
> Dietrich L. schrieb:
>> Das ist vielleicht die Gelegenheit, den kompletten Schaltplan + Layout
>> zu zeigen.
>
> Hier ist der Schaltplan...

Wo sind die Widerstände für die LEDs? Wie groß ist der Maximalstrom 
(beim ATmega16 darf in Summe max. 200mA über Vcc und GND fließen)?

Dann fehlt noch das Layout. Dazu:

Hast Du genügend Stützkondensatoren verbaut? Sind sie nahe genug am µC 
und am Taktgenerator? Ist das GND-Netzwerk solide genug? Wie ist die 
Versorgung?

Gruß Dietrich

von M. B. (marcel_b41)


Lesenswert?

Dietrich L. schrieb:
> Wo sind die Widerstände für die LEDs? Wie groß ist der Maximalstrom
Ich habe einen extra Schaltplan für die LEDs gemacht, da ich wegen der 
Pin-Begrenzung in Target nicht mehr auf den Plan machen konnte. Soll ich 
den auch mit hochladen?

> (beim ATmega16 darf in Summe max. 200mA über Vcc und GND fließen)?
Das muss ich mal prüfen. Aber eig. sollte das nicht das Problem sein, da 
ich das Programm noch nicht aufgespielt habe und somit noch kein Strom 
an den "Ausgabepins" liegt. Kann ich da einfach den Stromfluss zwischen 
Spannungsquelle - µC messen?

> Dann fehlt noch das Layout.
Was ist ein Layout?

von Dietrich L. (dietrichl)


Lesenswert?

M. B. schrieb:
> Was ist ein Layout?

Wie ist das ganze real aufgebaut? Leiterplatte, Steckbrett, 
"Freiluftverdrahtung", ...? Und wie sieht das aus?
Ein wilder / unsachgemäßer Aufbau kann dazu führen, dass das Ganze nicht 
oder nicht richtig funktioniert.

Gruß Dietrich

von M. B. (marcel_b41)


Lesenswert?

Ich habe die ganze Schaltung auf einer Punktrasterplatine aufgelötet.

von Dietrich L. (dietrichl)


Lesenswert?

M. B. schrieb:
> Ich habe die ganze Schaltung auf einer Punktrasterplatine aufgelötet.

Du bist aber zäh mit den Informationen :-(
Dann mach mal Bilder! Eins von jeder Seite.
Mit der Info "auf einer Punktrasterplatine aufgelötet" kann doch keiner 
beurteilen, ob das ordentlich gemacht ist.
Ordentlich heißt:
- möglichst kurze Masseverbindungen mit genügend Querschnitt
- genügend Stützkondensatoren sehr nahe an den Bauteilen
(aber danach habe ich ja schon mal gefragt ...)

Gruß Dietrich

PS: Welche Messmöglichkeiten hast Du denn? Ein Oszi wäre nicht schlecht, 
da könnte man den Takt und verschiedene Signale beim Programmieren mal 
anschauen. Wenn nicht: sag mal Deine Postleitzahl; vielleicht lässt sich 
da was machen ...

von M. B. (marcel_b41)


Lesenswert?

ich habe die schaltung gerade nicht da. heute abend werde ich fotos 
machen. zum messen habe ich ein multimeter.

von Stefan (Gast)


Lesenswert?

Du hast den ISP Anschluss parallel zu den LED's geschaltet. Je nach 
Leitungslänge und Vorwiderstand überforderst Du damit eventuell den 
Programmer.

Weiterhin brauchen manche Programmer eine Stromversorgung vom Target, du 
hast diesen Pin jedoch nicht beschaltet.

von Stefan (Gast)


Lesenswert?

Du benutzt Ponyprog hoffentlich nicht über einen USB zu seriell oder USB 
zu parallel Adapter? Wenn doch, dann kann das die Problemursache sein. 
Bit-Banging mit USB Adapter funktioniert nämlich nur mit Glück.

von M. B. (marcel_b41)


Angehängte Dateien:

Lesenswert?

So. Hier die Fotos der Schaltung von vorne und hinten.

Stefan schrieb:
> überforderst Du damit eventuell den
> Programmer.
Ich werde morgen die LEDs mal ablöten und schauen ob es dann 
funktioniert.

Stefan schrieb:
> Weiterhin brauchen manche Programmer eine Stromversorgung vom Target, du
> hast diesen Pin jedoch nicht beschaltet.
Welcher Pin ist der Target-Pin? Bei der anderen Schaltung habe ich den 
µC genauso angesteuert. Ich hatte jedoch an den Programmierpins nichts 
anderes (wie hier die LEDs).

von M. B. (marcel_b41)


Lesenswert?

Ich habe jetzt die LEDs, die an den Programmierpins hängen, abgelötet. 
Das Lesen vom µC funktioniert wieder. Beim schreiben bleibt er immer bei 
75% stehen. Manchmal läuft er auch durch und nach dem Prüfen kommt 
"write failed".
Wenn ich die Fuses lese ist bei keinem ein Haken gesetzt. Zum Testen 
habe ich bei JTAGEN den Haken wieder rein gemacht und geschrieben. Das 
ging ohne Fehler. Danach habe ich wieder gelesen und der Haken war nicht 
mehr gesetzt.

Stefan schrieb:
> Du benutzt Ponyprog hoffentlich nicht über einen USB zu seriell oder USB
> zu parallel Adapter?
Nein ich nutze keinen USB-Seriell Adapter. Ich programmiere direkt über 
den seriellen Port.

von Icke ®. (49636b65)


Lesenswert?

Hast du diesen Tip gelesen?

Timmo H. schrieb:
> Häufiger Fehler
> http://www.mikrocontroller.net/articles/AVR_Fuses#...

Ich zitiere nochmal daraus:

"Weiter ist zu beachten, dass bei PonyProg ein gesetztes Häkchen einer 0 
im Datenblatt entspricht!"

von M. B. (marcel_b41)


Lesenswert?

Icke ®. schrieb:
> Hast du diesen Tip gelesen?
>
> Timmo H. schrieb:
>> Häufiger Fehler
>> http://www.mikrocontroller.net/articles/AVR_Fuses#...
>
> Ich zitiere nochmal daraus:
>
> "Weiter ist zu beachten, dass bei PonyProg ein gesetztes Häkchen einer 0
> im Datenblatt entspricht!"

Ja. Aber egal wie ich es einstelle, wird es nicht gespeichert.

von M. B. (marcel_b41)


Lesenswert?

Stephan S. schrieb im Beitrag #3367472:
> M. B. schrieb:
>> Ich programmiere direkt über
>> den seriellen Port.
>
> ???

Ich habe keinen Adapter. Einfach Kabel von Seriell zu dem 
Programmierboard.

von Hubert G. (hubertg)


Angehängte Dateien:

Lesenswert?

Kann ich mir nicht ganz vorstellen. Hatte früher auch PonyProg seriell 
genutzt, allerdings mit Adapter.

von M. B. (marcel_b41)


Lesenswert?

Ich habe gerade geprüft ob die Verbindung zw. Programmierboard und dem 
µC da ist. Dabei habe ich festgestellt, dass auf meinem Programmierboard 
zwischen Pin6 und Pin8 durchgang (18Ω) ist. Das ist nur wenn ich die 
serielle Schnittstelle angeschlossen habe.
Ist das normal?

: Bearbeitet durch User
von M. B. (marcel_b41)


Lesenswert?

Hat keiner eine Idee warum es nicht funktioniert?

von Hubert G. (hubertg)


Lesenswert?

Das mit dem Programmer ist mir nicht klar, nimmst du das Pollin-Board 
dazu?
Auf dem Bild ist es nicht zu sehen ob der Mega16 gesockelt ist, wenn ja, 
warum steckst du ihn nicht ins Pollin-Board zum Programmieren.

von M. B. (marcel_b41)


Lesenswert?

Hubert G. schrieb:
> nimmst du das Pollin-Board dazu?
Ja.

> Auf dem Bild ist es nicht zu sehen ob der Mega16 gesockelt ist, wenn ja,
> warum steckst du ihn nicht ins Pollin-Board zum Programmieren.
Ich stecke ihn nicht auf das Pollinboard, da ja ein externer Taktgeber 
eingestellt ist.

von Hubert G. (hubertg)


Lesenswert?

Du wirst ja noch andere Kontroller haben, funktioniert das Programmieren 
im Pollin-Board? Sicher kein Fehler beim Umsetzen von 10 auf 6polig?
Hast du keine Oszillator mehr? Ansonst geht das im Pollin-Board auch.
Ohne weitere Meßmöglichkeit ist die Fehlersuche nun mal auf das 
Überprüfen der Spannungen begrenzt. Das wirst du ja gemacht haben, auch 
den Reset.

von M. B. (marcel_b41)


Lesenswert?

Hubert G. schrieb:
> Du wirst ja noch andere Kontroller haben
Ich habe noch einen. Bei dem taucht das gleiche Problem auf (auf dem 
hatte ich die Fuses früher mal gesetzt (warum auch immer...))

> funktioniert das Programmieren im Pollin-Board?
Wenn ich es direkt auf dem Pollin-Board versuche kommt gleich (bevor er 
versucht zu schreiben) der Fehler "Device missing or unknown device 
(-24)".

> Sicher kein Fehler beim Umsetzen von 10 auf 6polig?
Wie kann ich das prüfen?

> Hast du keine Oszillator mehr?
Nein, leider nicht.

> Ohne weitere Meßmöglichkeit ist die Fehlersuche nun mal auf das
> Überprüfen der Spannungen begrenzt. Das wirst du ja gemacht haben, auch
> den Reset.
Welche Spannungen muss ich wo messen?

von Hubert G. (hubertg)


Lesenswert?

M. B. schrieb:
>> Sicher kein Fehler beim Umsetzen von 10 auf 6polig?
> Wie kann ich das prüfen?

Die Verbindungen einzeln messen und auch prüfen ob sie nicht Verbindung 
zu GND, VCC oder anderen benachbarten Pin haben.

M. B. schrieb:
> Welche Spannungen muss ich wo messen?

Auf VCC, AVCC und Reset sollten etwa 5V sein.

von M. B. (marcel_b41)


Lesenswert?

Hubert G. schrieb:
> Die Verbindungen einzeln messen und auch prüfen ob sie nicht Verbindung
> zu GND, VCC oder anderen benachbarten Pin haben.
Verbindungen zu benachbarten Pins, GND und VCC haben sie nicht.
Muss ich die Spannung an den einzelnen Pins beim Programmieren messen?

> Auf VCC, AVCC und Reset sollten etwa 5V sein.
Das ist ok.

von Hubert G. (hubertg)


Lesenswert?

Wenn du das Programmieren startest, sollte Reset gegen 0V gehen.

von M. B. (marcel_b41)


Lesenswert?

Hubert G. schrieb:
> Wenn du das Programmieren startest, sollte Reset gegen 0V gehen.

Muss ich noch mehr messen?

von Hubert G. (hubertg)


Lesenswert?

Mir fällt nichts mehr zu deinem Problem ein. Aus der Ferne ist da weiter 
schwer was zu machen.
Das Beste wäre es wenn du das ganze noch mal neu aufbaust und zwar 
Schritt für Schritt.

von M. B. (marcel_b41)


Lesenswert?

Ist es sehr wahrscheinlich, dass der Fehler einfach darin liegt, dass 
der Mikrocontroller kaputt ist?

von Karl H. (kbuchegg)


Lesenswert?

Ausgeschlossen ist es nicht.
Nur eher ziemlich unwahrscheinlich.
Die Dinger halten eine Menge aus.

von M. B. (marcel_b41)


Lesenswert?

Wenn ich mit PonyProg den µC leer mache (alles mit FF überschreiben), 
ist das nicht komplett so. Also teilweise steht nach dem Lesen etwas 
anderes als FF.
Gibt das noch einen Hinweis auf den Fehler?

von spess53 (Gast)


Lesenswert?

Hi

>Gibt das noch einen Hinweis auf den Fehler?

Nein. Eine einmal mit einer Null beschriebene Speicherzelle kannst du 
nicht wieder mit einer Eins beschreiben. Das geht nur durch Löschen. des 
Flashs.

MfG Spess

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.