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

[c]Atmega8 nie działa na fusebit 0xC9 0xE4

DrV 23 Sty 2011 12:29 1577 11
REKLAMA
  • #1 9045047
    DrV
    Poziom 10  
    Witam,

    mam problem z atmegą 8 16pu - wygląda jakby wewnętrzny oscylator jej nie taktował, a ustawiłem fusebit starszy na 0xc9 a młodszy na 0xe4.

    Programuje ją przy pomocy programatora z wyjściem generatora na XTAL1 - tak na wszelki wypadek mam to wyprowadzone jakbym fusebit źle ustawił. Coś ten generator może przeszkadzać, skoro go po zaprogramowaniu odpinam?


    Z góry przepraszam jeżeli rozwiązanie jest trywialne i ogólno dostępne, gdyż mam ponad 40'C i mogę nie myśleć w sposób jasny.


    Pozdrawiam
  • REKLAMA
  • #2 9045317
    manekinen
    Poziom 29  
    Kolego a po co włączyłeś bit CKOPT? H:0xD9 i powinien ruszyć :)

    Calibrated Internal RC Oscillator napisał:
    The CKOPT Fuse should always be unprogrammed when using this clock option
  • #3 9045491
    DrV
    Poziom 10  
    Niestety dalej nic.

    Dorzuce na wszelki wypadek kod na którym nie działa, może coś ustawiłem niepotrzebnie?
    
    
    
    #include <mega8.h>
    
    int c,d,dt = 0;
    
    
    void main(void)
    {
    PORTB=0x00;
    DDRB=0xFF;
    
    PORTC=0x00;
    DDRC=0x00;
    
    PORTD=0x00;
    DDRD=0x00;
    
    TCCR0=0x00;
    TCNT0=0x00;
    
    TCCR1A=0x00;
    TCCR1B=0x00;
    TCNT1H=0x00;
    TCNT1L=0x00;
    ICR1H=0x00;
    ICR1L=0x00;
    OCR1AH=0x00;
    OCR1AL=0x00;
    OCR1BH=0x00;
    OCR1BL=0x00;
    
    ASSR=0x00;
    TCCR2=0x00;
    TCNT2=0x00;
    OCR2=0x00;
    
    MCUCR=0x00;
    
    TIMSK=0x00;
    
    UCSRB=0x00;
    
    ACSR=0x80;
    SFIOR=0x00;
    
    ADCSRA=0x00;
    
    SPCR=0x00;
    
    TWCR=0x00;
    
    while (1)
          {
         PORTB=0xff;
          }
    }
    
    
    
    


    Pozdro
  • REKLAMA
  • #4 9046167
    mirekk36
    Poziom 42  
    Proponuję ci użyć programu MkAvrCalculator bo z twoim prockiem będzie działał w pełni za FREE. A dzięki zakładce "Fusy uproszczone" na pewno ustawisz dobrze i poprawnie fuski nie narażając się, że coś tam ci się nie uda ;) wypróbuj i powiedz co i jak.
  • #5 9046272
    DrV
    Poziom 10  
    Program również proponuje D9 E4.

    Jakieś inne pomysły?
  • #7 9046399
    DrV
    Poziom 10  
    No właśnie w teorii wszystko ładnie pięknie, tylko w praktyce coś nie tak.

    Sprawdziłem drugą atmegę 8 też to samo, atmega 162 - z innymi fusebitami też nie działa,

    ale jedna rzecz mnie w tym momencie zastanowiła, bo mam obecnie 4 uklady

    atm8
    atm8
    atm162
    atm162

    pierwsze trzy są nowe - tzn 8 i 162 są tygodniowe, druga 8 ma juz jakis rok, leżała bo okazało się w trakcie roboty że PINów mi braknie.

    zaś 4 - a162 służyła w innym układzie jako termometr (ds18b20, dłuższa historia, pominę bo nic nie wniesie to do tematu), dlatego teraz pewna rzecz zaczyna mnie zastanawiać - w tej a162 kiedyś na innym programatorze były ustawione fusebity i do tej pory ona działa, jak przestawię FB to już nie, więc tak się zastanawiam, czy coś jeszcze oprócz ustawienia fusebita nie trzeba zrobić przed/po programowaniu ? Kiedyś spotkałem się z sformułowaniem - wypalenie fusebita, czy to jest to samo co zaprogramowanie go?
  • REKLAMA
  • #8 9046473
    mirekk36
    Poziom 42  
    No skoro ci już kilka procków nie działa to może oznaczać tylko i wyłącznie jedno. Teoria jest prawidłowa i na dodatek zgodna z praktyką. Tylko ty robisz coś źle po drodze. Nie ma innej możliwości.

    Jeszcze raz podpowiem. Ten program MkAvrCalculator ma także zakładkę "Programator" czyli po wejściu w nią możesz wybrać z listy swój programator sprzętowy i po zaptaszkowaniu opcji ZAPIS oraz FuseBity możesz je zaprogramować. Jeśli po operacji dostaniesz na dole komunikat, że operacja zakończona pomyślnie to MUSI działać.

    Ale coś mi się zdaje, że u ciebie albo ona nie kończy się pomyślnie z jakiegoś względu a tego nie opisujesz albo nie dostrzegasz albo nie wiem jak ty programujesz te procki.

    To czy procek leżał i ma tydzień czy dwa czy jest po zakupie nie ma żdanego znaczenia jeśli jest sprawny to zawsze można przestawić fusebity i nic specjalnego nie trzeba ani przed a ni po - robić ;)
  • REKLAMA
  • #9 9046534
    zumek
    Poziom 39  
    DrV napisał:
    ..wygląda jakby wewnętrzny oscylator jej nie taktował...

    A może nam kolega wyjaśnić, co to DOKŁADNIE oznacza - jak kolega poznaje, że oscylator nie pracuje :?:
  • #10 9046797
    DrV
    Poziom 10  
    
    E:\AVR\5.4>avrdude -p atmega8 -c stk500 -P com3 -V -u -U lfuse:w:0xE4:m -U hfuse
    :w:0xD9:m
    avrdude: stk500_getsync(): not in sync: resp=0x00
    avrdude: successfully opened stk500v2 device -- please use -c stk500v2
    
    avrdude: AVR device initialized and ready to accept instructions
    
    Reading | ################################################## | 100% 0.10s
    
    avrdude: Device signature = 0x1e9307
    avrdude: reading input file "0xE4"
    avrdude: writing lfuse (1 bytes):
    
    Writing | ################################################## | 100% 0.03s
    
    avrdude: 1 bytes of lfuse written
    avrdude: reading input file "0xD9"
    avrdude: writing hfuse (1 bytes):
    
    Writing | ################################################## | 100% 0.03s
    
    avrdude: 1 bytes of hfuse written
    
    avrdude done.  Thank you.
    


    Mimo to dalej nie działa.

    Co do tego oscylatora - po prostu przy nawet tak prostym "programie" nic nie pojawia się na żadnej z nóżek portu B

    Edit:

    Wziałem 4 procek - ATM162 który służy za termometr, program - mała edycja, kompilacja, odczyt fusebitów z procka, zaprogramowanie układu z odczytanymi fusebitami => działa bez zarzutu. Jedynie problem jest z tymi 3 kościami "nowymi" - czego im się nie podoba że nie chcą działać?
  • #11 9046997
    mirekk36
    Poziom 42  
    Ależ panie kolego co ty tu wypisujesz ? ;) .... jeśli nie masz podpiętego zewnętrznego kwarca do procesora i po tej operacji powyżej do kotórej pokazałeś zrzut z konsoli - to już samo to , że procek daje się programować świadczy o tym, że POPRAWNIE DZIAŁA na wewn. oscylatorze ;)

    A to, żeprzy "tak prostym" programie jak piszesz (chociaż nie pokazujesz co to za program) nic nie pojawia się na żadnej z nóżek portu B - oznacza teraz tylko jedno...... albo źle piszesz ten swój "tak prosty" program i to że nie działa to normalne, albo go w ogóle nie wgrywasz - albo jeszcze coś trzeciego ...
  • #12 9047882
    DrV
    Poziom 10  
    Problem rozwiązałem, w sposób dla mnie nie zrozumiały:

    1. Do AVR studio doinstalowałem WinAVR i z niego kompilowałem program, programowałem z avrstudio4, działa ładnie Atmega8 (162 pewnie też, nie mam siły sprawdzać narazie.)

    2. Stara Atmega162 mimo wszystko jako jedyna działa na CodevisionAvr oraz na WinAVR i pewnie nigdy nie dowiem się dlaczego.
REKLAMA