logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[atmega32] język C optymalizacje kodu

qudi 05 Lut 2011 00:36 1280 5
  • #1 9105186
    qudi
    Poziom 15  
    Witam !!! Podczas kompilacji programu wyskakuje mi błąd
    #ifndef __OPTIMIZE__
    # warning "Compiler optimizations disabled; functions from <util/delay.h> won't work as designed"
    #endif


    Jednak na początku mam przecież:
    
    #include <avr/io.h>
    #define F_CPU 14745000UL <------------
    #include <util/delay.h>
    #include <avr/interrupt.h>
    #include <cyfry.h>
    


    Przeczytałem na jakimś forum, że należy zwiększyć poziom optymalizacji w celu usunięcia problemu. Przy kompilacji rzeczywiście błędu już nie ma - lecz program w ogóle nie działa jak należy (przy każdym wyższym poziomie optymalizacji od -O0). Jak więc pozbyć się tego błędu ?
  • #2 9105273
    dawid512
    Poziom 32  
    Jeżeli sam robisz make file to tam zmień optymalizacje na np. -Os lub jeżeli używasz avrstudio to w opcjach projektu.
  • #3 9112188
    qudi
    Poziom 15  
    no ale powiedziałem przecież, że przy każdej innej optymalizacji kod nie działa poprawnie przy -Os także... pracuje na AVRStudio
  • #5 9112391
    Andrzej__S
    Poziom 28  
    qudi napisał:

    Jednak na początku mam przecież:
    
    ...
    #include <avr/interrupt.h>
    ...
    


    Jak używasz przerwań, to funkcje z <util/delay.h> nie będą działały prawidłowo.

    qudi napisał:

    Jak więc pozbyć się tego błędu?

    Jak musisz korzystać z przerwań, to jedynym wyjściem jest napisanie własnych funkcji opóźniających w oparciu o timery.
  • #6 9115754
    qudi
    Poziom 15  
    rozumiem , bardzo dziękuje Andrzej_S oraz wszystkim co chcieli pomóc... odnośnie "Freddie Chopin"---> tragedia typowa wypowiedź nabijacza pkt...
REKLAMA