Hallo, ich habe ein Problem mit AVRDUDE. Ich habe einen neuen AVR ATmega8 in meine bereits funktionierende Schaltung gewechselt und ihn mit AVRDUDE zu programmieren versucht, doch leider bricht das Programm mit folgender Fehlermeldung ab: avrdude: verifying ... avrdude: verification error, first mismatch at byte 0x0000 0x12 != 0xff avrdude: verification error; content mismatch avrdude: safemode: Fuses OK avrdude done. Thank you. *** Error code 1 Mein Makefile sieht folgendermaßen aus: MCU=atmega8 all: logger.S avr-gcc -mmcu=${MCU} logger.S -o logger.elf avr-objcopy -O ihex logger.elf logger.hex install: sudo avrdude -p m8 -P /dev/ttyU0 -b 115200 -c avr109 -U flash:w:logger.hex Das Assemblerfile sieht so aus: ; ; $Id: logger.S,v 1.2 2009/07/09 09:52:58 wolfram Exp $ ; #define ASSEMBLER 1 #define __SFR_OFFSET 0 #include <avr/io.h> .text ; was nun folgt, gehört in den FLASH-Speicher .global main ; main ist auch in anderen Modulen bekannt main: ;.INCLUDE "../include/m8def.inc" ;.CSEG ;.ORG 0x0000 rjmp reset ; RESET 0x0000 reti ; INT0 0x0001 reti ; INT1 0x0002 reti ; TIMER2 COMP 0x0003 reti ; TIMER2 OVF 0x0004 reti ; TIMER1 CAPT 0x0005 rjmp timer1_compare ; TIMER1 COMP A 0x0006 reti ; TIMER1 COMP B 0x0007 reti ; TIMER1 OVF 0x0008 rjmp timer_0_overfl ; TIMER0 OVF 0x0009 reti ; SPI, STC 0x000A rjmp receive_byte ; USART RXC 0x000B reti ; USART URDE 0x000C reti ; USART TXC 0x000D rjmp ADC_complete ; ADC 0x000E reti ; EE_RDY 0x000F reti ; ANA_COMP 0x0010 reti ; TWI 0x0011 reti ; SPM_RDY 0x0012 reset: Für Eure Hilfe bedanke ich mich im voraus. HUE
:
Verschoben durch User
Dein ISP-Takt ist zu schnell für die 1 MHz CPU-Frequenz, mit denen ein AVR typischerweise ausgeliefert wird. Füge mal -B10 in die Kommandozeile hinzu.
Hallo, leider hat -B10 keine Auswirkung auf das Ergebnis. Der Fehler ist immer noch der gleiche. Hat noch jemand eine Idee? Mit freundlichen Grüßen HUE
Dann musst du wohl mal dein Programmiergerät befragen. Ich sehe gerade, dass es ja ein AVR109 ist, da wirkt der Parameter -B10 auch nicht, da es bei AVR109 keine im Protokoll vorgesehene Methode gibt, den ISP-Takt zu modifizieren.
Hallo, ich habe schon verschiedene Settings probiert, doch keinen Erfolg. Mir ist auch ein Rätsel, warum vorher die Schaltung programmiert werden konnte, jetzt nach dem Chipwechsel nicht mehr. Ich habe auf dem Board einen 16Mhz Quartz verbaut. Kann dies das Problem für die fehlschlagende Kommunikation sein? MfG HUE
HUE schrieb: > Ich habe auf dem Board einen 16Mhz Quartz verbaut. Kann dies das Problem > für die fehlschlagende Kommunikation sein? Die Kommunikation (mit dem Programmer) schlägt ja gar nicht fehl. Wo ist der 16-MHz-Quarz drauf, auf dem Programmer oder auf dem Targetboard? Ein frischer AVR wird mit 1 MHz getaktet und muss mit weniger als 250 kHz ISP-Takt programmiert werden. Das muss den Programmer beherzigen -- AVRDUDE kann (beim AVR109-Protokoll) da nichts dran ändern.
Hallo und guten Abend, ich habe soeben die Fuse Bytes High and Low gelesen und festgestellt, daß sie den Werkseinstellungen entsprechen. Dies ging ohne Probleme zu Lesen, wenn ich aber diese Bytes schreiben will, geht es wieder schief? Was soll denn das sein, das ich hier so mit Mißerfolg verwöhnt werde. ;-) MfG HUE
Hallo, ich konnte die Fuse Bytes doch noch setzen, ich hatte nur einen Fehler in der Anweisung zum Setzen. Leider bleibt das Problem des Flashens von Programmen ein Problem. Fazit: Die Einstellungen von AVRDUDE sind in Ordnung, da die Fuse Bytes ordnungsgemäß gelesen und geschrieben werden. Nur das Updaten des Flash funktioniert nicht. Hat jemand noch einen Tip zum Schluß? Mit freundlichen Grüßen HUE
HUE schrieb: > Hat jemand noch einen Tip zum Schluß? Ja, den, den ich dir die ganze Zeit schon gebe und den du beharrlich ignorierst: bring deinen Programmer dazu, den ISP-Takt runterzudrehen. Ja, man kann mit etwas zu viel Takt trotzdem noch fuses lesen, aber beim Programmieren von Massendaten kracht es dann. Alternativ kannst du die Fuses so stellen, dass der AVR höher getaktet wird (vom externen Quarz betreiben oder schnelleren RC-Oszillator wählen). Falls es das nicht ist (d. h., du hast es nachgemessen), dann müsstest du deinen Programmer überprüfen. Welchen du genau benutzt, hast du uns bislang sowieso noch nicht verraten.
Hallo nochmals, ich habe, da ich sehr unter Zeitdruck stand, die Stategie geändert und meine Schaltung mit GAVRASM und PONYPROG zum laufen gebracht. Ich habe echt Nerven gelassen, da ich auch noch die Rechner und das OS wechseln mußte. Doch nun zum alten Problem: Ich habe eine Testschaltung mit einem Mega8 ohne ext. Oszillator oder Quartz. Zum Flashen nehme ich einen Programmer aus dem Internetshop: www.myirshop.de, welcher heißt: 'ISP USB Programmer für Atmel AVR Studio'. Dann habe ich meine Quellen mit folgendem Makefile erzeugt und geflasht: MCU=atmega8 all: logger.S avr-gcc -mmcu=${MCU} -c logger.S avr-ld -mavr2 logger.o -o logger.elf avr-objcopy -O ihex logger.elf logger.hex install: sudo avrdude -p m8 -P /dev/ttyU0 -b 115200 -c avr109 -U flash:w:logger.hex:i Die Assembler Datei habe ich angehängt. Der Fehler ist immer der gleiche: avrdude: 244 bytes of flash written avrdude: verifying flash memory against logger.hex: avrdude: load data flash data from input file logger.hex: avrdude: input file logger.hex contains 244 bytes avrdude: reading on-chip flash data: Reading | ################################################## | 100% 0.14s avrdude: verifying ... avrdude: verification error, first mismatch at byte 0x0000 0x12 != 0xff avrdude: verification error; content mismatch avrdude: safemode: Fuses OK avrdude done. Thank you. *** Error code 1 Stop in /home/wolfram/source/avr/logger_mega8 (line 9 of Makefile). Für Eure Hilfe danke ich im Voraus. MfG HUE
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.