Mikrokontrolery - Jak zacząć?

... czyli zbiór praktycznej wiedzy dot. mikrokontrolerów.
Pokazywanie postów oznaczonych etykietą Problemy programowania. Pokaż wszystkie posty
Pokazywanie postów oznaczonych etykietą Problemy programowania. Pokaż wszystkie posty

piątek, 1 kwietnia 2011

Pin RESET powoduje permanentny stan resetu


Autor: Dondu

Artykuł jest fragmentem cyklu: Problemy z zaprogramowaniem

Każdy mikrokontroler ma pin resetujący. W niektórych można wyłączyć tę jego funkcję, ale z tym uważaj i zanim to zrobisz przeczytaj ten artykuł.

Jeżeli nie wyłączasz funkcji RESET tego pinu, to musisz zadbać o to, by był na nim odpowiedni dla danego mikrokontrolera stan, nie powodujący wywołania resetu. Innymi słowy na przykładzie mikrokontrolerów AVR, musisz wymusić na nim stan wysoki.

Można to zrobić na jeden z dwóch sposobów:
  • za pomocą programu włączyć wewnętrzny rezystor pull-up,
  • dodając zewnętrzny rezystor (czytaj tutaj).


Zobacz pozostałe przypadki

Oceń artykuł.
Wasze opinie są dla nas ważne, gdyż pozwalają dopracować poszczególne artykuły.
Pozdrawiamy, Autorzy
Ten artykuł oceniam na:

Niewłaściwe ustawienie fusebit'ów.


Autor: Dondu

Artykuł jest fragmentem cyklu: Problemy z zaprogramowaniem

Fusebity to temat rzeka. Bardzo często nieprawidłowe działanie mikrokontrolera jest związane z niewłaściwym ich ustawieniem. Najczęściej dotyczy to ustawień zegara taktującego mikrokontroler.

Nie ma chyba osoby z większym stażem, która nie zablokowała sobie jakiegoś mikrokontrolera Atmela. Choć nie zawsze od razu zablokujesz mikrokontroler, to sprawdzaj ustawienia fusebit'ów zegara w pierwszej kolejności.

Jeżeli przestawisz fusebity na inne niż posiadane przez Ciebie źródło sygnału zegarowego, to:
  1. programowanie przebiegnie prawidłowo, 
  2. ale po jego zakończeniu mikrokontroler nie wystartuje.
Być może przestawiłeś jedynie częstotliwość zegara, a nie wybór jego źródła. To także może powodować nieprawidłowe działanie mikrokontrolera.

Podobnie może być z Watchdog' iem, którego włączyłeś w fusebitach, ale w programie nie obsługujesz prawidłowo, itp.

Dyrek
Po jednodniowym przewietrzeniu umysłu doszedłem co jest nie tak. Jak to bywa rutyna potrafi zgubić, źle zaprogramowałem fusy programowałem z głowy i byłem święcie przekonany, że dobrze a powinienem zajrzeć do noty, prawdopodobnie ustawiłem zewnętrzne taktowanie na obwodzie RC zamiast kwarcu ...


W mikrokontrolerach PIC firmy Microchip nie musisz się tego obawiać ze względu na to, że fusebity zawsze są kasowane do wartości domyślnej wraz z kasowaniem mikrokontrolera na początku procesu programowania.


Co zrobić?

Po pierwsze uważać na to, co ustawiasz w fusebit'ach w mikrokontrolery AVR Atmel, bo zablokować je bardzo łatwo. Jeżeli czegoś nie jesteś pewien, to zapytaj na Forum Elektroda.pl. A jeżeli już sobie zablokowałeś, to czytasz:  Zablokowany mikrokontroler Atmel




Zobacz pozostałe przypadki

Oceń artykuł.
Wasze opinie są dla nas ważne, gdyż pozwalają dopracować poszczególne artykuły.
Pozdrawiamy, Autorzy
Ten artykuł oceniam na:

Programator przeszkadza w działaniu mikrokontrolera.


Autor: Dondu

Artykuł jest fragmentem cyklu: Problemy z zaprogramowaniem

Czasami podłączone pod mikrokontroler programatory uniemożliwiają prawidłową ich pracę. Nie mam jednoznacznej odpowiedzi dlaczego tak się dzieje. Jednak takie przypadki się trafiają (mnie osobiście także), ale nie udało się ustalić konkretnie przyczyny. Może to być związane z nieprawidłowym ustawieniem sygnałów programatora po zakończeniu programowania (w szczególności RESET'u) lub innego wpływu programatora na programowany układ.


Co zrobić?

Odłącz programator, zresetuj mikrokontroler pinem RESET (MLCR lub innym zależnie od mikrokontrolera jaki posiadasz) lub wyłącz na chwilę zasilanie i włącz je ponownie.



Zobacz pozostałe przypadki

Oceń artykuł.
Wasze opinie są dla nas ważne, gdyż pozwalają dopracować poszczególne artykuły.
Pozdrawiamy, Autorzy
Ten artykuł oceniam na:

Błędy montażu


Autor: Dondu

Artykuł jest fragmentem cyklu: Problemy z zaprogramowaniem


Błędy montażu są częste i zdarzają się każdemu. Czasami są trudne do wykrycia i można przez to stracić sporo czasu.

Aga93_
Sprawdziłam multimetrem połączenia między tą przejściówką a procesorem i nie było styku w SCK i MISO. Okazało się że atmega nie była dobrze dociśnięta do płytki...

Ilidan18
Okazało się, że jedna z przelotek nie była poprawnie zlutowana.

maniak82
Po kilku próbach okazało się, że przewód USB wyciągnięty ze starej myszy przylutowany do goldpinów podpięty do płytki stykowej nie łączy wystarczająco pewnie. Poprawiłem połączenie i wszystko zaczęło działać.

Czasami okazuje się, że wina leży po stronie uszkodzonej ścieżki (trawienie), którego nie zauważono, podczas sprawdzania PCB przed montażem elementów. W przypadku montażu SMD, zauważenie takiego uszkodzenia ścieżki po przylutowaniu elementów może być niemożliwe. Pozostaje szukanie za pomocą multimetru.



Co zrobić?

Należy szukać:
  • nieprawidłowo włożonych (niedociśniętych) układów scalonych w podstawki lub płytkę stykową,
  • nadtrawionych ścieżek,
  • zimnych lutów (matowe),
  • zwarć lutowania,
  • odwrotnie wmontowanych elementów,
  • błędy lustrzanego odbicia PCB,
  • uszkodzonych przewodów,
  • itd.



Zobacz pozostałe przypadki

Oceń artykuł.
Wasze opinie są dla nas ważne, gdyż pozwalają dopracować poszczególne artykuły.
Pozdrawiamy, Autorzy
Ten artykuł oceniam na:

Nieprawidłowe podłączenie sygnałów programujących


Autor: Dondu

Artykuł jest fragmentem cyklu: Problemy z zaprogramowaniem


To bardzo często spotykany przypadek. W szczególności powinieneś zwracać na to uwagę, pracując na płytkach stykowych, czy innych, które nie mają gniazda ISP.


Co zrobić?
Sprawdzić prawidłowe podłączenie zarówno po stronie mikrokontrolera (datasheet), taśmy oraz programatora ISP - Co to takiego?

Zobacz także jak podłączać programator do płytki stykowej.

Zobacz pozostałe przypadki


Oceń artykuł.
Wasze opinie są dla nas ważne, gdyż pozwalają dopracować poszczególne artykuły.
Pozdrawiamy, Autorzy
Ten artykuł oceniam na:

Niestandardowe gniazdo ISP


Autor: Dondu

Artykuł jest fragmentem cyklu: Problemy z zaprogramowaniem


Przykład niestandardowego podłączenia sygnałów w gnieździe ISP urządzenia z mikrokontrolerem AVR.
Czasami zdarza się, że początkujący przyjmują dowolne rozmieszczenie sygnałów w gnieździe programującym. Nie ma obowiązku stosowania się do standardów więc mają takie prawo :-)

Zastanów się jednak, co się stanie, gdy do niestandardowo zaprojektowanego gniazda programowania podłączysz lub podłączy ktoś inny, standardowo zaprojektowaną taśmę z standardowego programatora?

W najlepszym przypadku brak możliwości programowania.
W najgorszym uszkodzenie programatora, budowanego urządzenia, a w skrajnych przypadkach nawet komputera, do którego programator jest podłączony.

Dlaczego?
Bo sygnały programujące będą zamienione, a w najgorszym przypadku możesz doprowadzić nawet do zwarcia na zasilaniu lub zasileniu urządzenia odwrotnie podłączonym napięciem!

Programatory niezgodne ze standardem

Niektóre firmy oferują programatory w których piny w gnieździe są ułożone niestandardowo. Na przykład w przypadku USBasp może dotyczyć to pinów masy - sprawdź dokładnie swój programator pod tym kątem.


Co zrobić?
Gdy projektujesz urządzenie zadbaj o to, aby miało standardowe złącza do programowania szeregowego ISP: ISP – Co to takiego?



Zobacz pozostałe przypadki

Oceń artykuł.
Wasze opinie są dla nas ważne, gdyż pozwalają dopracować poszczególne artykuły.
Pozdrawiamy, Autorzy
Ten artykuł oceniam na:

ISP vs współdzielenie pinów RESET, MISO, MOSI i SCK.


Autor: Dondu

Artykuł jest fragmentem cyklu: Problemy z zaprogramowaniem


W punkcie dot. rezystorów i kondensatorów na pinie RESET opisałem jaki negatywny wpływ mogą mieć na możliwość programowania mikrokontrolera.

Podobnie ma się sprawa z pozostałymi pinami, czyli MISO, MOSI i SCK. One także mają swoje alternatywne funkcje, które możesz chcieć wykorzystać w swoim projekcie nie tylko do programowania mikrokontrolera.

Chociaż w przeciwieństwie do pinu RESET, nie zmieniasz ich funkcji ustawieniem fusebitów, to bardzo często wykorzystujesz je do innych celów w czasie działania mikrokontrolera. Powstaje wtedy możliwość zaistnienia konfliktu podczas programowania mikrokontrolera.

Więcej informacji na ten temat znajdziesz w tym artykule: ISP – Współdzielenie pinów



Zobacz pozostałe przypadki

Oceń artykuł.
Wasze opinie są dla nas ważne, gdyż pozwalają dopracować poszczególne artykuły.
Pozdrawiamy, Autorzy
Ten artykuł oceniam na:

Programator USBasp: Zworka S_Target


Autor: Dondu

Artykuł jest fragmentem cyklu: Problemy z zaprogramowaniem


Programator USBasp ma możliwość zasilania programowanego układu ze złącza USB.


Programator USBasp pozwala zasilać programowany mikrokontroler - zworka S_Target.
Rys. 1.13 - Programator USBasp może zasilać
programowany mikrokontroler.

Jest to możliwe, po włączeniu odpowiedniej zworki S_Target (Supply_Target) lub o innej nazwie w zależności od producenta.

Uwaga!!! Nie włączaj zasilania z programatora, jeżeli mikrokontroler jest zasilany z innego źródła (zasilacz, bateria, itp).


Co zrobić?

Jeżeli Twój mikrokontroler ma być zasilany z programatora, sprawdź ustawienia tej zworki.

radroid
... znalazło się rozwiązanie, po prostu układ nie miał zasilania, założyłem zworkę na VCC na programatorze i śmiga aż miło.



Zobacz pozostałe przypadki

Oceń artykuł.
Wasze opinie są dla nas ważne, gdyż pozwalają dopracować poszczególne artykuły.
Pozdrawiamy, Autorzy
Ten artykuł oceniam na:

Programator USBasp: Nieaktualne sterowniki


Autor: Dondu

Artykuł jest fragmentem cyklu: Problemy z zaprogramowaniem


USBasp jak nazwa wskazuje wykorzystuje port USB, stąd niezbędne są odpowiednie sterownik dla systemu, który masz zainstalowany na swoim komputerze. W sieci dostępnych jest sporo różnych wersji, które nie zawsze pasują do Twojego programatora, co objawia się problemami wskazanymi przez system w momencie podłączenia go do komputera.

skrzat
A problem był w tym, że swoją przygodę zacząłem od wiekowego już kursu z EDW, a tam kazali zainstalować wersję 20050214. Zainstalowałem najnowszą i działa.

Czasami najnowsza nie znaczy najlepsza dla Twojej wersji programatora - gdyby nie działała, poszukaj nieco starszych:

fulbin88
Problem rozwiązany! Pomogło zainstalowanie najstarszego sterownika do programatora usbasp ze strony http://www.fischl.de/usbasp/


Co zrobić?

Pytaj sprzedawcę, które sterowniki są właściwe dla zakupionego USBasp lub szukaj w sieci.




Zobacz pozostałe przypadki

Oceń artykuł.
Wasze opinie są dla nas ważne, gdyż pozwalają dopracować poszczególne artykuły.
Pozdrawiamy, Autorzy
Ten artykuł oceniam na:

Programator USBasp: Uszkodzony firmware


Autor: Dondu

Artykuł jest fragmentem cyklu: Problemy z zaprogramowaniem


Większość programatorów USBasp posiada zworkę do ich programowania S_Prog (SELFF_PROG, itp. w zależności od producenta). Jeżeli przez pomyłkę ustawisz tę zworkę w tryb programowania programatora, i zaczniesz programować swój układ (mikrokontroler), to możesz uszkodzić wewnętrzny firmware, przez co stracić możliwość programowania.


Co zrobić?

Przede wszystkim uważać, by nie przestawić zworki. A jeżeli już wystąpił ten problem, należy ponownie zaprogramować programator.


Zobacz pozostałe przypadki

Oceń artykuł.
Wasze opinie są dla nas ważne, gdyż pozwalają dopracować poszczególne artykuły.
Pozdrawiamy, Autorzy
Ten artykuł oceniam na:

Programator USBasp: Niezaprogramowany programator


Autor: Dondu

Artykuł jest fragmentem cyklu: Problemy z zaprogramowaniem


To bardzo rzadki przypadek, który może spotkać początkującego, który we własnym zakresie zbudował sobie programator USBasp. Programator ten składa się z mikrokontrolera, który trzeba zaprogramować specjalnym sterownikiem (tzw. firmware), który zawiera właściwe oprogramowanie programatora. 

Bez zaprogramowania mikrokontrolera w programatorze USBasp, jest on tylko składanką elementów elektronicznych, nie nadającą się do programowania innych układów :-) 

McMonster
A zaprogramowałeś programator? To urządzenie nie zareaguje na podłączenie do komputeraz bez zaprogramowania samego programatora. Można to zrobić tylko innym programatorem ...

Bartuss12
Właśnie programuje ...


Co zrobić?

Zaprogramować programator za pomocą innego programatora. 



Zobacz pozostałe przypadki

Oceń artykuł.
Wasze opinie są dla nas ważne, gdyż pozwalają dopracować poszczególne artykuły.
Pozdrawiamy, Autorzy
Ten artykuł oceniam na:

Programator USBasp: Zworka SLOW


Autor: Dondu

Artykuł jest fragmentem cyklu: Problemy z zaprogramowaniem

Bardzo często początkujący, którzy właśnie zakupili programator USBasp, nie czytają jego instrukcji lub jej nie otrzymali. Znaczna część tych programatorów posiada zworkę do programowania ze zmniejszoną częstotliwością S_Prog (SLOW_PROG, itp w zależności od producenta). Wykorzystuje się to wtedy gdy mikrokontroler jest taktowany wolnym źródłem zegara, np. kwarcem 32kHz.

fuseklorz
Wystarczyło przestwić zworke odpowiedzialną za programowanie przy niskiej częstotliwości zegara.


Co zrobić?
  • Sprawdź czy masz swój programator ustawiony na programowanie ze zmniejszoną częstotliwością. 
  • Jeżeli nie wiesz jak to zrobić, zapytaj sprzedawcę.


Zobacz pozostałe przypadki

Oceń artykuł.
Wasze opinie są dla nas ważne, gdyż pozwalają dopracować poszczególne artykuły.
Pozdrawiamy, Autorzy
Ten artykuł oceniam na:

Taśma programatora zbyt długa lub wadliwa


Autor: Dondu

Artykuł jest fragmentem cyklu: Problemy z zaprogramowaniem


Taśma programatora nie powinna być zbyt długa.
Długość taśmy
Przesyłanie sygnałów na znaczne odległości przy dużej częstotliwości może powodować, iż sygnały te są zniekształcone przez, co uniemożliwiają programowanie. Nie ma tutaj jakiejś jednoznacznej reguły, ale zasada "im krótsza taśma pomiędzy programatorem, a mikrokontrolerem, tym mniej prblemów", jest warta stosowania.

Gdy miałem problemy z programatorem PICKIT3 Microchipa pierwsze pytanie supportu było o długość przewodu :-) Wprawdzie nie to było przyczyną moich problemów (taśma miała 15cm), ale takie pytanie z supportu Microchipa pokazuje jak często muszą mieć takie przypadki.


Uszkodzona lub źle połączona taśma
To rzadkie przypadki, ale może się zdarzyć, że:
  • taśma jest uszkodzona, przecięta lub co gorsza złamana w środku (co trudno zauważyć),
  • wtyczki na kablu programatora są: źle zaciśnięte i nie stykają dokładnie,
  • jedna z wtyczek jest zamontowana w drugą stronę, przez co krzyżuje sygnały przy podłączeniu pomiędzy gniazdami programatora i Twojego układu. 

opaluch
Teraz padł mi kabel od programatora i nawet nie mam jak sprawdzić.
...
opaluch
Nieraz problemem jest też źle zaciśnięty przewód od programatora do płytki.


Co zrobić?
  1. Sprawdzić czy wtyki są zaciśnięte w prawidłowych kierunkach oraz dokładnie "przedzwonić" (sprawdzić) taśmę multimetrem: ISP - Co to takiego?
  2. Skrócić taśmę.
  3. Zwolnić prędkość programowania (jeżeli masz taką możliwość).



Zobacz pozostałe przypadki

Oceń artykuł.
Wasze opinie są dla nas ważne, gdyż pozwalają dopracować poszczególne artykuły.
Pozdrawiamy, Autorzy
Ten artykuł oceniam na:

Złe wartości kondensatora i rezystora na pinie RESET, MCLR


Autor: Dondu

Artykuł jest fragmentem cyklu: Problemy z zaprogramowaniem

Pin RESET (MCLR, itp. w mikrokontrolerach innych  producentów)  wzbogaca się o dodatkowe elementy zewnętrzne, którymi są rezystor i/lub kondensator. Ale pin RESET jest wykorzystywany podczas programowania i podłączony do programatora, a podłączone przez Ciebie rezystor i/lub kondensator, mogą przeszkadzać w zaprogramowaniu mikrokontrolera.


Rezystor 
Z reguły pin ten "podciąga się" zewnętrznym rezystorem do plusa zasilania (Vcc), by w trakcie pracy nie narazić się na niekontrolowany reset. Bezpieczne wartością zarówno dla AVR'ów jak i PIC'ów jest rezystor równy bądź większy od 10k


Kondensator
Jeżeli Twój mikrokontroler pracuje w środowisku o dużych zakłóceniach (silniki, przekaźniki, itp.), to warto na tym pinie dodać kondensator, który dodatkowo ochroni przed niekontrolowanym resetem mikrokontrolera. Ale tutaj podobnie jak w przypadku rezystora kondensator ten może uniemożliwić programowanie mikrokontrolera ponieważ zniekształca przebieg sygnału programującego. 

SMYQ
Przed chwilą odlutowałem go (kondensator na pinie RESET) i programator przeczytał atmegę, udało się też ją zaprogramować.


W większości przypadków rezystor 10k oraz kondensator 10nF - 100nF nie przeszkadzają, ale może się zdarzyć jak kol. SMYQ, w szczególności, gdy zastosujesz kondensator o wartości liczonej w µF, który z pewnością nie pozwoli na zaprogramowanie mikrokontrolera.


Innymi słowy to co jest zaletą stosowania rezystora i kondensatora podczas pracy Twojego układu, może okazać się generatorem problemów podczas jego programowania. 

Co zrobić?

Jeżeli przeszkadzają w programowaniu usunąć kondensator i rezystor na czas programowania lub przeczytać poniższe artykuły (znajdziesz tam wiedzę i rozwiązania tego problemu):




Zobacz pozostałe przypadki

Oceń artykuł.
Wasze opinie są dla nas ważne, gdyż pozwalają dopracować poszczególne artykuły.
Pozdrawiamy, Autorzy
Ten artykuł oceniam na:

Wyłączenie programowania szeregowego fusebit'em SPIEN


Autor: Dondu

Artykuł jest fragmentem cyklu: Problemy z zaprogramowaniem


Problemem podobnym do poprzedniego punktu jest wyłączenie za pomocą fusebitów możliwości programowania szeregowego. W AVR'ach odpowiada za to fusebit SPIEN:


SPIEN - fusebit włączający możliwość programowania szeregowego mikrokontrolerów AVR.
Rys. 1.6 ATmega8 - SPIEN - fusebit włączający możliwość
programowania szeregowego mikrokontrolera.


Pod tabelką jest informacja, iż fusebit SPIEN nie jest dostępny za pomocą programatora szeregowego. Innymi słowy, nie zmienisz stanu pinu SPIEN mikrokontrolera dysponując takim programatorem. To zwiększa bezpieczeństwo początkujących posiadających programator szeregowy, bo z tego tytułu nie zablokują sobie mikrokontrolera.


Ale jeżeli zrobią to (lub ktoś inny) programatorem równoległym, nie będzie możliwe programowanie takiego mikrokontrolera programatorem szeregowym.


Co zrobić?

Aby odzyskać tak zablokowany mikrokontroler musisz mieć programator równoległy lub użyć Fusebit Doctora.  




Zobacz pozostałe przypadki

Oceń artykuł.
Wasze opinie są dla nas ważne, gdyż pozwalają dopracować poszczególne artykuły.
Pozdrawiamy, Autorzy
Ten artykuł oceniam na:

Wyłączenie pinu RESET w fusebit'ach mikrokontrolera AVR


Autor: Dondu

Artykuł jest fragmentem cyklu: Problemy z zaprogramowaniem

To problem, który możesz sobie zafundować nieumiejętnie lub przypadkowo wyłączając funkcjonalność pinu RESET.  W wielu mikrokontrolerach pin RESET ma też inne funkcje. Na przykład w ATmega8 pin RESET ma także funkcję alternatywną PC6 (jedno z wejść/wyjść portu C).

ATmega8 - alternatywne funkcje pinu RESET.
Rys. 1.5.1 - ATmega8 - alternatywne funkcje pinu RESET


Wyłączając w fusebit'ach funkcję RESET na tym pinie (fusebit RSTDISBL), przełączasz jego funkcję na pin PC6Ale tutaj jest pewien problem:

RSTDISBL - fusebit wyłączający funkcję RESET pinu mikrokontrolera.
Rys. 1.5.2 -  ATmega8  - RSTDISBL - fusebit wyłączający
funkcję RESET
 pinu mikrokontrolera.

Pod tabelką jest informacja, że gdy dla tego pinu wyłączysz funkcję RESET, a włączysz funkcję PC6, to w takiej sytuacji nie jest możliwe dalsze programowanie niskonapięciowe za pomocą ISP. Jedynym ratunkiem jest posiadanie programatora równoległego wysokonapięciowego. Alternatywą, o której nie pisze nic w datasheet jest odratowanie mikrokontrolera za pomocą Fusebit Doctora.

Co zrobić?
Uważać w czasie przestawiania fusebit'ów!
Zastosować Fusebit Doctora.  




Zobacz pozostałe przypadki

Oceń artykuł.
Wasze opinie są dla nas ważne, gdyż pozwalają dopracować poszczególne artykuły.
Pozdrawiamy, Autorzy
Ten artykuł oceniam na:

PDO i PDI zamiast MISO i MOSI, czyli niespodzianka AVR'ów


Autor: Dondu

Artykuł jest fragmentem cyklu: Problemy z zaprogramowaniem


Przesiadając się z mniejszych mikrokontrolerów AVR firmy Atmel na nieco większe można, a wręcz "obowiązkowo" spotykać się z niespodzianką:

brabo
wg datasheet: MOSI = PB2, MISO = PB3, a tak na prawdę jest: MOSI = PE0, MISO = PE1.

Nie, nie ma żadnej pomyłki w datasheet :-)

Niespodzianką jest fakt, iż podczas programowania szeregowego ISP, zamiast pinów MISO i MOSI do programowania używane są piny PDO i PDI.

PDI - Programming Data Input
PDO - Programming Data Output

Przykładem jest mikrokontroler ATmega64.

ATmega64 - programowanie odbywa za pomocą pinów PDO i PDI, a nie MISO i MOSI.


ATmega64 - piny programowania to PDI oraz PDO, a nie MISO i MOSI.
Rys. 1.4 ATmega64

A żeby było jeszcze ciekawiej, to można się nadziać  (tak jak ja, gdy podpowiadałem kol. Ilidan18) na przypadek, w którym w tym samym datasheet dla mikrokontrolerów tej samej rodziny, jedne mikrokontrolery programuje się za pomocą PDI i PDO, a drugie za pomocą MOSI i MISO.

Takim przykładem jest rodzina ATmega640/1280/1281/2560/2561, gdzie:



Co zrobić?
Biorąc nieznany Ci typ mikrokontrolera zawsze sprawdź w jego datasheet'cie, które piny służą do jego programowania.



Zobacz pozostałe przypadki

Oceń artykuł.
Wasze opinie są dla nas ważne, gdyż pozwalają dopracować poszczególne artykuły.
Pozdrawiamy, Autorzy
Ten artykuł oceniam na:

Mylenie sygnałów MISO i MOSI w mikrokontrolerach AVR.


Autor: Dondu

Artykuł jest fragmentem cyklu: Problemy z zaprogramowaniem


To tzw "czeski błąd" łatwy do popełnienia. Te same literki lecz kolejność inna :-)
Ich pomylenie oznacza konflikt uniemożliwiający przesyłanie danych pomiędzy programatorem, a mikrokontrolerem.

MISO <---> MOSI

wilczasty
... okazało się, że zamieniłem MISO z MOSI, bo korzystam z własnej płytki testowej i w opisie się coś machnąłem ...


Jest także inne podłoże tego problemu, a mianowicie przyzwyczajenie, że w przypadku niektórych inferfejsów sygnały wymiany danych są krzyżowane:

UART - Krzyżowanie sygnałów danych.
Rys. 1.3.1 UART - Krzyżowanie sygnałów danych.

W przypadku programatora szeregowego ISP krzyżowanie nie występuje (!):

Programowanie ISP - Brak krzyżowania sygnałów wymiany danych.
Rys. 1.3.2 Programowanie ISP - Brak krzyżowania sygnałów wymiany danych.

Co zrobić?
Sprawdź na schemacie i twoim układzie, czy czasem nie pomyliłeś się podłączając te sygnały.
Tutaj znajdziesz zasady: ISP - Co to takiego?




Zobacz pozostałe przypadki

Oceń artykuł.
Wasze opinie są dla nas ważne, gdyż pozwalają dopracować poszczególne artykuły.
Pozdrawiamy, Autorzy
Ten artykuł oceniam na:

Brak połączenia masy mikrokontrolera i programatora


Autor: Dondu

Artykuł jest fragmentem cyklu: Problemy z zaprogramowaniem


W przypadku gdy zasilasz programowany mikrokontroler z progaramatora nie powinieneś popełnić błędu, bo połączenie zasilania jest nawet dla 99,9% początkujących oczywiste:

Prawidłowe zasilanie mikrokontrolera z programatora, podczas programowania.
Rys. 1.2.1 - Połączenie mas przy zasilaniu mikrokontrolera z programatora. 

choć i tutaj zdarzają się pojedyncze przypadki zapominania o połączeniu mas (GND).

Ale bardzo często w przypadku programowania mikrokontrolera, który jest zasilany z osobnego źródła (nie z programatora np.zasilacza lub baterii), początkujący zapomina połączyć masy wszystkich trzech elementów:

Prawidłowe zasilanie mikrokontrolera z zewnętrznego źródła, podczas programowania.
Rys. 1.2.2 - Połączenie mas przy zewnętrznym zasilaniu mikrokontrolera.

W przypadku gdy nie połączysz wszystkich mas (GND), mikrokontroler nie da się zaprogramować.


kiclaw
dondu - tak jak pisałeś, nie podłączyłem masy programatora i stąd nie chciało go programować z zewn. zasilaniem.

bartekboss17
Już działa - problem był w braku wspólnej masy. Programator skopiowałem od mojego nauczyciela od praktyk i skopiowałem sam fragment roboczy bez zasilania i nie połączyłem gnd procka z gnd programatora .

Niespodzianka dot. masy w programatorze

PJimi
... podłączyłem tylko jedno GND zamiast wszystkich występujących w złączu programatora. Myślałem, że są one i tak zwarte na płytce programatora. Okazało się, że jednak nie są zwarte i to było problemem.

Kupić nieprawidłowo zaprojektowany programator, jak widać także można :-)

Co zrobić?:
Sprawdź multimetrem lub wzrokowo, czy masa programatora (pin GND) jest podłączony z masą mikrokontrolera (piny GND lub Vss zależnie od tego jaki mikrokontroler używasz) i masą źródła zasialania.


Zobacz pozostałe przypadki
Oceń artykuł.
Wasze opinie są dla nas ważne, gdyż pozwalają dopracować poszczególne artykuły.
Pozdrawiamy, Autorzy
Ten artykuł oceniam na:

Źle podłączone zasilanie


Autor: Dondu

Artykuł jest fragmentem cyklu: Problemy z zaprogramowaniem


Niby oczywiste, ale jednak spotyka się przypadki:
  • braku podłączenia zasilania, 
  • zamiany plusa i minusa (czyli Vcc i GND),
  • zwarcia na zasilaniu (Vcc z GND).

Brak zasilania
W czasie programowania mikrokontrolera musi być on zasilany. Jeżeli masz programator, który umożliwia zasilanie programowanego układu (np. USBasp), możesz to wykorzystać. Jeżeli nie, to musisz zasilić mikrokontroler z osobnego źródła (zasilacz, bateria, itp.). Pamiętaj, że w takim przypadku masy programatora, źródła zasilania i mikrokontrolera muszą być połączone (czytaj tutaj).

Często także lekceważony jest pin AVcc, którego nie podłączją początkujący w szczególności w czasie programowania mikrokontrolera. Zerkamy więc do datasheet np. ATmega8, a w nim znajdujemy rysunki podłączenia podczas programowania równoległego lub szeregowego:

AVR - Podczas programowania równoległego pin AVcc musi być podłączony. AVR - Podczas programowania szeregowego pin AVcc musi być podłączony.


A w pierwszej erracie do tego mikrokontrolera z 2002 roku znajdujemy informację, że:

AVR ATmega8 - Podczas programowania pin AVcc musi być podłączony.

pin AVcc musi być podłączony podczas programowania niezależnie, czy równoległego czy szeregowego, i że właśnie w erracie poprawiono powyższe rysunki.


Zamiana plusa i minusa, czyli Vcc i GND,Jeżeli podłączysz odwrotnie zasilanie do mikrokontrolera, to oczywiście działać nie będzie, a sygnałem ostrzegawczym jest wydzielane przez mikrokontroler ciepło! Niestety może być już za późno, by go uratować. :-(


Zwarcia na zasilaniu także się zdarzają:

Oshel
Przejrzalem kable jeszcze raz. I... wstyd się przyznać, ale nie wiem skąd i nie wiem po co miałem połączony + z masą. Stabilizator 5V strasznie mi się grzał i zastanawiałem się dlaczego.

Tak bywa, każdy z nas ma na swoim koncie spalone układy :-)

spajder16
... okazało się, że jeden drucik od kabla dotykał innego przy wtyczce od programatora i robił zwarcie.


Odwrotny montaż regulatora napięcia

PJimi
Faktycznie - stabilizator był zamontowany odwrotnie.

Zanim podłączysz zasilanie dokładnie sprawdzaj podłączenie regulatora napięcia, by nie mieć takich niespodzianek i strat :-)


Podłączanie regulatora "na pamięć"

Innym problemem jest budowanie układów "na pamięć" stosując różne regulatory napięcia, a tu kryją się niespodzianki:

Rys. Przykład regulatorów napięcia 5V (od lewej 78L05, 7805, LM1117-5.0)

Brak filtracji zasilania

W większości przypadków gdy chcesz jedynie zaprogramować mikrokontroler brak filtracji zasilania nie powinien przeszkodzić. Jednakże może się zdarzyć, że ich brak uniemożliwi nawet takż czynność jak programowanie nawet wtedy, gdy mikrokontroler zasilasz bezpośrednio z programatora.


sosza
dobra, już mi się udało, nie wiem co było źle, chyba dodanie kilku kondensatorów pomogło.


Czytaj: Zasilanie mikrokontrolera



Co zrobić?
Zanim podłączysz zasilanie sprawdź:
  • sprawdź w datasheet wyprowadzenia regulatora napięcia
  • czy podłączyłeś wszystkie piny zasilające (GND, Vcc oraz AVcc),
  • czy plus i minus zasilania podłączyłeś do właściwych pinów mikrokontrolera,
  • czy nie ma zwarcia pomiędzy pinami zasilania (multimetrem),
  • dołożyć kondensatory filtrujące zasilanie mikrokontrolera.


Zobacz pozostałe przypadki

Oceń artykuł.
Wasze opinie są dla nas ważne, gdyż pozwalają dopracować poszczególne artykuły.
Pozdrawiamy, Autorzy
Ten artykuł oceniam na:

Działy
Działy dodatkowe
Inne
O blogu




Dzisiaj
--> za darmo!!! <--
1. USBasp
2. microBOARD M8


Napisz artykuł
--> i wygraj nagrodę. <--


Co nowego na blogu?
Śledź naszego Facebook-a



Co nowego na blogu?
Śledź nas na Google+

/* 20140911 Wyłączona prawa kolumna */
  • 00

    dni

  • 00

    godzin

  • :
  • 00

    minut

  • :
  • 00

    sekund

Nie czekaj do ostatniego dnia!
Jakość opisu projektu także jest istotna (pkt 9.2 regulaminu).

Sponsorzy:

Zapamiętaj ten artykuł w moim prywatnym spisie treści.