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

[atmega8L][c][Eclipse] Zmiana Hz wplywa na _delay_us(100)

Toners 20 Lut 2011 15:42 1460 14
  • #1 9178255
    Toners
    Poziom 11  
    Niestety nie moglem odpowiedziec na poprzedni post, wiec zalozylem nowy:
    Chodzi mi o wplyw czestotliwosci na funkcje opoznienia.

    Mam prosty program:
    
       while(1)
       {
          PORTD |= _BV(2);
          _delay_us(100);
          PORTD &= ~_BV(2);
          _delay_us(100);
       }
    


    do PD2 jest podpieta dioda, gdy zmieniam Atmege (i Eclipse) na:
    * 8Mhz dioda zapala sie na 100us i gasnie na ~100us
    * 1Mhz dioda zapala sie na 800us i gasnie na ~800us

    Przebieg w obu przypadkach powinien byc ten sam, dlaczego przebieg zalezy od czestotliwosci ?
  • #2 9178362
    markosik20
    Poziom 33  
    Toners napisał:
    ...gdy zmieniam Atmege (i Eclipse) na:
    * 8Mhz dioda zapala sie na 100us i gasnie na ~100us
    * 1Mhz dioda zapala sie na 800us i gasnie na ~800us


    Możesz bardziej rozwinąć? Gdzie i jak zmieniasz?
  • #3 9178453
    Toners
    Poziom 11  
    Zmieniam w
    Eclipse Project -> Properties -> AVR -> AVR Dude w zakladce fuses ustwaiam "direct hex values" i ustawiam na E4/E1 D9 (odpowiednio dla 8MHz/1MHz)

    oraz odpowiednio w
    Eclipse Project -> Properties -> AVR -> Target Hardware w MCU Clock Freq.

    + Apply, OK, Kompilacja, zaladowanie.
  • #4 9178456
    mirekk36
    Poziom 42  
    Bo pewnie nie przestawiasz fusebitów w procku, tylko zmieniasz taktowanie F_CPU. A to nie wystarczy. Trza przestawić fuski CKSEL.

    Obacz sobie jak to się prosto ustawia w programie MkAvrCalculator który z twoim prockiem działa fill FREE ;)
  • #5 9178471
    Toners
    Poziom 11  
    w procku fusebity sa ustawione, po zaladowaniu dodatkowo sprawdzilem z wierszu polecen czy w procku fusebity sa ustawione poprawnie.
  • #6 9178523
    mirekk36
    Poziom 42  
    no dobrze ale piszesz że zmieniasz F_CPU raz na 8MHz a raz na 1MHz - to zmieniasz też wtedy za każdym razem Fusebity ??? Czy ty uważasz że je tylko raz się ustawia i potem już nie trzeba dotykać ? ;)

    Dodano po 1 [minuty]:

    toż skoro F_CPU ustawiasz we właściwościach projektu na 8MHz to i fusy CKSEL muszisz tak ustawić - i sprawdzasz sobie jak działa.

    Potem gdy zmienisz F_CPU na 1MHz to znowu musisz fusebity CKSEL przestawić także na 1MHz

    teraz jaśniej ?
  • #7 9178541
    Toners
    Poziom 11  
    W eclipse zmieniam w 2 miejscach (jak wyzej opisane)

    gdy zmienie w Eclipse Project -> Properties -> AVR -> AVR Dude w zakladce fuses ustwaiam "direct hex values" i ustawiam na E4/E1 D9 (odpowiednio dla 8MHz/1MHz)

    to podczas zaladunku programu fusebity sa zmienione automatycznie.
  • #8 9178587
    mirekk36
    Poziom 42  
    No to ja bym jednak na twoim miejscu sprawdził zewnętrznym programem czy się zmieniają za każdym razem tak jak trzeba, bo jasno wygląda na to że się nie zmieniają skoro masz różne przebiegi - no to wydaje się być oczywiste.

    Nie wiem w czym problem żeby to sprawdzić nawet tym programem który ci podałem wyżej . Sam miałbyś odpowiedź na to już wcześniej. Więc sprawdź i daj znać ;)
  • #9 9179038
    tmf
    VIP Zasłużony dla elektroda
    Dokładnie. Jeśli zmieniają się czasy wykonania pętli to istnieje tylko jedno wytłumaczenie - niewłaściwe ustawienie fusebitów, w efekcie procesor nie jest taktowany zegarem o częstotliwości określonej przez F_CPU.
  • #10 9179070
    Konto nie istnieje
    Konto nie istnieje  
  • #11 9179438
    Toners
    Poziom 11  
    hej, juz dziala, dodalem 3 linijki do glownego pliku:

    #ifndef F_CPU
    #define F_CPU 8000000
    #endif

    Jak zmienie (miedzy innymi to co wczesniej opisalem) 'F_CPU' to wtedy smiga na roznych Hz z tym samym przebiegiem, ale dlaczego tak jest!?


    Mam wlaczona optymalizacje -Os
  • #12 9179464
    mirekk36
    Poziom 42  
    Toners napisał:

    Jak zmienie (miedzy innymi to co wczesniej opisalem) 'F_CPU' to wtedy smiga na roznych Hz z tym samym przebiegiem, ale dlaczego tak jest!?


    Mam wlaczona optymalizacje -Os


    Powiedz mi ty czytasz to co się do ciebie pisze ??? bo w ogóle nie odpowiadasz na pytania czy za każdym razem zmieniasz fusebity dokonując zmian na F_CPU ?????

    Zamiast tego martwisz się o jakąś optymalizację, która w tym przypadku ma tyle wspólnego z problemem co śnieg ze słoniem ;)

    Przeczytaj że wyżej te posty , sprawdź i odpowiedz - no chyba że tak lubisz się katować takim podstawowym problemem początkującegoe, w nieskończoność ;) to wtedy zrozumiem.
  • #13 9179759
    Toners
    Poziom 11  
    Czytam pewnie tak jak i Ty, czasami nie rozumiem tego co czytam ..tak jak i Ty ...bo nie wiem na jakiej podstawie wywnioskowales to:

    "no dobrze ale piszesz że zmieniasz F_CPU raz na 8MHz a raz na 1MHz - to zmieniasz też wtedy za każdym razem Fusebity ???"

    ...grunt ze dziala teraz:)

    btw. marek zapytal o optymalizacje.
  • #14 9181097
    Konto nie istnieje
    Konto nie istnieje  
  • #15 9181572
    tmf
    VIP Zasłużony dla elektroda
    I pewnie zgłosił, bo bez tego wywala warning chociażby delay.h. Przy czym jak widać sporo osób uważa, że warningi są dla lamerów ;P
REKLAMA