Thank you for your instant response.

I am sorry if I was unclear about that: I do *not* want the ISR to be called. 
The LED should turn on because I enable it in main(), however, the uC goes 
straight to the ISR!

For example, if I set the LED to high in the ISR and set it to low in main(), 
it will be set to high and the LED will turn on when I flash it. Even though 
I used cli()!

This behavior appears to depend on -Os, so I guess I am either using the 
tools incorrectly, or there is a bug in the optimization code.

8. Mai 2016 11:22 von partha_nay...@yahoo.com:


> First off, you are disabling global interrupts (cli ()). You need to enable 
> them (sei ()). I presume you are toggling the LED in ISR, if so the LED 
> will not toggle as interrupts are disabled. >  > Regards,
> Parthasaradhi
> Hyderabad
>
>
>  >  >  >  On Sunday, May 8, 2016 2:40 PM, "> a...@tuta.io> " <> a...@tuta.io> 
> > wrote:
>
>
>  >           > Hello,
>
> I have been working on a project for some time and at some point, 
> everything just stopped working. It appears that as soon as I include an 
> ISR in my C code, the main function won't even be called anymore. I reduced 
> my code to this:
>
>
> #include <avr/io.h>
> #include <avr/interrupt.h>
>
> int main (void) {
>   cli();
>   DDRB = 0xff;
>   while(1) PORTB |= (1 << PB5);
>   return 0;
> }
>
> ISR(TIMER0_OVF_vect) {}
>
> But the LED just won't turn on. The strange thing is: If I remove the ISR 
> at the bottom without changing anything else, even keeping the include, 
> everything works. If I remove the -Os option from gcc but keep the ISR, 
> everything works.
>
> I use these commands to compile, link and flash it:
>
> F_CPU=16000000L
> avr-gcc -Wall -DF_CPU=$F_CPU -c -mmcu=atmega168 -Os main.c -o main.o
> avr-ld -mavr5 -o led-test.elf main.o
> avr-objcopy -O ihex led-test.elf led-test.hex
> sudo avrdude -c avrisp2 -p atmega168 -P usb -b 57600 -U 
> flash:w:led-test.hex
>
>
> I am quite new to the avr tools so I might just have made a silly mistake, 
> so I would appreciate any tips!
> Thank you!
>
>
> LSB:
> Distributor ID: Ubuntu
> Description:    Ubuntu 16.04 LTS
> Release:        16.04
> Codename:       xenial
>
> Output of avr-gcc -v:
> Using built-in specs.
> Reading specs from /usr/lib/gcc/avr/4.9.2/device-specs/specs-avr2
> COLLECT_GCC=avr-gcc
> COLLECT_LTO_WRAPPER=/usr/lib/gcc/avr/4.9.2/lto-wrapper
> Target: avr
> Configured with: ../src/configure -v --enable-languages=c,c++ 
> --prefix=/usr/lib --infodir=/usr/share/info --mandir=/usr/share/man 
> --bindir=/usr/bin --libexecdir=/usr/lib --libdir=/usr/lib --enable-shared 
> --with-system-zlib --enable-long-long --enable-nls 
> --without-included-gettext --disable-libssp --build=x86_64-linux-gnu 
> --host=x86_64-linux-gnu --target=avr CFLAGS='-g -O2 
> -fstack-protector-strong -Wformat ' CPPFLAGS=-D_FORTIFY_SOURCE=2 
> CXXFLAGS='-g -O2 -fstack-protector-strong -Wformat ' FCFLAGS='-g -O2 
> -fstack-protector-strong' FFLAGS='-g -O2 -fstack-protector-strong' 
> GCJFLAGS='-g -O2 -fstack-protector-strong' 
> LDFLAGS='-Wl,-Bsymbolic-functions -Wl,-z,relro' OBJCFLAGS='-g -O2 
> -fstack-protector-strong -Wformat ' OBJCXXFLAGS='-g -O2 
> -fstack-protector-strong -Wformat '
> Thread model: single
> gcc version 4.9.2 (GCC)
>
> _______________________________________________
> AVR-GCC-list mailing list
> AVR-GCC-list@nongnu.org
> https://lists.nongnu.org/mailman/listinfo/avr-gcc-list
>
>
>   >  >   
_______________________________________________
AVR-GCC-list mailing list
AVR-GCC-list@nongnu.org
https://lists.nongnu.org/mailman/listinfo/avr-gcc-list

Reply via email to