Forum: Mikrocontroller und Digitale Elektronik ATMEGA644 Programmierproblem


von PROXXX (Gast)


Lesenswert?

Hallo,

ich habe ein ATMEGA644 in meiner Schaltung. Bis gestern lief auch alles 
noch einwandfrei. Heute habe ich probiert den Internen Clock auf 8Mhz zu 
stellen in dem ich bei den Fuses den DIV8 raufgenommen habe. Nun habe 
ich das Problem das wenn ich programmieren will (avr studio 6.2) er mir 
keinen Fehler anzeigt jedoch aber die Programmänderungen nicht 
übernimmt. Lesen kann ich den MEGA644 noch vollständig. Was kann ich da 
jetzt machen?
achja den DIV8 bekomme ich jetzt nicht mehr rein da ich dann die eine 
register Fehlermeldung bekomme.

danke schonmal

von Mike J. (linuxmint_user)


Lesenswert?

Was für einen Programmieradapter nutzt du?

Die Frequenz lag vorher also bei 1MHz?
Das sollte kein Problem sein, es sei denn du hast versehentlich auch 
noch den Schreibschutz des Chips gesetzt.

Könntest du bitte mal die beiden hex-Werte die du ausliest hier posten?

: Bearbeitet durch User
von Peter II (Gast)


Lesenswert?

kann es sein das es beim kompilieren einen Fehler gibt und du immer das 
"alte" Hexfile einspielst.

von Mike J. (linuxmint_user)


Lesenswert?

Probiere einfach mal die Werte mit dem AVR8-Burn-o-Mat auszulesen.

http://avr8-burn-o-mat.aaabbb.de/

von PROXXX (Gast)


Lesenswert?

Also ich benutze eine ISP von TREMEX. Die lief ja auch soweit die ganze 
zeit. hier einmal alles was ich im fuses Menü auslesen kann:


BODLEVEL = DISABLED
OCDEN = [ ]
JTAGEN = [ ]
SPIEN = [X]
WDTON = [ ]
EESAVE = [ ]
BOOTSZ = 4096W_7000
BOOTRST = [ ]
CKDIV8 = [ ]
CKOUT = [ ]
SUT_CKSEL = INTRCOSC_6CK_65MS

EXTENDED = 0xFF (valid)
HIGH = 0xD9 (valid)
LOW = 0xE2 (valid)

von PROXXX (Gast)


Lesenswert?

ich habe hier noch einen zweiten atmega644 bei dem ich folgende werte 
auslese. welche aber richtig sind kann ich nicht sagen. vielleicht weiß 
das jemand?


BODLEVEL = DISABLED
OCDEN = [ ]
JTAGEN = [X]
SPIEN = [X]
WDTON = [ ]
EESAVE = [ ]
BOOTSZ = 4096W_7000
BOOTRST = [ ]
CKDIV8 = [X]
CKOUT = [ ]
SUT_CKSEL = INTRCOSC_6CK_65MS

EXTENDED = 0xFF (valid)
HIGH = 0x99 (valid)
LOW = 0x62 (valid)

von Mike J. (linuxmint_user)


Lesenswert?

Also der zweite steht auf den Werkseinstellungen.

Dein 1. Controller muss eigentlich funktionieren.

"Peter II" hat einen recht guten Tip gegeben.

Du solltest einfach in deinem Projekt ein "clear" durchführen und im 
Arbeitsverzeichnis unter Release schauen ob die Hex-Datei gelöscht wird.

Dann gehst du noch mal auf "build" und dann müsstest du sehen dass dort 
eine neue hex-Datei erzeugt wurde. (kannst dir ja auch den Datumsstempel 
im Explorer anzeigen lassen)

Du kannst diese Datei von AVRstudio auf deinen Chip spielen lassen oder 
du macht es mit AVRdude selbst.

Dazu öffnest du CMD (Start->Ausführen... und CMD eintippen) wechselst in 
das Verzeichnis wo die Hex-Datei liegt und tippst ein:
avrdude -pm644 -cusbasp -Uflash:w:ATmega644.hex:a

Die Datei heißt in meinem Fall: ATmega644.hex
Mein Programmer heißt: USBasp (daher: -cusbasp)

Du müsstest deinen Programmer aus der Liste raussuchen.
Mit dem Befehl: "avrdude -c ?" (ohne Gänsefüßchen) bekommst du eine 
Lister der unterstützten Programmieradapter.

von PROXXX (Gast)


Lesenswert?

ok habe clear durchgeführt und das hex file wurde neu erzeugt. das 
funktioniert also. nur ich kann das fuße div8 nicht setzen. wie kann ich 
das wieder zum laufen bekommen?
und mal als frage noch dazu: wie bekomme ich den mega644 auf 8MHz? so im 
Standard läuft er ja auf 1 MHz.

von Peter D. (peda)


Lesenswert?

PROXXX schrieb:
> wie bekomme ich den mega644 auf 8MHz? so im
> Standard läuft er ja auf 1 MHz.
1
#include <avr/power.h>
2
3
clock_prescale_set( clock_div_1 );

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.