Forum: Mikrocontroller und Digitale Elektronik Atmel ohne Quarz Programmieren


von Marco K. (fuerst-rene)


Lesenswert?

Moin,

einfach gefragt kann man einen ATMEGA644 auch ohne Quarz Programmieren?
Früher ging das im Galep.
Aber den einen vor mir bekomme ich nicht Programmiert.
Ist als ob er nicht existiert oder nicht antwortet.

Grüße aus dem Schwarzwald

von Ma S. (turbotorsten)


Lesenswert?

GALEP5 software version 2.6.48 supportet den Chip.
Wenn du den Galep hast, kannst du den chip damit auch programmieren.
Normalerweise sollte sich der galep um die clocks kümmern.

von Hugo E. (Gast)


Lesenswert?

Marco K. schrieb:
> einfach gefragt kann man einen ATMEGA644 auch ohne Quarz Programmieren?

Mit ISP sollte das funktionieren. Im Auslieferungszustand laufen die µC 
mit internem R/C. So lange du die Fuses nicht auf externen Quarz 
umstellst, hast du Zugriff auf den µC. Mit externem Takt funktioniert 
das auch.

von Marco K. (fuerst-rene)


Lesenswert?

Danke Hugo genau das wollte ich wissen.

von Peter D. (peda)


Lesenswert?

Einen CPU-Takt brauchen die AVRs nur bei ISP. Er muß dann 4* höher sein, 
als der ISP-Takt.
Im Programmer werden sie aber im parallelen Modus programmiert, also 
ohne Takt.

Marco K. schrieb:
> Aber den einen vor mir bekomme ich nicht Programmiert.
> Ist als ob er nicht existiert oder nicht antwortet.

Was antwortet er denn auf das Signatur lesen?

von Marco K. (fuerst-rene)


Lesenswert?

Genau das bekomme ich zurück.
Habe jetzt 4 defekte das kann doch eigentlich nicht sein?
Programmer funktioniert aber an anderen 644 nur die 4 wollen nicht.

avrdude.exe: stk500v2_command(): command failed
avrdude.exe: stk500v2_program_enable(): bad AVRISPmkII connection 
status: Unknown status 0x00
avrdude.exe: initialization failed, rc=-1
             Double check connections and try again, or use -F to 
override
             this check.


avrdude.exe done.  Thank you.

von Theor (Gast)


Lesenswert?

Hm. Es ist unwahrscheinlich, dass fabrikfrische Chips defekt sind.
Sind sie denn fabrikfrisch? Bzw. gerade vom Händler gekommen? Pins 
verbogen?

Irgendeinen Unterschied zwischen den Chips oder in der Schaltung muss es 
ja geben.
Gib am besten mal mehr Details an, bitte. Schaltung. Anschluss (ISP?, 
direkt im GALEP-Sockel?, etc.), Stromversorgung, Produktionsdatum, 
Aufrufparameter und alles, was Dir sonst noch so einfällt.

von Marco K. (fuerst-rene)


Lesenswert?

Es geht um ein Produckt das in Serie gefertigt wird.
Jetz sind von 120 Platinen 4 wo sich der Atmel nicht Programmieren 
lässt.
644 SMD programmierung via ISP mit AVRISP mkII.
Habe beim Liferanten den 644 Tauschen lassen aber der Fehler bleibt.
Daher dachte ich der Quarz könnte der Fehler sein.
Aber da beim programmieren ja keiner benötigt wird verstehe ich 
überhaupt nichts mehr.

von Dietrich L. (dietrichl)


Lesenswert?

Ist dei ISP-Takt auch niedrig genug?

Siehe:
Peter D. schrieb:
> Einen CPU-Takt brauchen die AVRs nur bei ISP. Er muß dann 4* höher sein,
> als der ISP-Takt.

Marco K. schrieb:
> Habe beim Liferanten den 644 Tauschen lassen aber der Fehler bleibt.
> Daher dachte ich der Quarz könnte der Fehler sein.
> Aber da beim programmieren ja keiner benötigt wird verstehe ich
> überhaupt nichts mehr.

Das verstehe ich nicht. Wenn da ein Quarz drauf ist, wird er doch wohl 
benutzt!?
Beim Programmieren wird immer genau der CPU-Takt benutzt, der über die 
Fuses eingestellt ist.

von Theor (Gast)


Lesenswert?

Marco K. schrieb:
> Es geht um ein Produckt das in Serie gefertigt wird.
> Jetz sind von 120 Platinen 4 wo sich der Atmel nicht Programmieren
> lässt.

Was einen Fehler auf der Platine vermuten lässt. Möglicherweise eine 
Zinnbrücke oder ein Riß in einer Leiterbahn.


> 644 SMD programmierung via ISP mit AVRISP mkII.
> Habe beim Liferanten den 644 Tauschen lassen aber der Fehler bleibt.

Also, ist der Fehler von der Platine abhängig; jedenfalls eher als von 
dem AVR bzw. seinem Produktionsdatum. Könnte man aber trotzdem mal 
vergleichen.


> Daher dachte ich der Quarz könnte der Fehler sein.

Das kann eigentlich nicht sein, denn da der AVR im Auslieferungszustand 
auf dem internen RC-Oszillator steht, spielt die "Anwesenheit" des 
Quarzes erst einmal keine Rolle.

> Aber da beim programmieren ja keiner benötigt wird verstehe ich
> überhaupt nichts mehr.

Eben.

Mehr Details sind nötig, falls sich die Platinen nicht als Fehlerhaft 
erweisen.

von Peter D. (peda)


Lesenswert?

Eine Fehlerquelle können auch fehlende Pullups am /CS von weiteren ICs 
am SPI-Bus sein.

von Marco K. (fuerst-rene)


Lesenswert?

So noch ein paar Fakten:
Platine mit Multimeter nachgemessen vom ISP bis zum Pin durchgang und 
kein Schluss untereinander oder gegen VCC/GND.
Mit Oszi kann ich am Quarz nichts messen, kommt nichts raus.
Bei der Initial Programmierung setzt er die Fuses und bricht dann ab.
Ab da kann ich ihn überhaupt nicht mehr ansprechen.
Spricht also doch für einen def. Quarz?
Und die Bit-Frequenz habe ich jetzt auf 8,457kHz runter getaktet.

von Marco K. (fuerst-rene)


Lesenswert?

Pullups habe ich keine drin, noch nie.

von Karl B. (gustav)


Lesenswert?

Hi,
könnte es eventuell etwas mit der AVRDUDE-Version zu tun haben?
Zitat:
"...
Avrdude- Versionen
Die ursprünglich verwendete avrdude-Version 5.6 hat (wohl nur unter 
Windows) eine ärgerliche Macke: der Parameter -i , mit dem man die 
Kommunikation mit dem AVR verlangsamen kann, funktioniert nicht.

Daher gab es Probleme, wenn der Attiny auf niedrige Taktraten geflasht 
wurde (16 kHz oder 32 kHz).  Er war dann anschließend nicht mehr 
ansprechbar, weil die ISP-Taktrate höher als ein Viertel der 
AVR-Taktrate war.

Mit der beigefügten Version 5.10 funktioniert der Parameter -i, und mit 
"-i 1000" lassen sich auch AVRs "wieder einfangen", die auf 4 KHz (32 
kHz- Uhrenquarz plus Vorteiler 1/8) geflasht wurden..."/Zitat

http://www.elektronik-labor.de/AVR/AVRdude.html

Gibt es die Möglichkeit das STK500-Board zu verwenden?
Da kann man zwischen verschiedenen ATMEGA644 auswählen.
Welcher ist's den genau? 644A, 644P, 644PA?


ciao
gustav

von Theor (Gast)


Lesenswert?

Marco K. schrieb:
> So noch ein paar Fakten:
> Platine mit Multimeter nachgemessen vom ISP bis zum Pin durchgang und
> kein Schluss untereinander oder gegen VCC/GND.

Naja. Da gibt es noch mehr Möglichkeiten. Stromversorgung. Defekte oder 
fehlende Bauteile. Etcpp. Alles nachkontrollieren.

> Mit Oszi kann ich am Quarz nichts messen, kommt nichts raus.
> Bei der Initial Programmierung setzt er die Fuses und bricht dann ab.
> Ab da kann ich ihn überhaupt nicht mehr ansprechen.
> Spricht also doch für einen def. Quarz?

Hm. Das hättest Du mal von Anfang an sagen sollen. (Wir hassen 
Salamitaktik :-) ).
Wenn ich das recht verstehe, dann funktioniert die Programmierug 
einmal wohl; wenn die Fuses neu gesetzt werden. Richtig?
Dann, beim zweiten Mal nicht mehr. Richtig?
Wie werden die Fuses beim ersten Mal gesetzt?
Warum überhaupt, diese zweischrittige Prozess?

Nun, wenn das 196 Mal geklappt hat und viermal nicht, dann bleibt die 
Vermutung, dass irgendein Bauteil fehlt, falsch ist oder abweichende 
Werte hat. Ebenso der Rest der Schaltung. Siehe oben.
Da wohl beim ersten Mal, die Taktquelle geändert wird, steigt die 
Wahrscheinlichkeit, dass der Quarz falsch, fehlerhaft ist oder 
abweichenden Wert hat. Ebenso wird irgendein elektrischer Fehler in der 
Takterzeugung etwas wahrscheinlicher.

> Und die Bit-Frequenz habe ich jetzt auf 8,457kHz runter getaktet.

Schön.

von Theor (Gast)


Lesenswert?

Marco K. schrieb:
> Pullups habe ich keine drin, noch nie.

Es darum, ob welche drin sein sollten.

von Jim M. (turboj)


Lesenswert?

Theor schrieb:
>> Mit Oszi kann ich am Quarz nichts messen, kommt nichts raus.
>> Bei der Initial Programmierung setzt er die Fuses und bricht dann ab.
>> Ab da kann ich ihn überhaupt nicht mehr ansprechen.
>> Spricht also doch für einen def. Quarz?

Nö. Das spricht deutlich: Falsch gesetzte Fuses. Das passiert einem 
öfters, weil Fuses ja active low gesetzt werden.

Außerdem verwechselt man gerne "ExtOSC" mit "Ext Crystal" - nur 
letzteres funktioniert mit einem Quarzkristall.

Gib mal Deine Werte in Fusecalc ein: http://www.engbedded.com/fusecalc/

von Marco K. (fuerst-rene)


Angehängte Dateien:

Lesenswert?

Hallo,
der Atmel wird mittels Script geflascht, da kann ich keine Falschen 
Parameter setzen. Die erkenntniss das die Initialprogrammierung 
funktioniert bis zu dem Punkt wo dann das eigentliche Programm (im 
selben schritt) rein soll hatte ich erst beim Letzten erkannt da das 
ziemlich schnell geht.
Vom Prinzip her ist fast nichts an dem Atmel dran.
Ist ein RS232 Datenlogger auf SD-Karten.

hier mal der Anfang vom Skript:

AvrDude = "C:\WinAVR\bin\avrdude.exe"
AvrDudeConf = "C:\WinAVR\bin\avrdude.conf"

HexFile = "ATM644_SD.HEX"


' Variablen (fix)
'**********************************
Private WshShell
Private objFSO
Private sOptionsProg
Private sOptionsFuses
Private sRun
Private nRet
Private sMsg
Private nError

sOptionsFuses = " -C " & AvrDudeConf & " -p m644 -P usb -c avrispmkII 
-u -U efuse:w:0xFF:m -U hfuse:w:0xD9:m -U lfuse:w:0xEF:m"
sOptionsProg = " -C " & AvrDudeConf & " -p m644 -P usb -c avrispmkII  -U 
flash:w:" & HexFile & ":a"

'#####################################################################

Set WshShell = WScript.CreateObject("WScript.Shell")
Set objFSO = CreateObject("Scripting.FileSystemObject")

von Jim M. (turboj)


Lesenswert?

Marco K. schrieb:
> Vom Prinzip her ist fast nichts an dem Atmel dran.

Leider auch keine Abblock Kondensatoren, jedenfalls sehe ich keine im 
Schaltplan Ausschnitt.

Man kann auch Fehler im Layout haben, die das Anlaufen des Quarzes 
verhindern. Welchen Quatz verwendest Du (Datenblatt)?

von Wolfgang (Gast)


Lesenswert?

Marco K. schrieb:
> Mit Oszi kann ich am Quarz nichts messen, kommt nichts raus.

Das Signal, was aus dem Quarz raus kommt, machst du mit der Belastung 
durch die Messstrippe leicht kaputt. Wenn, dann solltest am Ausgang vom 
Oszillator (XTAL2) messen.

von Marco K. (fuerst-rene)


Lesenswert?

Die Kondensatoren sind drin aber in einem anderen Teil des Planes.
Bei einer funktionierenden Platine kann ich den Quarz messen mit dem 
DSO5012A von Agilent.
Schöne 16MHz vom Geyer KX-12B Quarz.

von Peter D. (peda)


Lesenswert?

Marco K. schrieb:
> Bei der Initial Programmierung setzt er die Fuses und bricht dann ab.
> Ab da kann ich ihn überhaupt nicht mehr ansprechen.

Das schon im ersten Post und Du hättest uns ne ganze Menge Zeit gespart.

Wenn der ISP-Takt zu hoch ist, kann es passieren, daß die Fuses auf 
Mumpitz gesetzt wurden.
Man kann dann versuchen mit einem langsamen externen Takt (100kHz) und 
langsamem ISP-Takt den MC wieder anzusprechen (Signatur lesen) und dann 
die Fuses zurück setzen.

von Marco K. (fuerst-rene)


Lesenswert?

Den Tackt habe ich zwischen 8kHz und bis zu 150kHz versucht.
Es kommt einfach nichts zurück.

von Karl B. (gustav)


Angehängte Dateien:

Lesenswert?

Peter D. schrieb:
> Man kann dann versuchen mit einem langsamen externen Takt (100kHz) und
> langsamem ISP-Takt den MC wieder anzusprechen

Hi,
so meinter @Peda das wohl:
Den Schieberegler nach links.

ciao
gustav

von Georg G. (df2au)


Lesenswert?

Ein immer wieder gern vorkommender Fehler ist eine Falschbestückung der 
Kondensatoren am Quarz. Bei SMD Bauteilen ist es dann oft nicht einmal 
sichtbar.

von Hugo E. (Gast)


Lesenswert?

Georg G. schrieb:
> Ein immer wieder gern vorkommender Fehler ist eine
> Falschbestückung der
> Kondensatoren am Quarz. Bei SMD Bauteilen ist es dann oft nicht einmal
> sichtbar.

Nicht mal, wenn der Quarz schwingt? ;-)

Marco K. schrieb:
> Bei einer funktionierenden Platine kann ich den Quarz messen mit dem
> DSO5012A von Agilent.
> Schöne 16MHz vom Geyer KX-12B Quarz.

von S. Landolt (Gast)


Lesenswert?

- Verbindungs- oder Kontaktproblem im Bereich des Quarzes (durchmessen)
- Defekt oder Fehlbestückung bei Quarz oder C17/C18

Meldet sich der ATmega644, wenn an XTAL2 ein Takt mit z.B. 1 MHz 
zugeführt wird?


Gruß aus dem Schwarzwald

von Georg G. (df2au)


Lesenswert?

Hugo E. schrieb:
> Nicht mal, wenn der Quarz schwingt? ;-)

Wie du selbst bemerkt hast, hat er den Quarz nur bei einer i.O. Platine 
arbeiten sehen. Bei den n.i.O. Platinen ist Ruhe, deshalb hat er ja den 
Felsen selbst im Verdacht.

von Hugo E. (Gast)


Lesenswert?

@Georg G.: Hast Recht. Denkfehler :-)

von Wolfgang (Gast)


Lesenswert?

S. Landolt schrieb:
> Meldet sich der ATmega644, wenn an XTAL2 ein Takt mit z.B. 1 MHz
> zugeführt wird?

Am Ausgang des Oszillators ein externes Signal einzuspeisen, dürfte 
keine so gute Idee sein.
(DS Kap. 2.2.9 XTAL2 Output from the inverting Oscillator amplifier)

von S. Landolt (Gast)


Lesenswert?

Ausprobieren, Wolfgang, bei mir funktioniert es.
Es soll ja auch kein regulärer Betriebszustand werden, sondern nur dazu 
dienen, den Fehler herauszufinden.

von Hugo E. (Gast)


Lesenswert?

S. Landolt schrieb:
> Ausprobieren, Wolfgang, bei mir funktioniert es.
> Es soll ja auch kein regulärer Betriebszustand werden, sondern nur dazu
> dienen, den Fehler herauszufinden.

Wolfgang hat Recht. Auch offiziell soll der Takt an XTAL1 eingespeist 
werden, steht auch so im Datenblatt...
XTAL1: Eingang
XTAL2: Ausgang

von Wolfgang (Gast)


Lesenswert?

S. Landolt schrieb:
> Ausprobieren, Wolfgang, bei mir funktioniert es.

Klar, wenn der Taktgenerator kräftig genug ist, überfährt er die 
Ausgangsstufe vom Oszillator.

Aber es sollte doch nichts dagegen sprechen, den externen Takt am 
Eingang anzuschließen, ohne den Ausgang zu vergewaltigen?

von S. Landolt (Gast)


Lesenswert?

"Vergewaltigen"? Merkwürdiger Ausdruck für unser Metier.
Aber vielleicht können wir uns darauf einigen, dass man beides, XTAL1 
und 2, versuchen sollte.

von Wolfgang (Gast)


Lesenswert?

S. Landolt schrieb:
> Aber vielleicht können wir uns darauf einigen, dass man beides, XTAL1
> und 2, versuchen sollte.

Zumindest weiss man dann hinterher, woran der Oszillator gestorben sein 
könnte - auch ein Gewinn. ;-)

von Hugo E. (Gast)


Lesenswert?

S. Landolt schrieb:
> "Vergewaltigen"? Merkwürdiger Ausdruck für unser Metier.

Passt schon, der Ausdruck. Wenn du zwei Ausgänge aufeinander schaltest 
mit der Hoffnung, daß der stärkere gewinnt...

von S. Landolt (Gast)


Lesenswert?

Der Oszillator stirbt nicht.
Hintergrund für den Versuch mit XTAL2: es könnte ja z.B. C17 
fälschlicherweise mit 100 nF bestückt worden sein.

(Wo ist eigentlich der erste Schwarzwälder, hat der sich ins Wochenende 
verabschiedet?)

von Wolfgang (Gast)


Lesenswert?

S. Landolt schrieb:
> Hintergrund für den Versuch mit XTAL2: es könnte ja z.B. C17
> fälschlicherweise mit 100 nF bestückt worden sein.

Das ließe sich mit hoher Wahrscheinlichkeit ausschließen, wenn man 
wüsste, ob die Platinen vom Automaten bestückt wurden oder einzeln in 
Heimarbeit gelötet wurden. Ein Blick auf eine funktionierende Platine 
könnte auch klären, ob es einen äußerlichen Unterschied zwischen den 
hoffentlich vorhandenen Abblockkondensatoren und den 
Quarzlastkondensatoren gibt.

von S. Landolt (Gast)


Lesenswert?

Bei Automatenbestückung passieren es keine Fehler?

Aber okay, warten wir also, bis sich Marco K. zurückmeldet.

von c-hater (Gast)


Lesenswert?

Peter D. schrieb:

> Einen CPU-Takt brauchen die AVRs nur bei ISP.

Nein, einen "CPU-Takt" brauchen die AVRs zum Programmieren garnicht. 
Wenn, wäre es sowieso nur ein "MCU-Takt" und nein, auch den brauchen sie 
nicht. Die MCU steht beim Programmieren nämlich unabänderlich im Reset. 
Aus sehr naheliegenden Gründen...

Was sie hingegen brauchen, ist ein IO-Takt. Und das liegt daran, dass 
halt die Programmierlogik genau damit betrieben wird (was wiederum daran 
liegt, dass bei den meisten (allen?) Devices Teile der regulär sowieso 
vorhandenen Peripherie beim ISP-Programmieren einfach "umgenutzt" 
werden. Bei Megas  die ISP-Hardware, bei Tinys das USI. Spannend finde 
ich den Tiny13, der sich zwar per ISP programmieren läßt, aber nichtmal 
ein reguläres USI besitzt. Welcher Idiot hat da eine halbe handvoll 
Gatter gespart und den sowiese kaum für irgendwas nützlichen Tiny13 auch 
noch das letzte halbwegs attraktive Feature geklaut?

> Er muß dann 4* höher sein,
> als der ISP-Takt.

Jepp. "Er" ist halt nur der IO-Takt, nicht der MCU/CPU-Takt.

> Im Programmer werden sie aber im parallelen Modus programmiert, also
> ohne Takt.

Auch beim parallele Programmieren gibt es natürlich einen Takt. Er 
entspricht exakt dem Takt, der sich beim seriellen Programmieren nach 
der 1/8-Teilung des IO-Taktes ergibt. Der Rest der Programmierengine ist 
nämlich absolut identisch. Die Mitnutzung der ohnehin vorhandene 
Hardware gibt es aber auch hier. Nämlich all die Logik, die auch im 
Betrieb bei Zugriffen auf Flash, Fuses und EEPROM involviert ist. 
Allerdings: wie auch beim (De-)Serialisierungsteil der Programmierlogik 
verhält sie sich bei anliegendem Reset-Signal ein wenig anders als im 
Normalbetrieb.

von c-hater (Gast)


Lesenswert?

c-hater schrieb:

> Auch beim parallele Programmieren gibt es natürlich einen Takt. Er
> entspricht exakt dem Takt, der sich beim seriellen Programmieren nach
> der 1/8-Teilung des IO-Taktes ergibt.

Das muss natürlich korrekterweise heissen: 1/32.

von Stefan F. (Gast)


Lesenswert?

c-hater schrieb:
> Spannend finde ich den Tiny13, der sich zwar per ISP
> programmieren läßt, aber nichtmal ein reguläres USI besitzt.

Vielleicht ist es auch besser so, die USI Schnittstelle ist nämlich 
ätzend, um es mal salopp auszudrücken.

von Karl K. (karl2go)


Lesenswert?

Wo ist denn die Resetbeschaltung?

von Wolfgang (Gast)


Lesenswert?

S. Landolt schrieb:
> Bei Automatenbestückung passieren es keine Fehler?

Der Automat bestückt alle Platinen der Charge gleich, es sei denn, 
jemand hat in den Gurt mit den 15pF Kondensatoren ein paar mit 100nF 
eingeschmuggelt.

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.