Hallo liebe Robotergemeinde,
ich beschäftige mich nun seit einigen Wochen mit der Atmel Plattform und habe den Umstieg von Microchip erfolgreich hinter mich gebracht.
Das Programmieren mit dem AVR-GCC, einem selbstgebauten STK200 Programmieradapter und AVRDUDE funktioniert problemlos. Nun mein Problem:
Folgendes C-Code Fragment:
Schaltet alle Pins an PORTA abwechselnd ein und aus, kann ich auch schön auf dem Oszilloskop sehen.Code:int main(void) { DDRA = 0xFF; while(1) { PORTA = 0x00; PORTA = 0xFF; } return 0; }
Nehme ich das gleiche in Assembler:
dann tut sich gar nichts. Ich habe alle möglichen Quellen durchforstet, und bin der Meinung, daß das Assemblerprogramm so funktionieren sollte.Code:#include <avr/io.h> .text dir = 16 dat = 17 .global main main: ldi dir,0xFF out DDRA,dir loop: ldi dat,0xFF out PORTA,dat ldi dat,0x00 out PORTA,dat rjmp loop /* loop forever */ .end
Habe ich hier irgendwas übersehen, oder müssen noch spezielle Einstellungen durchgeführt werden? Ich benutze einen ATMega32 und erzeuge und programmiere
das Hexfile so:
Der Programmieradapter und mein Schaltungsaufbau funktionieren mit der C-Variante ja einwandfrei, also kann es ja daran wohl nicht liegen.Code:avr-gcc -o main.elf -g -mmcu=atmega32 -Wa,-gstabs -Os main.S avr-objcopy -j .data -j .text -O ihex main.elf main.hex avrdude -p m32 -c stk200 -U flash:w:main.hex -v -U lfuse:w:0xff:m -U hfuse:w:0xd9:m
Bin für jeden Hinweis dankbar.
Gruß
ReSeT







					
					
					
						
Zitieren

Lesezeichen