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

[M32] Jak zadeklarować Timer2 w Bascom dla ATmega32?

marasneo 03 Sie 2013 16:20 2079 20
  • #1 12590841
    marasneo
    Poziom 15  
    Witajcie,
    mam problem z kodem poniżej.
    Chodzi o ten element:
    Kod: text
    Zaloguj się, aby zobaczyć kod


    W takim przypadku kompilator wywala mi błąd w wierszu z Timer2 - niezadeklarowana zmienna TIMER2. To nie jest zmienna!!
    A gdy zmieniam na Timer1 - wszystko jest OK. Ale dla mnie ... to całkowicie bez sensu.
    Błędy w kompilatorze?

    Kod: text
    Zaloguj się, aby zobaczyć kod
    [/code]
  • #3 12591564
    marasneo
    Poziom 15  
    Wersja 1.11.8.1.
    Niestety ta sama sytuacja jest z Timer0.
    Dzięki, rzucę okiem.
  • Pomocny post
    #4 12592269
    piotrva
    VIP Zasłużony dla elektroda
    To zaktualizuj sobie do najnowszej wersji (w tej chwili 2.0.7.6 chyba) / pobierz najnowsze demo (jeśli nie masz pełnej wersji).
  • #5 12592942
    marasneo
    Poziom 15  
    Dziękuję kolego.
    Domyślam się, że to jednak wina kompilatora. Podobno w najnowszej wersji bascoma obsługa timerów również nieco kuleje.
    Dzięki za potwierdzenie przypuszczeń.
  • #6 12593844
    piotrva
    VIP Zasłużony dla elektroda
    Ja w podanej wersji 2.0.7.6 błędów nie pamiętam...
    Ale mimo wszystko Bascom ma duuuzo błędów - dlatego polecam C.
  • #7 12594480
    yokoon
    Poziom 29  
    Witam.

    Kod: text
    Zaloguj się, aby zobaczyć kod


    A swoich błędów nie widzicie ?

    Nie rozumiem jak można dodawać do jednej zmiennej sam licznik, czasomierz ?
    Myślę, iż zawortość tych "urządzeń" można dodawać.
  • #8 12594644
    Konto nie istnieje
    Poziom 1  
  • #9 12595236
    marasneo
    Poziom 15  
    Zgoda z atom1477, chociaż wolę przypisywać bezpośrednio rejestrowi. Niestety podstawiając w miejsce pojawiającego się błędu TNCT2 zamiast TIMER2 - też traktuje to jako zmienną = bzdury.
    Faktycznie chyba ruszę C.
  • #10 12595883
    yokoon
    Poziom 29  
    marasneo napisał:
    Zgoda z atom1477, chociaż wolę przypisywać bezpośrednio rejestrowi. Niestety podstawiając w miejsce pojawiającego się błędu TNCT2 zamiast TIMER2 - też traktuje to jako zmienną = bzdury.
    Faktycznie chyba ruszę C.


    Witam.

    Panowie, każdy Timer jest blokiem funkcjonalnym w mikrokontrolerze i nie można go dodawać do zmiennej.

    Atom napisał, iż nikt nie dodaje licznika, ale w pierwszym poście napisane:
    B = B + Timer2

    Uważam, iż declarowanie Timera jako zmienną jest błędem ponieważ w kodzie podlega on konfiguracji.
  • #11 12595930
    Konto nie istnieje
    Poziom 1  
  • #12 12596336
    marasneo
    Poziom 15  
    Tak, jednak w powyższym przykładzie podmiana Timer2 na nazwę rejestru nic nie zmieni - nadal będzie chciał to potraktować jako zmienną. Wpisując jednak TNCT1 zamiast 2 - wszystko jest ok. Wiem już też na pewno, że to kompilator.
  • Pomocny post
    #13 12596493
    Konto nie istnieje
    Poziom 1  
  • #14 12596595
    piotrva
    VIP Zasłużony dla elektroda
    Cóż, w wolnej chwili sprawdzę sprawę u siebie na aktualnym BASCOMIE w pełnej wersji i w razie czego zgłoszę do poprawek.
  • #15 12597612
    yokoon
    Poziom 29  
    piotrva napisał:
    Cóż, w wolnej chwili sprawdzę sprawę u siebie na aktualnym BASCOMIE w pełnej wersji i w razie czego zgłoszę do poprawek.



    Myślę, iż po sprawdzeniu sprawy dowiemy się prawdy na forum.
  • #16 12597667
    piotrva
    VIP Zasłużony dla elektroda
    yokoon napisał:
    Myślę, iż po sprawdzeniu sprawy dowiemy się prawdy na forum.

    Wie Kolega, nie, zrobię to w ścisłej tajemnicy, tak żeby nikt się o tym nie dowiedział.

    1. Podany na samym początku kod kompiluje się BEZ BŁĘDÓW w Bascomie 2.0.7.6
    2. Ponadto - rozmawiamy od ATMega32, tymczasem w kodzie załączonym w 1. poście regfile podany jest dla ATMega644p - a to zupełnie inna seria procesorów
    ---Tu zmieniam regfile na taki dla ATMega32
    3. Kompilacja nadal bez błędów
    4. Brak zadeklarowanego baudrate dla UART/RS232 - dodaję deklarację dla 9600 - nie wiem jak ma to Autor ustawione u siebie w parametrach komunikacji.
    5. Kompilacja bez błędów + wgranie pliku wynikowego do procesora
    6. Wynik działania z konsoli:
    
    000.000 s (timer2= 1 *256 + 168)
    001.034 s (timer2= 64 *256 + 222)
    002.070 s (timer2= 127 *256 + 37)
    003.106 s (timer2= 190 *256 + 92)
    004.141 s (timer2= 253 *256 + 146)
    005.178 s (timer2= 317 *256 + 217)
    006.215 s (timer2= 380 *256 + 33)
    007.250 s (timer2= 443 *256 + 87)
    008.286 s (timer2= 506 *256 + 141)
    009.323 s (timer2= 570 *256 + 213)
    010.360 s (timer2= 633 *256 + 28)
    011.395 s (timer2= 696 *256 + 83)
    012.431 s (timer2= 759 *256 + 139)
    013.468 s (timer2= 823 *256 + 210)
    014.505 s (timer2= 886 *256 + 26)
    015.540 s (timer2= 949 *256 + 81)
    016.576 s (timer2= 1012 *256 + 152)
    017.614 s (timer2= 1076 *256 + 240)
    018.652 s (timer2= 1139 *256 + 72)
    019.689 s (timer2= 1202 *256 + 143)
    020.726 s (timer2= 1266 *256 + 231)
    

    7. Kod, który kompilowałem:
    Kod: text
    Zaloguj się, aby zobaczyć kod

    8. Załączam projekt (program + pliki wynikowe), który skompilowałem BASCOM 2.0.7.6 w pełnej wersji.
    9. Błędu w aktualnej wersji kompilatora BASCOM 2.0.7.6 nie stwierdzam - zapewne Autor nie dokonał jeszcze aktualizacji, którą można pobrać tutaj: http://register.mcselec.com/login.php
    Lub jeśli ma wersję DEMO to tu do pobrania wersja 2.0.7.5: http://www.mcselec.com/index.php?option=com_d...mp;task=doc_details&gid=139&Itemid=54
    ----
    Myślę, że to kończy temat. Dodam ze swojej strony, że rzeczywiście starsze wersje bascoma (ja zaczynałem od 1.11.9.8) miały sporo błędów związanych z Timerem, ale Mark Alberts po raportach je naprawił.

    Ponadto - wartowałoby zaznaczyć, że Autor tematu nie jest autorem tego kodu...
  • #17 12597892
    yokoon
    Poziom 29  
    Przepraszam Kolego Piotrva ja nie chciałem Ci dokuczyć.

    Dziękujemy za konktretną odpowiedź.
  • #18 12597938
    piotrva
    VIP Zasłużony dla elektroda
    Ale czy ja mówię, że ktoś chciał mi dokuczyć?
    Piszę to wszystko dla humoru.

    BTW
    Mimo wszystko, że ten błąd został jak widać w najnowszym Bascom poprawiony, to i tak polecam C.
  • #19 12598029
    yokoon
    Poziom 29  
    piotrva napisał:
    Ale czy ja mówię, że ktoś chciał mi dokuczyć?
    Piszę to wszystko dla humoru.

    BTW
    Mimo wszystko, że ten błąd został jak widać w najnowszym Bascom poprawiony, to i tak polecam C.


    Oczywiście wszyscy polecacie program C, ja mam 61 lat czy wierzysz, że ja się go nauczę.

    Kidyś była próba, ocena = -3
  • Pomocny post
    #20 12598460
    piotrva
    VIP Zasłużony dla elektroda
    To czy ktoś się nauczy czy nie to już indywidualna sprawa każdego z osobna - nie mogę oceniać Twoich umiejętności nie znając Cię...

    A Bascom, jak sam widzisz, jest naszpikowany błędami. Jedne znikają, inne się pojawiają...
    Ba, raz nawet program kompilowany w 1.11.9.8 nie działał po kompilacji 2.0.7.6 - trzeba było modyfikować logikę, mimo poprawnej kompilacji...
  • #21 12599609
    marasneo
    Poziom 15  
    Tak kolego piotrva, nie jestem jego autorem - powinienem zaznaczyć, przepraszam. Kod pochodzi z kursu Bascoma And-Tech.
    Cytat:
    2. Ponadto - rozmawiamy od ATMega32, tymczasem w kodzie załączonym w 1. poście regfile podany jest dla ATMega644p - a to zupełnie inna seria procesorów

    Pierwotnie miałem ustawione poprawnie na A32 - tutaj przypadkiem usunąłem nie ten koment - jest ok.

    Baudrate ... faktycznie inicjuje uart, a w kodach And-Tech zwykle nie występuje, w tym także nie.

    Dzięki kolego za pieczołowite wyjaśnienie!
REKLAMA