ATMega8 / GCC / EEPROM will nicht

Gast #854832
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
Gast #854839
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
Gast #854847
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!

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