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

atmega32 portC jako out,problem(nie dzialaja niektore linie)

virco 01 Sie 2007 09:16 8890 11
REKLAMA
  • #1 4134653
    virco
    Poziom 11  
    Posty: 23
    Ocena: 6
    czesc
    od niedawna (tygodnia) zaczalem bawic sie mikrokontrolerkami.
    na podstawie roznych zrodel robilem sobie zestaw startowy z atmega 32
    programuje w jezyku C za pomoca programu avr studio 4,13 z pluginem avr gcc (win avr gcc).
    poniewaz nie mam wejscia com w moim pc-cie, to urzywam programu ponyprog2000 i portu lpt (programator na bazie ukladu 74ls244n wiec chyba jest to cos ala stk200),
    hexy stworzone w avr studio laduje loaderem ponga ( open program memory (flash), write program memory flash) do avrka.
    w pongu zgodnie z instrukcja urzylem obu funkcji z setupa (calibarton i interf. setup), moze gdzies jeszcze w opcjach powinienem cos zaznaczyc??

    poniewaz zaczynam dopiero to jak na razie pobawilem sie wejsciami w formie zapalania ledow oraz popisalem sobie do pamieci..

    jednakze zaowazylem, ze w porcie C nie dizalaja mi wyjscia 2,3,4,5 (nozki atmegi32 od 24 do 27), na pocztaku myslalem ze mam spalona atmege (bo kupielm od kumpla uzywana za przyslowiowego bronka), wiec udalem sie do sklepu i niewiele myslac kupilem nowke, jednak ta po zalozeniu rowniez nie dziala , na poczatku myslalem ze to moze problem ze zle zlutowana przeze mnie plytka (w koncu nie kupilem gotowego zestawu) jednak podlaczajac bezposrednio wyjscie z leda katody do nozki procka dalej nie swieci ..
    teraz podejzewam, ze jest to zwiazane z tym , ze te nozki sa chyba wykozystywane do timerkow...
    dodam jeszcze, ze nie mam podlaczonego zewnetrznego kwarcu, a w programie (w kodzie) nic nie pisalem o taktowaniu, a moze powinienem?

    stad moje pytania:

    jak sprawdzic cze te 4 wyjscia nie sa trefne?
    jak sprawic by dzialaly jako wyjscia/wejscia
    co powinienem dodac w kodzie programu jesli nie mam dodanego zewnetrzego kwarcu (nic nie podlaczone na nogi xtal1 i xtal2) ?
    co powinienem dodac w kodzie programu jesli podlacze zewnetrzy kwarcu na nogi xtal1 i xtal2 ?
    poza dokladnoscia w dostepie do timerkow jest jakas roznica w uzywanym kwarcu, a pytanie sprowadza sie do nastepnego, tzn jaki bylby najlepszy? dysponuje 4, 10 i 14,7456 MHz kwarcem (obecnie mam na plytce przylutowana 14 ale nie podlaczona)

    wielkie dzieki za pomoc

    p.s. aha przypominam ze pisze w c
  • REKLAMA
  • #2 4134715
    pubus
    Poziom 30  
    Posty: 1289
    Pomógł: 138
    Ocena: 31
    Wszystko jest w porządku z tymi pinami...
    Temat nie raz wałkowany...
    W fusebits wyłączyć JTAG i po problemie...
    Kod programu nie ma wpływu na wybór źródła sygnału taktującego...
    Fabrycznie AVR chodzą na wewnętrznym generatorze RC i żeby to zmienić trzeba zmienić ustawienia w fusebits...
    Częstotliwość dobierasz do aplikacji...
    Większa f oznacza większy pobór prądu ale i szybsze działanie...
    Kwarc 14,7456 to kwarc do UART'a więc do zestawu jak znalazł jeżeli tylko przewidziałeś komunikację RS z komp lub innym uC...
  • #3 4134731
    bobbyAIR
    Poziom 20  
    Posty: 267
    Pomógł: 41
    Ocena: 6
    Ad 1 Nie są
    Ad 2 Przeczytać dokumentacje
    Ad 3 Nic lub tylko deklaracje czestotliwosci taktowania dla kompilatora
    Ad 3 Dokladnie to samo
    Ad 4 Predkosc pracy i dokladnosc interfejsu UART. Przy tych ktorych wartosc jest potega 2 da sie uzyskac maxymalne predkosci.
    Troche dokladnie piny portu C o których mówisz domyślnie są używane przez JTAG o czym w dokumentacji napisano. Aby wyłaczyć JTAG należy przestawić FUSE bity ( sekcja Memory Programing w dokumentacji ), wtedy piny stna sie normalnymi I/O. Kompilator avr-gcc wymaga delklaracji czestotliwosci taktowania dla nietorych funkcji ( np. z naglowka <util/delay.h> ) która może znajdować sie zarówno w Makefile jak też w źródłach programu. Na pewno przy kompilacji się upomni jak będzie mu tego brakowało.
    Aby kwarc zewnętrzny mógł być używany należy go nie tylko podłączyć ale przestawić FUSE bity ( dokumentacji, sekcja System Clock and Clock Options ). Duzo informacji znajdziesz pod linkiem Kliknij
  • REKLAMA
  • #4 4134753
    virco
    Poziom 11  
    Posty: 23
    Ocena: 6
    hmm.. no ok ale gdzie to znajde?
    w avr studio nie widze takiej opcji/zakladki
    a w pongu znalazlem zakladke configuration and security bits...
    mam tam zaznaczyc "jtagen"? bo to najbardziej z nazwy przypomina to co piszesz
    a jesli tak to mam zaznaczyc rowniez w program options write configuration and security bits...
    choc mam wrazenie ze nie o to ci chodzilo...

    a co do kwarcu 14 byla montowana z mysla w przyszlosci pod uart... natomiast moje pytanie wyszlo bo we wszystkich ksiazkach uzywa sie 8, 4 lub 10 MHzowych :idea:

    aha poniewaz nie mam wejscia com w pc-ecie (a wiec rs232) to zastanawialem sie na dokupieniem kontrolera com na pci..
    nie wie ktos czy to bedzie chodzic?
    bo podobno kontrolery z usb na com robia jazdy...
  • REKLAMA
  • #5 4134883
    Ch.M.
    Poziom 27  
    Posty: 1009
    Pomógł: 62
    Ocena: 15
    Ogólnie dodatkowe porty na kartach działają ale nie z każdym programem. Przykładowo ponyprog nie działa mi a ispprogrammer dybkowskiego śmiga (z nim jednak sa problemy przy grzebaniu w fusach-bardzo nieintuicyjne nastawy) Wszystko zalezy od aplikacji :)
    Pozdrawiam
  • #6 4135158
    bobbyAIR
    Poziom 20  
    Posty: 267
    Pomógł: 41
    Ocena: 6
    virco napisał:

    mam tam zaznaczyc "jtagen"? bo to najbardziej z nazwy przypomina to co piszesz

    Przeczytaj sekcje Memory programing w dokumentacji a będziesz wiedział co , jak i po co zaznaczyć. Przy okazji dowiesz się wiele więcej o FUSE BITach co przyda ci się w przyszłości
    virco napisał:
    natomiast moje pytanie wyszlo bo we wszystkich ksiazkach uzywa sie 8, 4 lub 10 MHzowych

    DOKUMENTACJA mówi dokładnie ( na pierwszej stronie ) jaki kwarc z jakim kontrolerem może pracować. Atmegi w wersji L 0-8MHz, zwykłe 0-16MHz. W praktyce da się przetaktować np "elkę" do 12 MHz i pracuje doskonale jako programator AVR pod USB :D[/quote]

    virco napisał:
    bo podobno kontrolery z usb na com robia jazdy...

    Zależy co kupisz. Przejsciówki na układach FTDI lub Profilic nie robią żadnych jazd. Natomiast chinski badziew pewnie stwarza problemy.

    FTDI daje tak dobrą dokumentację, że można konwerter zrobić samemu na jakimś moduliku pod np AtMega32.
    Załączniki:
    • atmega32 portC jako out,problem(nie dzialaja niektore linie) dscf0861.jpg (45.69 KB) Musisz być zalogowany, aby pobrać ten załącznik.
    • atmega32 portC jako out,problem(nie dzialaja niektore linie) dscf0859.jpg (60.67 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • REKLAMA
  • #7 4142758
    Konto nie istnieje
    Konto nie istnieje  
  • #8 4144325
    bobbyAIR
    Poziom 20  
    Posty: 267
    Pomógł: 41
    Ocena: 6
    Jeśli już to wyłaczenie w ustawieniach fuse bit wystarczy w zupełności aby jtag został wyłączony. Nie trzeba nic programowo zmieniać. Dwa programowo można wyłączyć JTAG jeśli nie chce się tego robić na stałe poprzez zmianę we fuse bitach. Trzy, dwukrotnie bo jak jest napisane w DOKUMENTACJI trzeba to zrobić dwa razy w odstępie nie większym jak 4 cykli procesora. W C to tak wygląda
    MCUCSR |= (1<<JTD);
    MCUCSR |= (1<<JTD);
  • #9 4144437
    Konto nie istnieje
    Konto nie istnieje  
  • #10 4144532
    bobbyAIR
    Poziom 20  
    Posty: 267
    Pomógł: 41
    Ocena: 6
    Brakło słowa "lub" więc uzupełniłem. A dokumentacja czasem kłamie to fakt. Ale jeśli wiadomo, że w jakiejś sprawie nie kłamie to czemu nie odesłać do niej jako źródła wiedzy
  • #11 4145460
    Konto nie istnieje
    Konto nie istnieje  
  • #12 8563719
    finger6
    Poziom 11  
    Posty: 29
    Panowie jest problem. Też nie działał mi port c, wyłączyłem opcję jtagen, ale teraz nie mogę połączyć się z moim układem, bo mam tylko programator JTAG...
    Wiem, wiem, troche nieprzemyślana decyzja.
    Jest na to jakaś rada ?

Podsumowanie tematu

✨ Problem z niektórymi liniami portu C mikrokontrolera Atmega32 (piny 24-27) wynika z domyślnie włączonego interfejsu JTAG, który zajmuje te linie. Aby port C działał poprawnie jako wyjście, należy wyłączyć JTAG poprzez odpowiednią konfigurację fuse bitów (fusebits) w mikrokontrolerze. Wyłączenie JTAG w fuse bitach powoduje zwolnienie linii portu C do normalnego użytku jako I/O. Programowo można również wyłączyć JTAG, wykonując dwukrotnie ustawienie bitu JTD w rejestrze MCUCSR, jednak wystarczy zazwyczaj wyłączyć go na stałe w fuse bitach. Dokumentacja Atmegi32 zawiera szczegółowe informacje o fuse bitach i konfiguracji zegara systemowego, który fabrycznie jest ustawiony na wewnętrzny generator RC. Do pracy z UART-em zalecany jest kwarc 14,7456 MHz, jednak w praktyce stosuje się też kwarce 4, 8 lub 10 MHz. Programowanie odbywa się za pomocą programatora LPT (bazującego na układzie 74LS244N) i oprogramowania PonyProg2000, a do ładowania kodu używany jest loader Ponga. W przypadku braku portu COM w komputerze można rozważyć zakup kontrolera COM na PCI, jednak konwertery USB-COM mogą powodować problemy z kompatybilnością. Wskazane jest dokładne zapoznanie się z dokumentacją i sekcją Memory Programming dotyczącą fuse bitów, aby prawidłowo skonfigurować mikrokontroler i uniknąć problemów z portami i programowaniem.
Podsumowanie wygenerowane przez AI na podstawie treści dyskusji.
REKLAMA