On Saturday 28 July 2007 04:04, Wojtek Dabrowski wrote:

> ...the diodes light up when I press the reset button, but
> as soon as I let go, they go off again.

If the LEDs are lighting up *while* you have RESET asserted,
then you have a hardware problem.  PORTD will be in a high impedance
state so there should be no current flow to permit them to light up.
How do you have the LEDs connected?

> It can't be the optimization - I've compiled it with -O0, and the same
> thing still happens.

> int main(void) {
>   DDRD = 0xff;
>   PORTD = 0xff;
> 
>   while(1) {
>   }
> 
>   return(0);
> }

Place a NOP inside the while(1){}.  Sometimes the compiler is 'helpful'
and optimizes away that it thinks you don't need.  I don't think
that is the case here, as you tried -O0.

#define NOP() do { __asm__ __volatile__ ("nop"); } while (0)

My preference for a infinite loop is this style:

 for(;;)
 {
   NOP();
 }

That avoids a Lint warning of "evaluating a constant boolean",
and gives the compiler a NOP to much on to keep it from
removing the loop.


-- 
                http://www.wearablesmartsensors.com/
 http://www.softwaresafety.net/ http://www.designer-iii.com/
                 http://www.unusualresearch.com/


_______________________________________________
AVR-chat mailing list
[email protected]
http://lists.nongnu.org/mailman/listinfo/avr-chat

Reply via email to