Forum: Compiler & IDEs WINAVR mit myavr Prog Tool// EEPROM Brennfehler


von Sebastian M. (compressed)


Angehängte Dateien:

Lesenswert?

Moin moin,
ich habe folgendes Problem :)
ich möchte einen meiner Codes (Sprache C) mit einer EEPROM funktion 
erweitern. Leider klappt das Brennen auf den ATMEGA8 nicht (myavr Board 
MK2 USB).

Ich benutze WINAVR Programmers Notepad zum schreiben und myavr Prog Tool 
zum brennen.

Wenn ich z.B. das hier brennen möchte, brennt das ProgTool ewig ohne 
Fortschritt.
1
#include <avr\io.h>
2
#include <avr/eeprom.h>
3
#include <inttypes.h>
4
#ifndef EEMEM
5
#define EEMEM  __attribute__ ((section (".eeprom")))
6
#endif
7
8
uint8_t  eepromvar EEMEM;
9
10
//------MAIN Programm----------------------------------
11
12
main ()
13
{
14
   while(1)
15
   {
16
             ;
17
   }
18
}

sobald ich das EEMEM wegnehme gehts wieder wunderbar.
Wenn ich es richtig verstanden habe muss ich den Anhang EEMEM aber 
schreiben, damit die variable im EEPROM reserviert wird. Richtig?

Ich habe diesen code auch mal im myavr workpad kopiert und versucht von 
dort zu brennen. Mit Erfolg! Nur kommt es für mich nicht in Frage mit 
dem workpad zu arbeiten.
Könnte es vielleicht auch ein Fehler der makefile sein?
Habe die mal als gif angehängt.


Nachtrag: komischerweise  hängt sich das Prog tool jetzt auch auf wenn 
ich eine hex öffne wo was mit EEMEM verwendet wird :?

Im myavr Forum habe ich parallel auch eine Anfrage laufen. Ich hoffe das 
verärgert jetzt keinen hier?

Ich danke für eure Hilfe.

von Stefan E. (sternst)


Lesenswert?

Wenn du die EEPROM-Daten mit ins Flash-Hex packst, ist es auch kein 
Wunder, wenn es Probleme gibt.

Dein Makefile ist aber auch in noch anderen Dingen unzureichend. Z.b. 
braucht auch das Linken die -mmcu Option.

PS: Der Screenshot sieht ja nach MFile aus. Wie schafft man es denn, mit 
MFile ein solches "Makefile" zu generieren?

von Sebastian M. (compressed)


Lesenswert?

erstmal Danke.
Die makefile hab ich mir mal im Netz geladen, weil meine Versuche damals 
gescheitert sind mit m-file eine lauffähige makefile zu generieren.

Kannst du mir (unwissender Neuling) bitte erklären, wo ich das "uint8_t 
eepromvar EEMEM;" hinschreiben soll?
und welche Zeile ich wo im makefile ergänzen soll?

von Stefan E. (sternst)


Lesenswert?

Sebastian Möller schrieb:

> Kannst du mir (unwissender Neuling) bitte erklären, wo ich das "uint8_t
> eepromvar EEMEM;" hinschreiben soll?

Das ist schon am richtigen Platz. Nur die Initialisierungsdaten für das 
EEPROM (in diesem Fall nur eine einzelne 0) haben im Hex-File nichts 
verloren.

> und welche Zeile ich wo im makefile ergänzen soll?

Versuche es nochmal mit MFile. Oder lade dir von Atmel das AVR-Studio 
herunter, dann brauchst du dich gar nicht mehr ums Makefile kümmern.

von Sebastian M. (compressed)


Lesenswert?

habe jetzt die makefile mit mfile erstellt.Und brenne mit AVR STudio, 
klappt gut soweit. Jetzt habe ich aber noch ein anderes Problem

wenn ich anstatt:
uint8_t eepromvar EEMEM;

uint16_t eepromvar EEMEM;
schreibe und dann die Befehle wie:

eeprom_write_byte(&eepromvar, var);
oder
var = eeprom_read_byte(&eepromvar);
benutze bekomme ich folgende Fehlermeldungen beim compilieren:

main.c:102: warning: passing argument 1 of 'eeprom_write_byte' from 
incompatible pointer type

main.c:463: warning: passing argument 1 of 'eeprom_read_byte' from 
incompatible pointer type

Was mache ich diesmal falsch?

von Jörg G. (joergderxte)


Lesenswert?

eeprom_read_byte vs uint16_t?

Wozu könnte es eeprom_read_word geben?

scnr, Jörg

von Sebastian M. (compressed)


Lesenswert?

manchmal sieht man vor lauter Bäumen den Wald kaum. Tut mir leid für die 
dämliche Frage.

Damit wäre alles geklärt. //Besten Dank

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.