Dnia 30-05-2006 o godz. 20:05 Dean Ferreyra napisał(a): > Hi Chris, > > I didn't want this point to get lost. I think [EMAIL PROTECTED] was > trying to point out one problem with the code you posted. In this line: > > > PORTD &= !(1<<PD1); /* LED off */ > > you're using the logical negation operator, !, when what you really > need is the one's complement operator, ~. So that line should look > like this: > > PORTD &= ~(1<<PD1); /* LED off */ > > With what you've written, the entire PORTD is getting zeroed out, not > just the bit in question. > > Dean > > Chris Spencer wrote: > > Nevermind, I figured it out. I didn't realize the -U flag was required > > to make avrdude write. Now everything's working just fine. > > > > Chris Spencer wrote: > >> I was able to get my dev environment setup (thanks Galen) and > >> successfully write a hex file to my atmega48. However, my test program > >> doesn't make the led blink. Below is my c code and makefile. Does > >> anyone see any glaring problems? Is my makefile setting (or not > >> setting) the appropriate fuse bits? I'm testing on two Pololu Baby > >> Orangutan boards (http://www.pololu.com/products/pololu/0215/), so I'm > >> pretty confident it's not a hardware issue. All lights are green on > >> the programmer. > >> > >> #include <avr/io.h> > >> > >> /* at 8 MHz we get 1us per 8 instructions */ > >> inline void delayus() { asm volatile("nop\nnop\nnop\nnop\n" > >> "nop\nnop\nnop\nnop"); } > >> > >> void delayms(uint16_t millis) { > >> uint16_t loop; > >> while ( millis ) { > >> loop = 100; > >> while (loop) { > >> /* 20us of delays */ > >> delayus(); delayus(); delayus(); delayus(); delayus(); > >> delayus(); delayus(); delayus(); delayus(); delayus(); > >> loop--; > >> } > >> millis--; > >> } > >> } > >> > >> int main(void) { > >> DDRD |= 1<<PD1; /* set PD1 to output */ > >> while(1) { > >> PORTD |= 1<<PD1; /* LED on */ > >> delayms(1000); > >> PORTD &= !(1<<PD1); /* LED off */ > >> delayms(1000); > >> } > >> return 0; > >> } > >> > >> CC=avr-gcc > >> CFLAGS=-g -Os -Wall -mcall-prologues -mmcu=atmega48 > >> OBJ2HEX=avr-objcopy > >> TARGET=blink > >> PART=m48 > >> PROGRAMMER=avrisp2 > >> > >> program: $(TARGET).hex > >> avrdude -p $(PART) -c $(PROGRAMMER) -P usb -e flash:w:$(TARGET).hex > >> > >> %.obj: %.o > >> $(CC) $(CFLAGS) $< -o $@ > >> > >> %.hex: %.obj > >> $(OBJ2HEX) -R .eeprom -O ihex $< $@ > >> > >> clean: > >> rm -f *.hex *.obj *.o > >> > >>
Thats right. I don't now why it do me. ! change only B0. ~ change all bits in reg at oposite. ---------------------------------------------------- Jeszcze możesz pojechać na Mundial! Do zdobycia 68 biletów na mecze: Polska-Ekwador, Polska-Kostaryka, Włochy-Ghana (wejściówki, przelot i nagroda gotówkowa) http://klik.wp.pl/?adr=http%3A%2F%2Fcms.mni.pl%2Fclient%2Fera_mundial%2Fversion%2Fwp&sid=774 _______________________________________________ AVR-chat mailing list [email protected] http://lists.nongnu.org/mailman/listinfo/avr-chat
