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

[c] Przeniesienie kodu ADC z ATmega32 na ATmega128 - błędy kompilacji

yezen 24 Maj 2011 18:14 3347 4
REKLAMA
  • #1 9539888
    yezen
    Poziom 10  
    Posty: 6
    Witajcie mam problem. Mam kod na procesor atmega32. Potrzebuję, aby działał on na atmega128. Jedyny błąd jaki wyskakuje to "ADATE undeclared" oraz ostrzeżenia (zaznaczyłem je w kodzie, żeby nie trzeba było szukać):
    ../przetwornik.c:31: warning: implicit declaration of function 'sprintf'
    ../przetwornik.c:31: warning: incompatible implicit declaration of built-in function 'sprintf'
    ../przetwornik.c:31: warning: pointer targets in passing argument 1 of 'sprintf' differ in signedness
    ../przetwornik.c:33: warning: pointer targets in passing argument 1 of 'sprintf' differ in signedness
    ../przetwornik.c:37: warning: pointer targets in passing argument 1 of 'LCD_WriteText' differ in signedness
    ../przetwornik.c:39: warning: pointer targets in passing argument 1 of 'LCD_WriteText' differ in signedness


    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
  • #2 9539962
    GSM
    Poziom 25  
    Posty: 543
    Pomógł: 72
    Ocena: 16
    Witam,

    1. brakuje (dla sprintf()):
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    2. Obra mikrokontrolery różnią się "nieco" (nie zadałeś sobie nawet trudu żeby google zapytać o migracje między tymi dwoma układami).
    Jeżeli chcesz aby ADC (w mega128) pracował ciągle (Free Running) musisz ustawić bit ADFR w rejestrze ADCSRA.

    Pozdrawiam,
    GSM
  • REKLAMA
  • #3 9540224
    yezen
    Poziom 10  
    Posty: 6
    no właśnie też w końcu udało mi się znaleźć, że ADFR jest zamiast ADATE



    To cały czas zostaje:
    ../przetwornik.c:31: warning: pointer targets in passing argument 1 of 'sprintf' differ in signedness
    ../przetwornik.c:33: warning: pointer targets in passing argument 1 of 'sprintf' differ in signedness
    ../przetwornik.c:38: warning: pointer targets in passing argument 1 of 'LCD_WriteText' differ in signedness
    ../przetwornik.c:40: warning: pointer targets in passing argument 1 of 'LCD_WriteText' differ in signedness

    No i pominięty przeze mnie:
    c:/program files/avr tools/lib/gcc/../../avr/include/util/delay.h:85:3: warning: #warning "F_CPU not defined for <util/delay.h>"
    ../przetwornik.c: In function 'main':
  • REKLAMA
  • #4 9540262
    GSM
    Poziom 25  
    Posty: 543
    Pomógł: 72
    Ocena: 16
    Czy kolega nie umie czytać? Kompilator wyraźnie opisuje w czym jest problem! Takie zachowanie podpada pod regulamin.

    sprintf oraz LCD_WriteText przyjmują bufor typu signed char* a nie unsigned char*.

    A do tego stała F_CPU nie jest zdefiniowana, należy ją zdefiniować ręcznie lub w Makefile.

    Pozdrawiam,
    GSM
  • #5 9541652
    yezen
    Poziom 10  
    Posty: 6
    dzięki za pomoc. rozwiązane. zamykam
REKLAMA