Elektroda.pl
Elektroda.pl
X
TermoPasty.pl
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

atmega 8l - programuje sie, ale nie dziala

10 Sty 2008 17:50 2133 16
  • Poziom 11  
    Witam

    Robię projekt na atMega8L w wersji SMD. Po wielu mekach udało mi się wczoraj odczytać coś z pamięci i zapisać do Flasha prosty program w C wypluwający jedynkę na porcie D, jednak niestety nie działa.

    Bałem się, że może podczas lutowania spaliłem procesor, ale skoro się programuje to znaczy chyba, że działa ? a może nie ?

    Programuje ponyprogiem2000. Fusebity zaptaszkowane ( programmed ):
    bootsz1, bootsz2, sut0, cksel3,2,1 , czyli prawdopodobnie domyślne ustawienia. Próbowałem ustawiac bootlocki na 0 ale chyba po wykonaniu ERASE one się kasują.

    to mój prosty programik w C pod AVRstudio4 gcc :
    Cytat:

    #include <avr/io.h>

    int main(void)
    {

    PORTB = 0xFF;
    DDRB = 0xFF;

    while(1)
    {
    }

    return 0;
    }


    Prosiłbym o pomoc bo sesja za pasem a mój project leży :(
  • TermoPasty.pl
  • Poziom 32  
    A z kąd wiesz że nie działa skoro ten program nic nie robi, nawet nie mruga diodką a stany na porcie B są statyczne.
  • TermoPasty.pl
  • Poziom 11  
    mierze napięcie na pinach portu B pomiędzy masą, więc chyba tam powinien być stan wysoki ? nie mam racji ?
  • Poziom 15  
    WItam

    Podeslij kolego jaki masz kwarc zalozony do tej Atmegi i zobacz czy czasem nie masz przestawiony na wew. RC... nie wiem czy ponyprog2000( ja programuje Bascom głownie) sie to ustawia gdzies(rodzaj kwarcu), ale mysle ze gdzies te ustwienia musza byc...

    A poza tym twoj program jak powiedzial kolega GienekS kompletnie nic nie robi :)

    Pozdrawiam
  • Poziom 11  
    Cytat:
    cksel3,2,1 na 0


    to chyba znaczy że używam wewnętrznego kwarcu 1MHz ?

    Zewnętrzny 4,3....MHz mam, ale nie przestawiłem jeszcze fusebitów na 0000

    Tak jak wyżej napisałem, poinien chyba być stan wysoki prawda ?
  • Poziom 34  
    Kwarca to kolego w środku nie będzie jeszcze długo jak na razie naumieli sie na nim robić C,R, i tranzystory
    Wewnętrzny to masz oscylator RC i musisz go jeszcze skalibrować wpisując pewna wartość w oscal inaczej będzie to około 1MHz z rozrzutem 15%
  • Poziom 11  
    Cytat:
    Kwarca to kolego w środku nie będzie jeszcze długo jak na razie naumieli sie na nim robić C,R, i tranzystory
    Wewnętrzny to masz oscylator RC i musisz go jeszcze skalibrować wpisując pewna wartość w oscal inaczej będzie to około 1MHz z rozrzutem 15%


    dobra, chodziło mi o wewnętrzny oscylator, czy to coś zmienia ? skoro on tam jest i procesor się programuje to chyba procesor działa ? i dlaczego miałbym nie mieć stanu wysokiego na porcie B ? tego nie napisales.

    uwazasz ze do dzialania potrzebuje kalibracji ? znajomym dziala ten program, bez kalibracji.
  • Poziom 20  
    na porcie nie masz stanu wysokiego dlatego że twój " program " ustawia port jako wejście i podciąga je do logicznej jedynki a potem ustawia port jako wyjście

    poprawna kolejność to :

    Code:

    DDRB = 0xFF;  // cały port b jako wyjście
    PORTB = 0xFF; // wszystkie piny w stanie wysokim
  • Poziom 34  
    Na pierwszy rzut oka brakuje mi tam definicji procesora skąd kompilator ma wiedzieć jakiego procka to dotyczy poza tym najpierw napisałbym ddrb=0xff
    następnie
    portb=0xff
    i możliwe że zadziała
  • Poziom 11  
    dzięki macie rację, ale niestety nadal nie działa

    Cytat:
    Na pierwszy rzut oka brakuje mi tam definicji procesora skąd kompilator ma wiedzieć jakiego procka to dotyczy


    procesor ustawia sie w projekcie, kompilacja swiadczy tez o tym

    Cytat:
    avr-gcc -mmcu=atmega8 -Wall -gdwarf-2 -O0 -Wp,-M,-MP,-MT,nofy.o,-MF,dep/nofy.o.d -c ../nofy.c


    heh...dlaczego to nie działa ..:(
  • Poziom 20  
    hmm
    no to trochę dziwne
    a reset masz jakoś podłączony ?
    sprawdzasz z podłączonym programatorem ?

    i jeszcze jedno nie wiem czy ma to znaczenie i nie wiem jak w avrstudio ale ja w winavr zero w return wstawiam w nawiasach return(0);
  • Poziom 11  
    Cytat:
    a reset masz jakoś podłączony ?
    sprawdzasz z podłączonym programatorem ?


    RESET mam do masy podłączony. Sprawdzam i z podpiętym programatorem i bez, rezultaty podobne, moje napięcie na pinach waha się od 0 V do 0.12 V tzn, zdaje się , że z podpiętym programatorem osiągnałem to 0.12 V tak mam 0.

    Dla pewności dałem return (0);

    :( dzieki za probę pomocy. Może być proc przepalony czy cuś ?
  • Pomocny post
    Poziom 20  
    despedro napisał:
    RESET mam do masy podłączony


    i tu jest problem reset trzeba podłączyć przez rezystor 10-20k do vcc +5v
  • Poziom 11  
    dam na msze za Ciebie :D po stokroć dzięki. Najgłupszy z możliwych błędów.

    Nie zdałem sobie sprawy, ze przeciez układ podłączony do RESETA w ten sposób tak jakby mi się RESETOWAŁ cały czas, musiałem przeciąć ścieżkę, dodam rezystor jak go kupię.

    W każdym bądź razie układ ma już na porcie D stan wysoki z czego jestem niezmiernie dumny :D bo myślałem, że mam spalony ten porcek, w sumie SMD chyba nie trudno uszkodzić.

    Następny task to będzie uruchomienie go na zewnętrznym kwarcu, wystarczy ustawić 0000 ?

    pozdrawiam
  • Poziom 15  
    Witam

    0000 jak ustawisz w rejestrach wyboru kwarca to bedziesz musial podpiac zewnetrzne zrodlo zegarowe :)

    na zewnatrzny ustaw 1110 lub 1111

    Pozdrawiam
  • Poziom 11  
    wielkie dzięki jeszcze raz.

    Zamykam wątek.