avr-chat
[Top][All Lists]
Advanced

[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
> 





reply via email to

[Prev in Thread] Current Thread [Next in Thread]