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

[AVR-GCC] - prośba o sprawdzenie?

robiw 04 Lip 2010 10:19 1043 3
  • #1 8258907
    robiw
    Poziom 26  
    Witam,
    Z góry przepraszam za "lamerstwo" ale początki z C nie są dla mnie takie oczywiste i nie mogę doszukać się źródła błędów w prostym programie z załącznika. Uprzejmie proszę o podpowiedź... robiw

    PS.
    Kompilowałem w AVR Studio.
  • #2 8261358
    ZbeeGin
    Poziom 39  
    Wszystko pisze kompilator w oknie Build.
    1. Funkcje nie są opisane wcześniej niż ich wywołania. Dodaj prototypy lub umieść funkcję main() na końcu.
    2. Funkcja main() nie może nic nie zwracać. Deklaracja powinna być int main(void)
    3. Przypisywanie stanów do pinów musisz zrobić inaczej.
  • #3 8261634
    robiw
    Poziom 26  
    ZbeeGin napisał:
    Wszystko pisze kompilator w oknie Build.

    Wiem, nie ma jednak jeszcze doświadczenia ;-)

    ZbeeGin napisał:

    1. Funkcje nie są opisane wcześniej niż ich wywołania. Dodaj prototypy lub umieść funkcję main() na końcu.

    Rozumiem, że w odróżnieniu od Bascoma w C wywołanie funkcji w innej funkcji musi być wcześniej poprzedzone treścią wywoływanej funkcji ;-). Krótko mówiąc ważna jest kolejność deklaracji.

    ZbeeGin napisał:

    2. Funkcja main() nie może nic nie zwracać. Deklaracja powinna być int main(void)

    Wiem ,zapomniałem.

    ZbeeGin napisał:

    3. Przypisywanie stanów do pinów musisz zrobić inaczej.

    Widziałem różne rozwiązania więc nie wiem jakie jest najczęstsze:
    1. cbit, sbit
    2. np. #define SET_PIN PORTB |= (1<<PB2)
    3. PORTB.PB2 = 1

    robiw
  • #4 8261748
    ZbeeGin
    Poziom 39  
    Jeśli chodzi u ustawianie pojedynczych bitów to tylko wersja 2. cbi(), sbi() się nie powinno używać bo są wycofane. Trzeciej wersji nie widziałem w AVR-GCC. Zresztą kompilator właśnie się o to czepia też, zatem to nie jest poprawna konstrukcja w stosunku do portów.
REKLAMA