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

[AVR Studio 4 vs 5] Różnice w odliczaniu czasów

perlon 07 Lut 2012 22:14 1805 9
  • #1 10511654
    perlon
    Poziom 20  
    Dzień dobry wszystkim
    Zaopatrzony w najnowsze AVRStudio5 przetrenowałem przykłady z książek p.Borkowskiego, p.Francuza i p. Kardasia zaczynając od absolutnych podstaw. Kilka ostatnich dni zmarnowałem na nieśmiertelny niemal temat niedziałania DS18b20. Przetrenowałem prawie wszystkie kawałki kodu w C jakie mi wpadły w ręce bez skutku. W chwili desperacji skompilowałem projekt w WinAVR i... ruszyło !!! Ten sam kod kompilowany w AVRStudio4 również działa w AVRStudio5 niestety nie. Gdzieś w necie doszukałem się informacji o błędach w delay.h co powiązałem z niedziałającą procedurą 1Wire, ale żadnych konkretów.
    Czy może ktoś podać źródło lub wytłumaczyć co jest nie tak w AS5 że nie działają mi kody działające na AS4 i WinAVR? Czy da się to naprawić? Powiem szczerze że edytor wersji 5 całkiem mi się podoba szczególnie podpowiadanie składni itp. więc wolałbym się już z nim nie rozstawać.
  • #2 10511678
    gaskoin
    Poziom 38  
    A włączyłeś optymalizację ? Jest ona niezbędna do działania funkcji delay (poprawnego)
  • #3 10512040
    perlon
    Poziom 20  
    Optymalizacja oczywiście. Podstawa to 0 error(s) i 0 warning(s)

    Użyłem określenia "nieśmiertelny" dlatego, że takich tematów-problemów w sieci jest mnóstwo. Komputery w tym również mikrokontrolery działają z reguły deterministycznie. Stąd wniosek, ze jeżeli są podawane przykłady/rozwiązania/gotowe biblioteki to powinno działać bez dwóch zdań. Więc skąd taka ilość postów : "Nie widzi mi DS18b20"? Być może odpowiedzią na takie pytanie jest "Bo używasz AVRStudio5" Ale czy to jest dobra odpowiedź? Może lepsza byłaby "Masz źle skonfigurowane AVRStudio5". Stąd moje pytanie w pierwszym poście Co zrobić z AS5 a nie na co zamienić AS5.
    Pytanie pozostaje otwarte.
    A Eclipse? Oczywiście zainstaluję i to za raz.
  • #4 10512096
    gaskoin
    Poziom 38  
    Kod masz z książki z neta, sam pisałeś czy jak ? Co przysyła termometr ? Dobrze jest wpięty ? Nie dałeś schematu ani nic
  • #5 10512183
    perlon
    Poziom 20  
    Schemat książkowy absolutnie do testów.
    1Wire na PD7 podciągniętej rezystorem 4k7 do VCC, wyświetlacz 2x16 PB0,PB1,PB2,PC0,PC1,PC2,PC3 + zasilania. Czujnik wpięty wg noty katalogowej na 3 żyły. Porcesor ATmega8 8MHz na wewnętrznym oscylatorze, wszystkie zasilania i masy podpięte. Układ na płytce stykowej, nie rysowałem schematu tylko spinałem kabelki.
    Napisałem w pierwszym poście - układ mi działa. Przykład zaadaptowany do sprzętu z ksiązki p.Kardasia. Pod warunkiem że projekt kompiluję w AVRStudio4 lub bezpośrednio z WinAVR v.20100110. Identyczny kod po wrzuceniu w projekt AVRStudio5 i skompilowaniu daje na wyświetlaczu zamiast temperatury słowo "error" czyli brak prawidłowej obsługi sensora. Wniosek: AVRStudio5 coś dodaje od siebie albo czegoś nie dodaje co dodaje AVRStudio4 że kody są inne i jeden pracuje dobrze drugi źle. Sprzęt i program w C jest na 100% OK. Problemem jest środowisko w którym buduję wsad.
  • #6 10512210
    gaskoin
    Poziom 38  
    a masz możliwość wrzucenia tu konfiguracji projektu ?
  • #7 10512307
    perlon
    Poziom 20  
    kolego gaskoin wskazałeś drogę :)
    Zacząłem myszkować gdzie każde ze środowisk trzyma parametry kompilacji no i porównałem te pliki. Problem jest nader prozaiczny.
    W make tworzonym pod WinAVR muszę wpisać taktowanie. W AVRStudio4 też jest odpowiednie pole we właściwościach projektu co daje odpowiedni wpis w pliku konfiguracyjnym. W AVRStudio5 tego nie znalazłem więc wpisałem w main.c dyrektywę
    
    #ifndef F_CPU
    #define F_CPU 8000000
    #endif
    #include<delay.h>
    

    Ale to za mało. Pomogło dopiero dopisanie we wszystkich plikach *.c z włączonym plikiem nagłówkowym delay.h definicji F_CPU. Teraz wsad z AS5 działa jak należy. No ale jak tu przerabiać obce pliki *.c? Pliki nagłówkowe *.h jak najbardziej ale *.c?
    Problem sprowadza się do pytania jak zdefiniować globalnie taktowanie żeby w każdym pliku ta deklaracja była widoczna a nie podawana explicite. Jak by przyszło zmienić taktowanie procka to zaglądać do wszystkich plików *.c?
    Teraz jestem pewny, że problemem obsługi 1Wire było złe odliczanie czasu.
  • #8 10512447
    mirekk36
    Poziom 42  
    perlon napisał:
    Jak by przyszło zmienić taktowanie procka to zaglądać do wszystkich plików *.c?


    Pewnie - bo w AVRS5 jak widzisz nie ma takiego miejsca jak w AVRS4 czy w Eclipse czy w CodeBlocks na podanie częstotliwości taktowania w opcjach projektu. Dlatego dzięsiątki początkujących walczy z tym #define itp .... i właśnie co jest później problemem ? ..... to zaglądanie do wszystkich plików *.c ....

    Dlatego można to zrobić tak jak należy w AVRS5 ale nie każdemu chce się szukać i pozostaje przy tym #define F_CPU, tymczasem można wejść w ustawienia AVR GCC oczywiście w AVRS5, i dokonać wpisania parametru do makefile ale w taki sposób -DF_CPU xxxxx , i wtedy będzie to działać tak jak w AVRS4 albo w Eclipse..... Tyle, że jeszcze na inne przykre niespodzianki znajdziesz w AVRS5. Dlatego pisałem o Eclipse - co więcej .... szerzej opisałem to na swoim blogu i dlatego podałem ci tam link. Więc nie ma to nic wspólnego z rozwiązywaniem tematu polegającym na tym, że jak pisałeś:

    perlon napisał:
    Być może odpowiedzią na takie pytanie jest "Bo używasz AVRStudio5" Ale czy to jest dobra odpowiedź? .


    Z mojego punktu widzenia chciałem tylko wskazać te najczęstsze problemy jakie wszyscy początkujący mają wciąż z AVRS5. Bo takie posty to niestety ostatnio są bardzo ale to bardzo częste na tym forum. I jak myślisz z czego to wynika?
    Nie będę więc tu już powtarzał wszystkiego co na blogu, ale powiem jedno - w niejednym poście na elektrodzie przeczytasz, że AVRS5 jest jeszcze niedorobione i bywa pułapką na początkujących i wcale nie tylko z tym F_CPU. Zresztą podałem ci wyżej przepis jak sobie akurat z tym poradzić w AVRS5 - ale już widzę jak ochoczo za każdym razem zmieniasz sobie ten parametr gdy trzeba przedrzeć się przez dziesiątki poziomów opcji w AVRS5 żeby dotrzeć do tego konkretnego miejsca. Ja przynajmniej już choćby z tego powodu dałem sobie na razie na luz z AVRS5 i nie mówię, że jest w 100% złe. Bo pojawiło się w nim mnóstwo ciekawych opcji to fakt. Tyle, że sporo z nich mam w Eclipse dlatego czekam sobie spokojnie na wersję 6 .... może będzie lepiej, bo dla mnie liczy się też wygoda pracy w jakimś środowisku, a w AVRS5 jest jej jeszcze bardzo mało.

    Można by dużo pisać, ale zamiast tego polecam po prostu to co sam używam na co dzień. Chociaż jak ktoś się już zaparł i nie lubi Eclipse bo NIE, to ma jeszcze np CodeBlocks. Też będzie pod każdym względem lepsze od AVRS5. Dlatego jak lubisz się męczyć to właśnie - męcz dalej AVRS5 - przecież ci nikt nie broni ale mi też nie zarzucaj, że daję jakieś dziwne porady, bo nawet widać, że nie przeczytałeś tego linka w/s elipse który podałem.

    Dodano po 5 [minuty]:

    kamyczek napisał:
    To nie jest miejsce na reklamowanie swojej twórczości kolego mirekk36. Tym bardziej że moim zdaniem nie ma to związku z tematem jeśli odpowiedzią kolegi jest tekst kup pan cegłę to traktuję to jak krypto reklamę nie wnoszącą nic do tematu .

    Tekst poniżej krytyki. Podałem linki do bloga, gdzie szerzej już opisuję pewne problemy. A twoją wyimaginowaną reklamę to widzisz tylko swoimi oczami wyobraźni. I to właśnie takie teksty nic nie wnoszą do tematu.

    kamyczek napisał:
    Wracając do tematu 1wire problem leży zapewne w sposobach optymalizacji kodu ,którego efektem jest zmiana zależności czasowych generowanych sygnałów .


    W żadnych sposobach tylko jeden najczęstszy błąd jeśli chodzi o korzystanie z C w AVRS5 to właśnie to że zabrali z opcji projektu pole do ustawienia częstotliwości taktowania.
  • #9 10513173
    kamyczek
    Poziom 38  
    mirekk36 napisał:
    Tekst poniżej krytyki. Podałem linki do bloga, gdzie szerzej już opisuję pewne problemy. A twoją wyimaginowaną reklamę to widzisz tylko swoimi oczami wyobraźni. I to właśnie takie teksty nic nie wnoszą do tematu.


    Kolego szanowny w avatarze masz reklamę w stopce też gdzie jeszcze ją umieścisz w w wypowiedzi .

    Nie wystarczy napisać że należy zwrócić uwagę na niektóre definicje i dyrektywy bo pomija je kompilator i wymaga odpowiedniego przerobienia projektu . Czy tak ciężko zobaczyć że projekt nagle ma znacznie mniejszą objętość kodu lub kompiluje z domyślną prędkością zegarową inną od tej podanej w projekcie ?
  • #10 10513506
    perlon
    Poziom 20  
    Dyskusja widzę poszła nie tam gdzie trzeba. Rozwiązanie które załatwia problem z tematu na obrazku poniżej.
    [AVR Studio 4 vs 5] Różnice w odliczaniu czasów
    W zasadzie powinno to zakończyć temat.
    Dziękuję wszystkim za inspirację.
REKLAMA