Hi zusammen, ich habe ein problem was mich mittlerweile zum verzweifeln bringt :/ AVR Studio 4.18 684 kann mein .hex file nicht vollständig flashen. Es sieht so aus, das es flashed und dann an einer Stelle hängen bleibt und dann die typische Fehlermeldung wirft: ISP Mode Error Das witzige ist, das ich nun nach 2 Tagen googlen und lesen noch nix gefunden habe was mich weiterbringen könnte. Dafür kann ich den Fehler reproduzieren und zwar habe ich folgendes Beispielprogramm: #include <stdlib.h> #include <avr/io.h> #define F_CPU 8000000 #include <util/delay.h> #include "lcd.h" int main(void) { int i; i = 0; DDRB = 0xFF; DDRD &= ~(1 << PD3); // Pin PD3 als Eingang PORTD |= (1 << PD3); // internen Pull-Up an PD3 aktivieren // Led blinken lassen, um zu sehen ob das prg läuft _delay_ms(100); PORTB = PINB ^ (1 << PB1); _delay_ms(1000); PORTB = PINB ^ (1 << PB1); _delay_ms(1000); // Led blinken lassen, um zu sehen ob das prg läuft /* initialize display, cursor off */ lcd_init(LCD_DISP_ON); lcd_clrscr(); for (;;) { if ( !(PIND & (1<<PIND3)) ) { _delay_ms(100); if ( !(PIND & (1<<PIND3)) ) { if ( i > 3) { i = 0; } lcd_clrscr(); lcd_gotoxy(0,i); lcd_puts("LCD Test Line\n"); PORTB = PINB ^ (1 << PB1); // Led an/aus-schalten, zur Kontrolle i = i + 1; } } } } Diese Programm läuft problemlos. Füge ich nun in die for-schleife exakt die gleiche Pin-Abfrage hinzu, nur mit PIND2, dann kann AVR-Studio sie nicht mehr flashen. Es wurden makefiles aus der LCD-Lib von Peter sowie makefiles aus den Tutorials verwendet. Benutze Hardware: AVR-Studio 4.18 684 WINAVR 20090313 USB-ISP aus der Bucht + Detecting on 'Auto'... + AVRISP with V2 firmware found on COM5: + Getting revisions.. HW: 0x0f, SW Major: 0x02, SW Minor: 0x0a .. OK + Getting isp parameter.. SD=0x01 .. OK Atmel AT90S4433 mit 8 MHz Quarz Habe das gleiche Problem wenn ich es auf meinem Notebook mit Win XP versuche, als auch unter Win 7. Vielleicht kann mir ja Jemand von Euch weiterhelfen. Gruss, Christian
Häng mal das *.hex File hier an. Ich kann es problemlos flashen, bin mir nur nicht sicher ob es exakt das gleiche ist.
mmoin bei Atmel gibts schon SP1 fürs AVRStudio , nur mal so angemerkt mfg
Ich bin dem Problem etwas näher gekommen, es liegt an der Typenzuweisung von "int i" Wenn ich es auf "uint8_t i;" änder, dann flashed er es problemlos. Witzig ist nur das ich bei einem anderem Testprogramm, 3x uint8_t variablen habe, und er sobald ich der dritten einen Wert zuweise, genau wieder beim flashen hängen bleibt. PS: Danke für den hinweiss mit dem SP1-Update :)
Ich muss doch irgendwo einen Fehler haben, versuche ich mit der LCD-Libary vom Peter z.B. 4 Zeilen nacheinander auszugeben, kann ich auch wieder nicht flashen, erst wenn ich zwischen die Zeilen ein _delay_us() einbaue... Sind macht das ganze nun nicht mehr :/
Wenn du Alleinunterhalter spielst und deinen Code nicht preisgeben willst, dann kann dir auch keiner helfen.
Huhu, ich noch einmal, ich weiss nicht mehr weiter, ich kann doch nur einen typen-konflikt haben?!?!? Ich habe mal die kompletten Dateien angehängt, in der taster.c ist die Zeile 151 mit "// Fehlerzeile" makiert worden, sobald man dort die beiden // am Anfang entfernt, compiliert und flashed, hängt sich AVR-Studio wieder auf. Gruss, Christian
Dürfte schwierig sein, Dein Problem nachzuvollziehen, Deinen AT90S4433 gibts wohl nur noch im Museum. Kannst Du mal nen ATmega8 ausprobieren, ob der geht? Peter
@Peter: Hehe, so in der Art kam es mir auch vor, als ich ihn hier liegen sah ;) Ich habe hier noch einen ATmega48, der wird dann morgen mal als Vergleich herhalten müssen. Nun habe ich echt keinen Nerv mehr, und es entzieht sich einfach jeglicher Logik, was hier passiert :/
Guten Morgen, transplantation geglückt, Patient ATmega48 lebt, und läuft problemlos, mit folgendem Programm: #include <stdlib.h> #define F_CPU 8000000 #include <util/delay.h> #include "lcd.h" int LCDMenuPoint; int main(void) { char buffer[7]; LCDMenuPoint = 0; _delay_ms(30); lcd_init(LCD_DISP_ON); while(1) { _delay_ms(2000); lcd_gotoxy(0,0); lcd_puts("Counter="); itoa(LCDMenuPoint, buffer, 10); lcd_puts(buffer); LCDMenuPoint = LCDMenuPoint + 1; } } Ich denke also das der alte at90s4433 von mir einen weg hat...soviel panik für nix, sorry :/ Gruss, Christian
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.