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