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

[Attiny2313][C] Kłopot z wsadem

sigaris 18 Lip 2011 22:23 1322 7
  • #1 9733081
    sigaris
    Poziom 16  
    Mam pewien problem z wsadem. Przerabiam kurs języka C z EdW ( AVT 3505) i korzystam z płytki ewaluacyjnej ZL11AVR
    [Attiny2313][C] Kłopot z wsadem
    Używam środowiska AVRStudia 5.
    Kłopot polega na tym,że gdy ładuję bezpośrednio wsad z listingu z kursu ( ładuje plik .hex który autor skompilował w WinAVR), na wyświetlaczach 7-mio segmentowych pojawiają się cyfry "1234". Natomiast kiedy przekopiuję kod do AVRStudio 5 lub 4 i próbuję kompilować to wyrzuca tylko błąd,że należy zainicjować licznik TCCR0. Ale potem bez problemu kompiluje. Oto kod:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod




    Problem polega na tym,że plik .hex po skompilowaniu powyższego kodu w AVRStudio 5, na wyświetlaczu pojawiają się tylko cztery ósemki "8888". Debuger pokazuje,że porty się inicjują, ale tak jakby nie było w ogóle przerwań. Choć może debuger nie pokazuje przerwań. Choć wyświetlacz z pracującym AVR-em pokazuje tylko te ósemki.

    Co może być powodem tego,że kod nie wywołuje się poprawienie w AVRStudio? W pliku nic nie zmieniałem oprócz inicjacji licznika "TCCR0"
  • #2 9733146
    tmf
    VIP Zasłużony dla elektroda
    int TCCR0; - wywal to. Jeśli to jest rejestr kontrolny timera0 to jego definicja powinna być w io.h.
    Po drugie - sądząc po kodzie jest on dosyć przestarzały i nie odnosi się do nowszych avr-libc (makro SIGNAL). Najlepiej przejdź na coś nowszego.
  • #3 9733170
    Osmo
    Poziom 18  
    sigaris napisał:
    int TCCR0;

    Cos mi ta linijka nie pasuje. Wywal ją, a zamiast tego wrzuć
    Cytat:
    TCNT0 = 128;
    do main'a tuż przed
    Cytat:
    TIMSK = 1<<TOIE0;


    Na precyzyjną analize kodu nie mam czasu, ale myśle ze powinno pomóc.
  • #4 9733208
    sigaris
    Poziom 16  
    Nie mogę wyrzucić TCCR0, bo kompilator wyrzuca błąd. "int TCCR0" jest podpowiedzią AVRStudio i wtedy się kompiluje.

    dopisanie TCNT0=128 nie dało nic.
  • #5 9733237
    Osmo
    Poziom 18  
    Masz zdefiniowany w makefile odpowiedni uC ?
  • #6 9733255
    sigaris
    Poziom 16  
    Na początku przy tworzeniu projektu podaje uC, ale jest poprawny. Próbowałem dla Attiny 2313 i Attiny 2313A. wynik był ten sam. same 8.
  • Pomocny post
    #7 9733276
    Osmo
    Poziom 18  
    heh w moim pliku nagłówkowym io dla tego uC (iotn2313.h) nie ma deklaracji rejestru TCCR0, jest deklaracja rejestrów TCCR0A oraz TCCR0B.
    Zapewne to ich należy użyć, ustawiając odpowiednie bity w A i B.

    W twoim wypadku, spróbuj TCCR0 zastąpić przez TCCR0B

    EDIT, i wywal linijke: int TCCR0

    Sprawdziłem w jednym z moich projektów, wprowadzając timer1 w tryb fast PWM ustawiam bity TCCR1A i TCCR1B działając jak kazała dokumentacja, u Ciebie, TCCR0B

    Zapewne po 6 latach coś się zmieniło w plikach nagłówkowych.
  • #8 9733296
    sigaris
    Poziom 16  
    Osmo napisał:
    heh w moim pliku nagłówkowym io dla tego uC (iotn2313.h) nie ma deklaracji rejestru TCCR0, jest deklaracja rejestrów TCCR0A oraz TCCR0B.
    Zapewne to ich należy użyć, ustawiając odpowiednie bity w A i B.

    W twoim wypadku, spróbuj TCCR0 zastąpić przez TCCR0B

    EDIT, i wywal linijke: int TCCR0

    Sprawdziłem w jednym z moich projektów, wprowadzając timer1 w tryb fast PWM ustawiam bity TCCR1A i TCCR1B działając jak kazała dokumentacja, u Ciebie, TCCR0B

    Zapewne po 6 latach coś się zmieniło w plikach nagłówkowych.


    Działa !!! W tym tkwił problem. Dzięki wielkie :)
REKLAMA