[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [avr-chat] AVR Test
From: |
Dean Ferreyra |
Subject: |
Re: [avr-chat] AVR Test |
Date: |
Tue, 30 May 2006 11:05:38 -0700 |
User-agent: |
Thunderbird 1.5.0.2 (Windows/20060308) |
Hi Chris,
I didn't want this point to get lost. I think address@hidden 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
>>
>>
>>
>> _______________________________________________
>> AVR-chat mailing list
>> address@hidden
>> http://lists.nongnu.org/mailman/listinfo/avr-chat
>>
>
>
>
> _______________________________________________
> AVR-chat mailing list
> address@hidden
> http://lists.nongnu.org/mailman/listinfo/avr-chat
>