Fehlermeldung bei bschreiben von ATMega16

OP #2245437
Lesenswert?

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
OP #2245857
Lesenswert?

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...
OP #2246266
Lesenswert?

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]
#2246355
Lesenswert?

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.
OP #2246505
Lesenswert?

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.
OP #2246658
Lesenswert?

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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren