Hallo Forengemeinde. Ich bin in Sachen Microcontrollerprogrammierung blutiger Anfänger. Mein erster Versuch ein hex auf einen ATMega32 zu schreiben ist fehlgeschlagen. Andauernd kommt eine Fehlermeldung, wie "error service modul failed" oder so. Da ich nunmal Anfänger bin, kann es natürlich sein, das ich bei dn ganzen Voreinstellungen Fehler gemacht hab. Was genau ich gesetzt habe, kann ich nicht sagen, da ich das Zeug im moment nicht zur verfügung stehen habe. Noch kurz meine Ausrüstung: AVR studio 5, STK500, ATMega 16-16PC ich komm nicht mehr weiter, bitte helft mir... FG
Also vielleicht nochmal ne Stufe niedriger: Ich habe ein Mini-programm in C geschrieben, kompiliert, ohne fehler. Wenn ich auf Tools, programming chip gehe, erscheint ein Fenster mit mehreren "Karteikarten". Was muss ich anklicken oder auswählen, damit ich meinen ATMega16 geflasht kriege?? Also die fuses, board options, memory etc. Ich hoffe, dass ihr erklärende Antworten habt...
Was muss ich eigentlich machem, damit ich eine Antwort bekomme, bzw. was habe ich nicht gemacht?? P.S.: Fehlermeldung: Executing Modules service command 'writeToMemory' with argument(s) [Module_3, Mem_prog_76, 0, 16384, 1] failed: TCF command: Modules:writeToMemory failed: [Code=1] [Service=Modules] [Format=ispProgramMem: Error status received: Got 0x80, expected 0x00]
als erstes auf die erste Registerkarte "Main" überprüfen das die eingestellte Programmiergeschwindigkeit kleiner als 1/4 ist also max. 1/8 der Taktgeschwindigkeit des µC ist. Wenn es hier schon falsch ist wird das Signaturauslesen auch nicht klappen. Außerdem kann es passieren wenn man den µC Takt langsamer einstellt plötzlich die Programmierung nicht mehr funktioniert weil man dann den Programmiertakt auch mit runter setzen muss, deswegen ruhig auf 125kbit gehen dann sind alle internen Takte bis hinunter zu 1 MHZ abgedeckt. Dann wählst du also deinen µC aus, auf Read Signatur klicken jetzt sollte ein OK kommen das die Signatur passt, wenn ja auf die 2te Registerkarte "Programm" wechseln bei Input Hexfile die hex-Datei auswählen und Programmieren. Mehr braucht man erstmal nicht. Oder man setzt den Punkt auf Use Current Simulator Flash Memory dann kann man direkt aus der Studiooberfläche auf den Chip mit dem Pfeil klicken und die Programmierung startet Dann gibts noch die Möglichkeit mit dem Auto Symbol, hierzu kann man in der Registerkarte Auto einstellen was alles gemacht werden soll. Einfacher ist es wenn man das Programm kompiliert und dann einfach auf Auto klickt dann wird das ausgeführt was man in der Registerkarte Auto einstellt z.B. µC löschen, Signatur prüfen, Programm flashen und vergleichen.
Hi >als erstes auf die erste Registerkarte "Main" überprüfen... Ist das im AVR-Studio 5 auch so? MfG Spess
sorry 5er Studio habe ich noch nicht probiert. MaWin: Hatte mal einen Link zu AVRFreaks gepostet, da wurde die nachträgliche Treiberinstallation erklärt. Kann es sein das du ein 64Bit Betriebssystem hast?
Ich hab einfach mal den ATMega16 auf den anderen roten Sockel gesteckt. Alles klappt. Hab aber schon das nächste Problem mit der Entprellen Funktion: #include <avr/io.h> #include <inttypes.h> #ifndef F_CPU # define F_CPU 11059000UL #endif #include <util/delay.h> /* bei alter avr-libc: #include <avr/delay.h> */ /* Einfache Funktion zum Entprellen eines Tasters */ uint8_t debounce(volatile uint8_t *port, uint8_t pin) { if ( !(*port & (1 << pin)) ) { /* Pin wurde auf Masse gezogen, 100ms warten */ _delay_ms(50); // Maximalwert des Parameters an _delay_ms _delay_ms(50); // beachten, vgl. Dokumentation der avr-libc if ( *port & (1 << pin) ) { /* Anwender Zeit zum Loslassen des Tasters geben */ _delay_ms(50); _delay_ms(50); return 1; } } return 0; } int main(void) { DDRB &= ~( 1 << PB0 ); /* PIN PB0 auf Eingang Taster) */ PORTB |= ( 1 << PB0 ); /* Pullup-Widerstand aktivieren */ while(1) { if (debounce(&PINB, PB0)) { /* Falls Taster an PIN PB0 gedrueckt */ /* LED an Port PD7 an- bzw. ausschalten: */ PORTD = PORTD ^ ( 1 << PD7 ); } } } Kompilieren fehlerfrei. Flashen fehlerfrei. Wenn ich die Flachbandkabel am Board anschließe (an Taster und LEDs) und den Taster drücke passiert absolut garnichts. Was kann diesmal falsch sein? Ich hab keine Ahnung mehr.
ich denke schon, denn ich nutze die Taster auf dem STK500.
ja aber auch die müssen doch verkabelt werden. vom Pin zum Taster dort müssen 5V anliegen, wenn die Taste gedrückt wird fällt die Spannung auf 0 ab, teste das mal mit dem Multimeter.
Hab durchgemessen und funktioniert, (bis auf das bei Taster gedrückt noch 0,... mV anliegen), was glaube ich nicht schlimm ist.
Hat sonst noch jemand eine Idee warum der Cotroller nicht will?
das passt, bin nicht so der C Experte aber hast du PortD mittels DDRD als Ausgang definiert.
OHA! Sieht tatsächlich so aus, als hätte ich das vergessen... Eigentlich habe ich den Code (bis auf ein paar Änderungen) 1:1 vom Tutorial übernommen. Ich habe nicht darauf geachtet. Vielen Dank vor Deine Hilfe Thomas, und an alle anderen natürlich auch. FG
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.