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.
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.
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
- Problemy z zaprogramowaniem: Spis treści
Tydzień kombinowałem czemu Atmega64A nie chce mi się programować, bo "przecież MISO i MOSI było podłączone jak trzeba"... thx za artykuł, rozjaśnia wiele kwestii. ;)
OdpowiedzUsuńAaa, i jeszcze jedno - ma autor rację, że czytanie datasheet to rzecz święta, ale... chyba wiele osób ze mną się zgodzi, że mimo wszystko pewne rzeczy mogą umknąć. Niestety. W końcu datasheet'y to to średnio jakieś 500 stron, a w poszczególnych działach nadal pewne informacje mogą umknąć w gąszczu innych... ;) Albo tylko ja mam problemy z pomijaniem informacji??? :P
OdpowiedzUsuń