Forum: Mikrocontroller und Digitale Elektronik ATmega1248p lässt sich im Nibo Burger nicht programmieren


von Funkenkitzler (Gast)


Lesenswert?

Hab mir einen NIBO Burger gekauft 
(http://www.nicai-systems.com/de/nibo-burger , Schaltplan gibt es unter 
dem Menüpunkt "Bauen") kämpf jetzt schon einige Zeit damit herum, aber 
ich schaffs nicht den ATmega1284p im Burger zu programmieren.

Da es mit dem eingebauten Programmer (usbasp mit einem ATtiny44A) nicht 
funktioniert hat, habe ich meinen stk500 Klon an die externe (Arduino) 
Schnittstelle angeschlossen, weil dort die Programmier Pins zugänglich 
waren. Hab auch alle Signale mit dem Oszi überprüft (auf der Programmer 
Seite und direkt an den Pins des ATmega), und die Signale scheinen 
sinnvoll zu sein. Der ATmega ist aber nicht kaputt, weil in einer 
externen Schaltung kann ich ihn programmieren.

avrdude Befehl: sudo avrdude -c stk500v2 -p atmega1284p -P /dev/ttyUSB0 
-B 50 -e -B 10 -v

Fehlermeldung:
avrdude: stk500v2_command(): command failed
avrdude: initialization failed, rc=-1
         Double check connections and try again, or use -F to override
         this check.

von Funkenkitzler (Gast)


Lesenswert?

Hat keiner eine Ahnung was ich übersehen haben könnte?

von ich (Gast)


Lesenswert?

Moin,

In der Beschreibung steht, dass der Hauptprozessor ein ATmega16 ist. 
Hast Du den ausgetauscht? Hast Du evtl. ein Problem mit der 
Prozessoridentifikation?

von Funkenkitzler (Gast)


Lesenswert?

Hatte vergessen zu erwähnen, dass ich auf den ATmega1248p upgegraded 
habe.

Der ist auch Pinkompatibel mit dem ATmega16.

Siehe hier: http://www.nicai-systems.com/de/robotik/nibobee/tuning-kit

Hab den ATmega1284p nicht aus dem Tuning-Kit sonder extra gekauft, die 
Fuses sollten auch passen (External Clock mit max Startup Time)

Werde heute Abend noch überprüfen ob vielleicht mit dem Clock Signal 
(XTAL1) was nicht passt, weil soweit ich mich errinern kann hatte das 
Signal nur eine VPP von ca 600mV

von Frank L. (frank_l)


Lesenswert?

Hallo,

ich habe mal einen Blick in den Schaltplan geworfen.

Was mir zuerst aufgefallen ist, dass am Reset Pin kein 10K Widerstand 
gegen VCC zu finden ist.

Mein erster Gedanke war, das Teil kann man so nicht direkt 
programmieren. Die Programmierung erfolgt über das USB Interface.

Ergo, Du musst extern die Standardsoftware brennen und kannst 
anschließend über die USB Schnittstelle Deine Programme aufspielen.

Gruß
Frank

von Frank L. (frank_l)


Lesenswert?

Hallo,

noch vergessen, die ISP Schnittstelle ist mit dem ATTINY44 verbunden. Da 
geht sowieso nix.

Wenn Du den Kontroller in der Schaltung programmieren willst, musst Du 
den ATTINY44 entfernen und einen Widerstand von 10K gegen VCC einbauen.

Alles in allem mehr Aufwand, als die Standardsoftware einmal extern 
aufzuspielen und den Rest über die USB Schnittstelle zu erledigen.

Hast Du auch die anderen Teile wie im Kit beschrieben gewechselt?

Gruß
Frank

von Funkenkitzler (Gast)


Lesenswert?

Die anderen Teile habe ich nicht gewechselt, weil der 20MHz Quarz im 
Burger sowieso nicht funktioniert, und ein besser ATtiny würde mir 
nichts bringen, ist ja sowieso nur ein ISP Adapter. Und Zitat von der 
Seite mit dem Tuning Kit: "Hinweise zum NIBO Burger: Aus dem Tuning-Kit 
wird nur der ATmega1284 benötigt und gegen den ATmega16A ausgetauscht!"

Wegen dem Reset: ich vermute das der Reset über einen interne Pullup des 
ATtinys auf VCC gezogen wird.

Und ISP sollte schon gehen, weil die ISP Pins ja über 100Ohm Widerstände 
mit dem ATtiny verbunden sind.

Das mit dem ATtiny rausnehmen ist nicht so einfach, weil dann der ATmega 
sonst kein Clock Signal hat. Werde aber heute Abend den Trotdem mal 
rausnehmen und eine externes Clock Signal "reinpfuschen".

Auch mit dem originalen (bereits programmierten ATmega16) funktioniert 
das programmieren auf beide Arten nicht.

von Frank L. (frank_l)


Lesenswert?

Hallo,

dann würde ich sagen, Du fängst vorne an!

1. Ist alles korrekt bestückt (ich gehe davon aus, dass Du das Teil 
selbst gelötet hast)?
2. Keine kalten Lötstellen?
3. Wird die USB Schnittstelle erkannt?
4. Wenn die USB Schnittstelle erkannt wird und Du programmierst über die 
USB Schnittstelle, kommen am ISP Interface des ATMEGA Signale an?
5. Kommt das generierte Clock Signal an

usw.

Wenn die Fuses des ATMEGA nicht auf extern stehen, benötigt der ATMEGA 
kein Clock Signal um ein Programm aufzuspielen.

Gruß
Frank

von Frank L. (frank_l)


Lesenswert?

Hallo,

noch vergessen, wenn das ein neuer nicht programmierter ATMEGA ist, kann 
der mit dem externen Clock Signal eh nichts anfangen, da die Fuses nicht 
gesetzt sind.

Du wirst also nicht darum kommen, das Teil einmal extern zu 
programmieren um zu mindestens die Fuses korrekt zu setzen.

Aber Achtung einmal auf externen Takt umgestellt, musst Du immer einen 
externen Takt haben um das Teil zu programmieren.

Gruß
Frank

von Funkenkitzler (Gast)


Lesenswert?

Frank L. schrieb:
> Hallo,
>
> dann würde ich sagen, Du fängst vorne an!
>
> 1. Ist alles korrekt bestückt (ich gehe davon aus, dass Du das Teil
> selbst gelötet hast)?

Ja, zumindest ist mir in ca 3~ mal überprüfen nichts aufgefallen

> 2. Keine kalten Lötstellen?

Hab alle Lötstellen die mit ISP in Verbindungen stehen nachgelötet und 
mit dem Durchgangsmesser überprüft

> 3. Wird die USB Schnittstelle erkannt?

Ja

> 4. Wenn die USB Schnittstelle erkannt wird und Du programmierst über die
> USB Schnittstelle, kommen am ISP Interface des ATMEGA Signale an?

Ja

> 5. Kommt das generierte Clock Signal an

Ja, hat aber nur eine sehr kleine VPP von 600mv, finde im ATmega1284p 
Datenblatt aber nicht die Thresholdspannungen für eine externe Clock.

>
> usw.
>
> Wenn die Fuses des ATMEGA nicht auf extern stehen, benötigt der ATMEGA
> kein Clock Signal um ein Programm aufzuspielen.

Hatte ich bereits in einer externen Schaltung mit einem Clock Generator 
geflashed

>
> Gruß
> Frank


Habs jetzt auch geschafft den ATmega in der Schaltung zu Programmieren, 
mit folgender Modifikation:

1. ATtiny rausgenommen
2. Externes Clock Signal an XTAL1 angeschlossen (ca 500kHz)
3. 1k Widerstand von Reset nach VCC angeschlossen (10k waren zu viel 
wegen der Programmier LED)

sobald ich alles auf original zurückbaue gehts nicht mehr (das MISO 
Signal sieht auch anders aus)

Ich vermute mal das die Amplitude des Clock Signals einfach zu klein 
ist.

werde mir am Besten so einen Oszillator Baustein dazu bauen und den 
direkt am ATmega anschließen, oder ich muss mit der internen CLock 
auskommen

Vielen Dank für deine Hilfe.

LG
Funkenkitzler

von Georg G. (df2au)


Lesenswert?

Funkenkitzler schrieb:
> sehr kleine VPP von 600mv

Das ist wenig. Das Signal kommt vom Tiny über einen Kondensator. Der hat 
laut Schaltbild 10nF. Den solltest du kontrollieren, ob der Wert stimmt 
und ob irgendwo ein Kurzschluss ist.

von Funkenkitzler (Gast)


Lesenswert?

Georg G. schrieb:
> Funkenkitzler schrieb:
> sehr kleine VPP von 600mv
>
> Das ist wenig. Das Signal kommt vom Tiny über einen Kondensator. Der hat
> laut Schaltbild 10nF. Den solltest du kontrollieren, ob der Wert stimmt
> und ob irgendwo ein Kurzschluss ist

Der Kondensator  ist glaub ich nicht dran schuld, hab auch direkt am 
xtal2 des ATtinys nur so ein schwaches Signal

von Georg G. (df2au)


Lesenswert?

Dein Burger funktioniert, wenn der 1284 extern programmiert wurde. Also 
ist die Taktversorgung hinreichend.
Womit hast du die Amplitude des XTAL2 am Tiny gemessen?

Wenn also der Takt vom Prinzip her in Ordnung ist, kann es an der 
Frequenz liegen.
Hast du zufällig die clkdiv8 falsch gesetzt? Lass eine LED im 
Sekundentakt blinken, um sicher zu sein.

von Funkenkitzler (Gast)


Lesenswert?

Gemessen wurde mit einem Digitaloszi mit einer Bandbreite von 50MHz und 
einem Tastkopf mit 10x Einstellung.

>Wenn also der Takt vom Prinzip her in Ordnung ist, kann es an der Frequenz 
liegen.

Wie meinst du das? Zu schnell sollte er ja nicht sein, ATmega verträgt 
ja ab 4,5V die maximale Frequenz.
Zu langsam zum programmieren ist sie auch nicht, weil die ISP Clock 
liegt im Moment bei ca 100kHz, sonst würde es ja auch nicht in meiner 
externen Schaltung funktionieren (da wird eine 500kHz mit einem NE555 
generiert)

CLKDIV8 sollte nicht gesetzt sein, habe die Fuses mit 
http://www.engbedded.com/fusecalc/ berechnet und kontrolliert.

Ich weis nicht ob der Burger funktioniert wenn der ATmega von extern 
programmiert wurde, werde das dann heute mal ausprobieren. Somit wäre 
dann es dann echt leicht zu überprüfen ob das Clock Signal passt, danke 
für den Tipp.

von Georg G. (df2au)


Lesenswert?

Funkenkitzler schrieb:
> direkt am
> xtal2 des ATtinys nur so ein schwaches Signal

Dann hast du ein Problem, entweder dein Scope misst falsch oder dein 
Tiny ist defekt oder ein Schluss auf der Platine.

Nimm den Tiny aus der Fassung, biege XTAL2 etwas nach oben und setze ihn 
wieder in die Fassung, so dass XTAL2 frei in der Luft hängt. Miss die 
Amplitude an XTAL2. Es sollten gut 4Vss sein (bei 5V Vcc). Sonst hat der 
Tiny einen Schuss weg.

Wenn der Pegel in Ordnung ist, ihn mit XTAL2 auf "normal", aber den 1284 
entfernt. Kommt es zu einem Einbruch, hast du ein Problem auf der 
Platine.

von Georg G. (df2au)


Lesenswert?

Noch ein Nachtrag: Wenn die USB Schnittstelle erkannt wird, ist der Tiny 
in Ordnung.

Du schreibst "50MHz DSO". Meinst du vielleicht 50Msamples/s DSO? Das wäe 
etwas anderes. Ist der Tastkopf richtig abgeglichen? Irgendwie passen 
deine Beobachtungen nicht zueinander. Ich tippe nach wie vor auf falsche 
Fuses im 1284.

von Funkenkitzler (Gast)


Lesenswert?

> Nimm den Tiny aus der Fassung, biege XTAL2 etwas nach oben und setze ihn
> wieder in die Fassung, so dass XTAL2 frei in der Luft hängt. Miss die
> Amplitude an XTAL2. Es sollten gut 4Vss sein (bei 5V Vcc). Sonst hat der
> Tiny einen Schuss weg.

Wenn ich das mache liegt am XTAL2 eine GLEICH-Spannung von 1V.

Georg G. schrieb:
> Noch ein Nachtrag: Wenn die USB Schnittstelle erkannt wird, ist
> der Tiny
> in Ordnung.

Ja die Schnittstelle wird ja erkannt.

> Du schreibst "50MHz DSO". Meinst du vielleicht 50Msamples/s DSO? Das wäe
> etwas anderes. Ist der Tastkopf richtig abgeglichen? Irgendwie passen
> deine Beobachtungen nicht zueinander.

50MHz wird denke ich die maximale Frequenz sein, sampling rate liegt bei 
1GS/s. Tastkopf wurde am Oszi Testausgang abgeglichen

> Ich tippe nach wie vor auf falsche
> Fuses im 1284.

Habs nochmal ausgelesen:
lfuse: 0xE0
hfuse: 0xDF
efuse: 0xFF

von Georg G. (df2au)


Lesenswert?

Funkenkitzler schrieb:
> Wenn ich das mache liegt am XTAL2 eine GLEICH-Spannung von 1V.

Der Test war ein geistiger Fehlschuss von mir. Ohne XTAL2 schwingt da 
natürlich nichts. Der Sinn war, festzustellen ob irgendwo ein Schluss 
ist.

Die Fuses sind so in Ordnung.

Du siehst mich ratlos. Aus der Entfernung fällt mir nichts ein. Ich kann 
dir nur anbieten, dass du das Ding her schickst und ich suche den 
Fehler.

von Funkenkitzler (Gast)


Lesenswert?

Zu dir senden ist wirklich nicht nötig, werden mir einfach einen 
Oszillator besorgen, den irgendwie dazu Basteln und fertig ist.

Jedoch danke das du mir so viel geholfen hast!

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.