www.mikrocontroller.net

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


Autor: Sebastian M. (compressed)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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.
#include <avr\io.h>
#include <avr/eeprom.h>
#include <inttypes.h>
#ifndef EEMEM
#define EEMEM  __attribute__ ((section (".eeprom")))
#endif

uint8_t  eepromvar EEMEM;

//------MAIN Programm----------------------------------

main ()
{
   while(1)
   {
             ;
   }
} 

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.

Autor: Stefan Ernst (sternst)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Sebastian M. (compressed)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Stefan Ernst (sternst)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Sebastian M. (compressed)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Jörg G. (joergderxte)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
eeprom_read_byte vs uint16_t?

Wozu könnte es eeprom_read_word geben?

scnr, Jörg

Autor: Sebastian M. (compressed)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.