www.mikrocontroller.net

Forum: Compiler & IDEs ATMega8 / GCC / EEPROM will nicht


Autor: Sven P. (haku) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Huhu,

bin jetzt doch mal auf C umgestiegen (...).
Jedenfalls, alles läuft soweit, nur mit dem EEPROM will es nicht so 
wirklich:
/* Schnipp */
#include <stdint.h>
#include <avr/io.h>
#include <avr/eeprom.h>
#include <avr/pgmspace.h>
#include <avr/interrupt.h>

...

struct alarm_t EEMEM eemem_alarms[N_ALARMS];
volatile struct alarm_t alarms[N_ALARMS];

...

int main() {
  eeprom_read_block(alarms, eemem_alarms, sizeof(eemem_alarms));
}
/* Schnapp */

GCC schmeißt folgenden Fehler:
avr/include/avr/eeprom.h:172:3: error: #error "No write enable bit known for this device's EEPROM."

Warum auch immer... wenn ich mal für Spaß andere Register teste (z.B. 
"#ifdef PORTB"), dann ist kein einziges davon definiert.

ATMega8, avr-gcc (GCC) 4.2.1.

Ich kann mir keinen Reim drauf machen, hoffe, sonstwer hat da ne Idee 
-.-


Danke schonmal im Voraus.
lg Haku

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Welches Device ist denn im Makefile angegeben? Wenn gar keins angegeben 
ist, dann kann natürlich auch nicht der entsprechende Header eingebunden 
werden...

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Warum auch immer... wenn ich mal für Spaß andere Register teste (z.B.
>"#ifdef PORTB"), dann ist kein einziges davon definiert.

Tja, dann ist wohl der Prozessor nirgendwo definiert.

Autor: Sven P. (haku) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Witz ist ja, bis auf den EEPROM-Kram kompilierts fehlerfrei (auch 
die Portausgaben, die ich jetzt weggelassen hab).
Aber zur Beruhigung:
# Schnipp
MCU = atmega8
CLOCK = 4000000

CFLAGS = -Wall -mmcu=$(MCU) -Os -g -DF_CPU=$(CLOCK)UL -funsigned-char
LFLAGS = -mmcu=$(MCU) -g -Wl,-Map,object.map
UFLAGS = -dprog=dapa -dt_sck=20 -dt_reset=2000 -dlpt=0x378


DEPS = $(shell avr-cpp -MT x -MM $(1) | cut -c "4-")


.PHONY: default
default: flash.hex eeprom.hex



obj/main.o: $(call DEPS,main.c)
    avr-gcc $(CFLAGS) -o obj/main.o -c main.c
#Schnapp

Autor: Sven P. (haku) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok, vergesst den Fred hier.
DEPS = $(shell avr-cpp -MT x -MM $(1) | cut -c "4-")

Da ist der Fehler. Die Fehlermeldung wird nicht beim Kompilieren selbst 
erzeugt, sondern beim Ermitteln der Abhängigkeiten mit obigem Aufruf... 
und bei dem fehlt halt die Angabe des Prozessortyps.

Danke aber!

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.