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


von Sven P. (Gast)


Lesenswert?

Huhu,

bin jetzt doch mal auf C umgestiegen (...).
Jedenfalls, alles läuft soweit, nur mit dem EEPROM will es nicht so 
wirklich:
1
/* Schnipp */
2
#include <stdint.h>
3
#include <avr/io.h>
4
#include <avr/eeprom.h>
5
#include <avr/pgmspace.h>
6
#include <avr/interrupt.h>
7
8
...
9
10
struct alarm_t EEMEM eemem_alarms[N_ALARMS];
11
volatile struct alarm_t alarms[N_ALARMS];
12
13
...
14
15
int main() {
16
  eeprom_read_block(alarms, eemem_alarms, sizeof(eemem_alarms));
17
}
18
/* Schnapp */

GCC schmeißt folgenden Fehler:
1
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

von Johannes M. (johnny-m)


Lesenswert?

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

von holger (Gast)


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.

von Sven P. (Gast)


Lesenswert?

Der Witz ist ja, bis auf den EEPROM-Kram kompilierts fehlerfrei (auch 
die Portausgaben, die ich jetzt weggelassen hab).
Aber zur Beruhigung:
1
# Schnipp
2
MCU = atmega8
3
CLOCK = 4000000
4
5
CFLAGS = -Wall -mmcu=$(MCU) -Os -g -DF_CPU=$(CLOCK)UL -funsigned-char
6
LFLAGS = -mmcu=$(MCU) -g -Wl,-Map,object.map
7
UFLAGS = -dprog=dapa -dt_sck=20 -dt_reset=2000 -dlpt=0x378
8
9
10
DEPS = $(shell avr-cpp -MT x -MM $(1) | cut -c "4-")
11
12
13
.PHONY: default
14
default: flash.hex eeprom.hex
15
16
17
18
obj/main.o: $(call DEPS,main.c)
19
    avr-gcc $(CFLAGS) -o obj/main.o -c main.c
20
#Schnapp

von Sven P. (Gast)


Lesenswert?

Ok, vergesst den Fred hier.
1
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!

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.