Forum: Compiler & IDEs GCC und Atmega2560


von tillt (Gast)


Lesenswert?

Hallo,

ich versuche jetzt schon seit einiger Zeit mein mc den atmega2560 in 
c/c++ zu programmieren; leider kann ich in der aktuellen version keine 
passende header finden.

Es wird zwar geschrieben das mein mc von gcc unterstützt wird, ich aber 
keine Ahnung habe welche header ich includen muss bzw. wie ich den mc 
dann ansprechen muss...

Hab auch schon gegoogelt, aber nur atmega2560-Dev-Pack gefunden, womit 
ich nicht klar komme...

Über Hilfe wäre ich sehr dankbar (vielleicht auch ein kleines Bsp.prog 
z.B. Led aus/an)

mfg tillt

von Johannes M. (johnny-m)


Lesenswert?

Also in meiner aktuellen Version gibts die iom2560.h durchaus. Abgesehen 
davon wird die Device-spezifische Headerdatei sowieso nie direkt 
eingebunden, sondern immer nur die allgemeine io.h. Das Device wird im 
Makefile angegeben, um den Rest brauchst Du Dich nicht zu kümmern.

von tillt (Gast)


Lesenswert?

danke für den Tipp!
werd es heut noch ausprobieren

grüße tillt

von tillt (Gast)


Lesenswert?

Hab es ausprobiert und hat geklappt...

Hab jetzt aber ein anderes Problem.. -> ich schaffe es nicht mein mc 
über avr-dude zu programmieren; kriege immer die Fehlermeldung ...device 
com3 can´t open"; woran kann das liegen, Bascom ist die die einzigste 
möglichkeit mein chip zu brennen (was weil ich in c prog ziemlich lästig 
ist)!

von tillt (Gast)


Lesenswert?

Nachtrag: Benutze ein STK200 (von Bascom)

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

com3 (ein serieller Port) passt nicht zu STK200 (ein paralleler
bit-bang programmer).  Meine Kristallkugel ist leider gerade zur
Reparatur, damit weiß ich nicht so ganz genau, wie dein Programmer
angeschlossen ist bzw. was dich veranlasst hat, com3 irgendwann
irgendwie irgendwo einzustellen.

von tillt (Gast)


Lesenswert?

Hab jetzt LTP1 eingestellt und kann so mein chip löschen..., aber nicht 
richtig beschreiben; es wird nie das einprogrammiert, was ich schreibe 
und immer der gleiche Fehler zurückgegeben?

Hier ist der Auszug aus meiner Batch-Datei:


C:\Dokumente und Einstellungen\till\Eigene Dateien\AVR\C>make clean

-------- begin --------

Cleaning project:
rm -f main.hex
rm -f main.eep
rm -f main.cof
rm -f main.elf
rm -f main.map
rm -f main.sym
rm -f main.lss
rm -f ./main.o
rm -f ./main.lst
rm -f main.s
rm -f main.d
rm -f main.i
rm -rf .dep
-------- end --------


C:\Dokumente und Einstellungen\till\Eigene Dateien\AVR\C>make all

-------- begin --------
avr-gcc (GCC) 4.2.2 (WinAVR 20071221rc1)
Copyright (C) 2007 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is 
NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR 
PURPOSE.


Compiling C: main.c
avr-gcc -c -mmcu=atmega2560 -I. -gdwarf-2 -DF_CPU=8000000UL -Os 
-funsigned-char
-funsigned-bitfields -fpack-struct -fshort-enums -Wall 
-Wstrict-prototypes -Wa,-
adhlns=./main.lst  -std=gnu99 -Wundef -MMD -MP -MF .dep/main.o.d main.c 
-o main.
o

Linking: main.elf
avr-gcc -mmcu=atmega2560 -I. -gdwarf-2 -DF_CPU=8000000UL -Os 
-funsigned-char -fu
nsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes 
-Wa,-adh
lns=main.o  -std=gnu99 -Wundef -MMD -MP -MF .dep/main.elf.d main.o 
--output main
.elf -Wl,-Map=main.map,--cref     -lm

Creating load file for Flash: main.hex
avr-objcopy -O ihex -R .eeprom main.elf main.hex

Creating load file for EEPROM: main.eep
avr-objcopy -j .eeprom --set-section-flags=.eeprom="alloc,load" \
        --change-section-lma .eeprom=0 --no-change-warnings -O ihex 
main.elf mai
n.eep || exit 0

Creating Extended Listing: main.lss
avr-objdump -h -S main.elf > main.lss

Creating Symbol Table: main.sym
avr-nm -n main.elf > main.sym

Size after:
AVR Memory Usage
----------------
Device: atmega2560

Program:     322 bytes (0.1% Full)
(.text + .data + .bootloader)

Data:          0 bytes (0.0% Full)
(.data + .bss + .noinit)



-------- end --------


C:\Dokumente und Einstellungen\till\Eigene Dateien\AVR\C>make program
avrdude -p atmega2560 -P lpt1 -c stk200    -U flash:w:main.hex

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 
0.00s

avrdude: Device signature = 0x1e9801
avrdude: NOTE: FLASH memory has been specified, an erase cycle will be 
performed

         To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: reading input file "main.hex"
avrdude: input file main.hex auto detected as Intel Hex
avrdude: writing flash (322 bytes):

Writing | ################################################## | 100% 
0.11s

avrdude: 322 bytes of flash written
avrdude: verifying flash memory against main.hex:
avrdude: load data flash data from input file main.hex:
avrdude: input file main.hex auto detected as Intel Hex
avrdude: input file main.hex contains 322 bytes
avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 
0.20s

avrdude: verifying ...
avrdude: verification error, first mismatch at byte 0x0000
         0x0c != 0x0f
avrdude: verification error; content mismatch

avrdude: safemode: Fuses OK

avrdude done.  Thank you.

make: *** [program] Error 1

C:\Dokumente und Einstellungen\till\Eigene Dateien\AVR\C>pause
Drücken Sie eine beliebige Taste . . .

Wo liegt der Fehler... bin am verzweifeln

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

tillt wrote:

> Wo liegt der Fehler... bin am verzweifeln

Vermutlich daran, dass der SPI-Takt für den Chip zu schnell ist.
Die neuen AVRs kommen im Auslieferungszustand mit einem CPU-Takt
von 1 MHz daher und verkraften dabei höchstens < 250 kHz als
SPI-Takt beim Programmieren.

Leider ist der genaue SPI-Takt bei Bitbang-Programmern nicht so
genau vorhersagbar.  Man kann aber zusätzliche Delays einbauen,
um ihn langsamer zu bekommen, dafür gibt's die -i Option.  Probier's
mal mit -i 10, ggf. genügt auch bereits ein -i 5.

von tillt (Gast)


Lesenswert?

wo muss ich das -i einfügen?

von tillt (Gast)


Lesenswert?

Mit BASCOM kann ich die Fusbits auslesen, das Programm zeigt mir 8 Mhz 
an, soll ich die FUSEBITS mit BASCOM umprogrammieren?

von tillt (Gast)


Lesenswert?

????

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.