Voor mijn eindwerk dien ik gebruik te maken van de atmega32 en eerder kreeg ik al de jtag ice mk2 programmer. Nu ben ik op zoek gegaan om wat te programmeren (ik had een beetje voorkennis met pic's), maar ervaar toch heel wat meer problemen dan bij de pic, maar alle begin is moeilijk... Ik ben vertrokken vanuit het voorbeeld vanop www.avrbeginners.net (getting started). Ik begrijp het programma in grote lijnen en dus besloot ik om het programma in avrstudio4 te plaatsen. Nu krijg ik wanneer ik op 'build' druk 1 foutmelding.
Het programma ziet er dus als volgt uit:
.include "C:\Program Files\Atmel\AVR Tools\AvrAssembler\Appnotes\m8def.inc"
.org 0x0000
rjmp main
main:
ldi r16, low(RAMEND)
out SPL, r16
ldi r16, high(RAMEND)
out SPH, r16
ldi r16, 0xFF
out DDRB, r16
loop:
sbi PortB, 3
rcall delay_05
cbi PortB, 3
rcall delay_05
rjmp loop
delay_05:
ldi r16, 8
outer_loop:
ldi r24, low(3037)
ldi r25, high(3037)
delay_loop:
adiw r24, 1
brne delay_loop
dec r16
brne outer_loop
ret
Nu heb ik dus de include file genomen vanuit de map waar avrstudio4 geïnstalleerd stond. De fout blijkt te zijn: "attemp to redefine keyword or" dit is dus een regel uit de .inc file. Ik weet dat dit wel voor een atmega8 is maar als ik de m32def.inc neem geeft deze dezelfde fout.
Kan iemand me op weg helpen, me vertellen wat ik mogelijk verkeerd doe, want momenteel kan ik dus niet debuggen of een programma in mijn atmega laden.
Ununoctium
I don't know how fast I'm going, but I know exactly where I am
Met je code is er, op de eerste regel na, niets mis.
Vervang die gewoon door
.include "m32def.inc"
Je moet niet dat hele adres erbij plaatsen, wil je het dan toch doen, neem dan de bestanden uit AvrAssembler2.
oke en bedankt voor de hulp, het probleem werd eveneens verholpen door de fout in de include file te verwijderen.
Ik heb hier wel eens wat over gelezen... Was het geen bug in eerdere versies van AVRstudio4? Normaal gesproken hoor je die headerfiles niet te hoeven editen...
Die hoor je inderdaad niet te editten, de AvrAssembler map is trouwens voor AVR assembler versie 1, tegenwoordig is versie 2 de standaard en die heeft de includes in AvrAssembler2. Hoe dan ook nooit zo'n pad erin zetten maar gewoon <m32def.inc> of eventueel "m32def.inc". Kijk eens bij je assembler settings of je assembler niet toevallig op versie 1 staat.
@madwizard en @marco69:
ik vond het ook al raar om in de header file aanpassingen te doen. De header file was afkomstig uit het mapje met assembler1. Er is ook nog een mapje met assembler2, maar ik dacht dat dit geen problemen zou opleveren. Ik zal het morgen zeker nog eens proberen met de header file afkomstig van de map assembler2.