Usystematyzowanie wiedzy dla żółtodzioba
Usystematyzowanie wiedzy dla żółtodzioba
Witam!
Przepraszam za prostotę pytań, ale jestem w temacie kompletnie zielony, a dostęp do internetowej wiedzy mam dość utrudniony.
Przeczytałem artykuł: „Mikroprocesorowa ośla łączka - wstęp”, przez co bardzo zaciekawiłem się tematem programowania mikrokontrolerów. Niestety na stronie www.edf.edu.pl zamieszczony jest tylko wstęp i mój kurs zatrzymał się w martwym punkcie.
Proszę, więc o rozjaśnienie mi całości (czy warto się za to zabierać). Co robi się po kolei, gdy chcę przykładowo zbudować mechanizm, zapalający losowo 1 diodę z matrycy LED-ów po naciśnięciu przycisku: 1) pisanie programu na PC; 2)tworzenie płytki drukowanej przy pomocy której jest łączony komputer z procesorkiem; 3) tworzenie końcowej płyty między innymi z guziczkiem „start losowania” i matrycą LED oraz przepinanie tam układów pamiętających program. Czy po odłączeniu mechanizmu od komputera będzie on pamiętał algorytmy, jak tak to czy pamięć jest w osobnej kości czy jest wbudowana w mikrokontrolerek. Jakie są najpopularniejsze rodziny układów (dla początkujących), i czym one się charakteryzują? Czy jest możliwe wymazanie starych procedur i zaprogramowanie zupełnie, czego innego? No i… ile taka zabawa kosztuje i czy procesorki są ogólnie dostępne.
Będę wdzięczny za wyrozumiałość. Z góry dziękuje za odpowiedzi i lnki.
P.S. z elektroniką miałem już kontakt nawet dość ścisły, ale były to układy cyfrowe na poziomie bramek, dekoderów itp. Programować umiem nawet nieźle (zwłaszcza Delhi DELPHI)
Przepraszam za prostotę pytań, ale jestem w temacie kompletnie zielony, a dostęp do internetowej wiedzy mam dość utrudniony.
Przeczytałem artykuł: „Mikroprocesorowa ośla łączka - wstęp”, przez co bardzo zaciekawiłem się tematem programowania mikrokontrolerów. Niestety na stronie www.edf.edu.pl zamieszczony jest tylko wstęp i mój kurs zatrzymał się w martwym punkcie.
Proszę, więc o rozjaśnienie mi całości (czy warto się za to zabierać). Co robi się po kolei, gdy chcę przykładowo zbudować mechanizm, zapalający losowo 1 diodę z matrycy LED-ów po naciśnięciu przycisku: 1) pisanie programu na PC; 2)tworzenie płytki drukowanej przy pomocy której jest łączony komputer z procesorkiem; 3) tworzenie końcowej płyty między innymi z guziczkiem „start losowania” i matrycą LED oraz przepinanie tam układów pamiętających program. Czy po odłączeniu mechanizmu od komputera będzie on pamiętał algorytmy, jak tak to czy pamięć jest w osobnej kości czy jest wbudowana w mikrokontrolerek. Jakie są najpopularniejsze rodziny układów (dla początkujących), i czym one się charakteryzują? Czy jest możliwe wymazanie starych procedur i zaprogramowanie zupełnie, czego innego? No i… ile taka zabawa kosztuje i czy procesorki są ogólnie dostępne.
Będę wdzięczny za wyrozumiałość. Z góry dziękuje za odpowiedzi i lnki.
P.S. z elektroniką miałem już kontakt nawet dość ścisły, ale były to układy cyfrowe na poziomie bramek, dekoderów itp. Programować umiem nawet nieźle (zwłaszcza Delhi DELPHI)
Technoogia jest taka. Nasz zbudowany jakiś układ zawierający w mikrokontroler. Aby całość ożyło, to w te urządzenie wpisać program. Rozwiązań jest wiele. Nie będę roztrząsał zagadnień w sensie historycznym (kiedyś było inaczej, teraz jest ... jak jest a będzie też inaczej
). Obecnie używane są mikrokontrolery, które w sobie mają ileś pamięci FLASH. Ona spełnia rolę panięci na program, która nie kasuje się nawet po wyłączeniu napięcia zasilającego. Zaprogramowany mikrokontroler (czasem w żargonie mówi się procek) wykonując kolejne instrukcje programu robi to co ma robić. Jest wiele mikrokontrolerów (rodzin). Obecnie w popularnych zastosowaniach używane są: mikrokontrolery z rodziny C51 (ich twórcą jest firma Intel) i te procki są z różnymi modyfikacjami produkowane przez bardzo wiele firm. Inną rodziną jest PIC, której twórcą jest firma MICROCHIP. Ostatnio największą popularność zaczynają zdobywać mikrokontrolery AVR wymyślone i produkowane przez firmę ATMEL. Oczywiście to wszystko nie wyczerpuje listy produkowanych na świecie mikorkontrolerów. Nie ma sensu tu wszystkich opisywać.
To wyprodukowania programu dla takiego mikrokontrolera potrzebne jest odpowiednie oprogramowanie (oczywiście na PC). Do tworzenia programów w najprostszym ujęciu używa się kompilatorów. Jest to taki program, który tłumaczy to co napisałeś (jako program żródłowy) na postać binarną dla procka. Mikrokontrolery nie wykonują programu, który ty napisałeś bo one wymagają kodów binarnych. Po wykonaniu kompilacji (czyli przetłumaczeniu z języka ludzi na język procków), ten program należy umieścić w odpowiedniej pamięci. Do tego służą odpowiednie programatory. Różne procki wymagają różnych programatorów. Kiedyś trzeba było wumieścić procek w programatorze, zaprogramować go i przenieść do układu docelowego. Obecnie "świat zdobywają" procki, które są programowane w układzie (nie wymagają przenoszenia do programatora). Przy okazji takie programatory stają się prostymi układami często przyłączanymi do portu drukarkowego kompa. Oferta programatorów jest szeroka.
Z punktu widzenia rodzajów pamięcie na program to procki można podzielić na takie z pamięcią FLASH, pamięcią EPROM (te będą miały często w obudowie okienko, ponieważ do kasowania używane jest światło UV). Mogą wystąpić w wersji OTP (EPROM z możliwością jednokrotnego programowania, czyli bez okienka). Tego rodzaju rozwiązania są często (ze względu na koszty) stosowane w masowej produkcji. Jeżeli masz procek wymontowany z jakiegoś urządzenia i jeżeli jest on właśnie OTP, to kicha.
Procki z pamięcią FLASH mogą być wielokrotnie przeprogramowywane, czyli można stary program z niego wykasować i wpisać nowy. Istnieje limit takich przeprogramowań, ale jest to liczone w tysiącach.
Teraż kilka słów jeszcze o kitach i układach uruchomieniowych. Są to specjalnie zaprojektowane rozwiązania o dużej elastyczności w konfiguracji przewidziane do nauki lub przetrenowania wybranych fragmentów w programie. Raczej z kitów nikt nie buduje docelowych urządzeń, choć jest to możliwe. Finalnie jak tworzysz sobie jakieś urządzenie, to projektujesz sobie płytkę, wykonujesz ją i określonym już środowisku sprzętowym doszlifowujesz swój program (jeżeli go uruchamiałeś fragmentami w jakimś systemie uruchomieniowym).
To wyprodukowania programu dla takiego mikrokontrolera potrzebne jest odpowiednie oprogramowanie (oczywiście na PC). Do tworzenia programów w najprostszym ujęciu używa się kompilatorów. Jest to taki program, który tłumaczy to co napisałeś (jako program żródłowy) na postać binarną dla procka. Mikrokontrolery nie wykonują programu, który ty napisałeś bo one wymagają kodów binarnych. Po wykonaniu kompilacji (czyli przetłumaczeniu z języka ludzi na język procków), ten program należy umieścić w odpowiedniej pamięci. Do tego służą odpowiednie programatory. Różne procki wymagają różnych programatorów. Kiedyś trzeba było wumieścić procek w programatorze, zaprogramować go i przenieść do układu docelowego. Obecnie "świat zdobywają" procki, które są programowane w układzie (nie wymagają przenoszenia do programatora). Przy okazji takie programatory stają się prostymi układami często przyłączanymi do portu drukarkowego kompa. Oferta programatorów jest szeroka.
Z punktu widzenia rodzajów pamięcie na program to procki można podzielić na takie z pamięcią FLASH, pamięcią EPROM (te będą miały często w obudowie okienko, ponieważ do kasowania używane jest światło UV). Mogą wystąpić w wersji OTP (EPROM z możliwością jednokrotnego programowania, czyli bez okienka). Tego rodzaju rozwiązania są często (ze względu na koszty) stosowane w masowej produkcji. Jeżeli masz procek wymontowany z jakiegoś urządzenia i jeżeli jest on właśnie OTP, to kicha.
Procki z pamięcią FLASH mogą być wielokrotnie przeprogramowywane, czyli można stary program z niego wykasować i wpisać nowy. Istnieje limit takich przeprogramowań, ale jest to liczone w tysiącach.
Teraż kilka słów jeszcze o kitach i układach uruchomieniowych. Są to specjalnie zaprojektowane rozwiązania o dużej elastyczności w konfiguracji przewidziane do nauki lub przetrenowania wybranych fragmentów w programie. Raczej z kitów nikt nie buduje docelowych urządzeń, choć jest to możliwe. Finalnie jak tworzysz sobie jakieś urządzenie, to projektujesz sobie płytkę, wykonujesz ją i określonym już środowisku sprzętowym doszlifowujesz swój program (jeżeli go uruchamiałeś fragmentami w jakimś systemie uruchomieniowym).
Dziękuję za szybką i obszerną odpowiedź.
Szkoda, że nie mam skąd wymontować procka - będę musiał go sobie kupić.
Czyli układ ma kilka dodatkowych nóżek, które podpina się bezpośrednio do któregoś z portów z tył PCta i są używane tylko podczas programowania?
Czy patrząc na model prostego procka, to rodzajem wyprowadzeń przypomina choć trochę zwykły procesor z komputera (tzn. na szynę danych, adresów, VCC/GND, R/W) ?
Może zbyt jestem przywiązany do zwykłego komputera: czy na płycie docelowej (tu: z matrycą LED i „START-em”) mieści się coś takiego jak RAM (bez niego trudno by coś działało)?
Jak ma te szyny, to jak podpinać urządzenia we-wy (wyświetlacze, przyciski), przecież układy są uniwersalne i są projektowane na różne rodzaje klawiatur, wyświetlaczy itd.
Chyba lepiej będzie jak znajdę sobie jakiś „kurs”, ale na razie s tym jest ciężko.
P.S. Jaki Pan poleca model mikrokontrolera na początek?
Szkoda, że nie mam skąd wymontować procka - będę musiał go sobie kupić.
Kod: Zaznacz cały
Obecnie "świat zdobywają" procki, które są programowane w układzie (nie wymagają przenoszenia do programatora).Czy patrząc na model prostego procka, to rodzajem wyprowadzeń przypomina choć trochę zwykły procesor z komputera (tzn. na szynę danych, adresów, VCC/GND, R/W) ?
Może zbyt jestem przywiązany do zwykłego komputera: czy na płycie docelowej (tu: z matrycą LED i „START-em”) mieści się coś takiego jak RAM (bez niego trudno by coś działało)?
Jak ma te szyny, to jak podpinać urządzenia we-wy (wyświetlacze, przyciski), przecież układy są uniwersalne i są projektowane na różne rodzaje klawiatur, wyświetlaczy itd.
Chyba lepiej będzie jak znajdę sobie jakiś „kurs”, ale na razie s tym jest ciężko.
P.S. Jaki Pan poleca model mikrokontrolera na początek?
Ceny mikrokontrolerów wahają się od kilku do kilkudziesięciu zł w zależności od modelu. Więc nie jest to wydatek ogromny.x_foton pisze:Szkoda, że nie mam skąd wymontować procka - będę musiał go sobie kupić.
Jeżeli zdecydować się na wybór procków z rodziny AVR (co jest dobrym wyborem), to w kwestii programowanie mkrokontrolerów (jako "wbicia do niego kodu") polecam lekturę: http://www.edw.com.pl/index.php?module= ... y&ceid=142x_foton pisze: Czyli układ ma kilka dodatkowych nóżek, które podpina się bezpośrednio do któregoś z portów z tył PCta i są używane tylko podczas programowania?
Na temat samego programatora można poczytać w: http://www.edw.com.pl/index.php?module= ... y&ceid=121
I tak i nie, to zależy od modelu procka. Pewne mikrokontrolery stanowią całość i nie mogą być rozbudowywalne inne można rozbudowywać. Jeżeli ograniczymy się do AVR'ów to każdy ma w sobie ileś pamięci FLASH na program, ileś pamięci RAM na zmienne, stos itp, trochę zintegrowanych w jednej strukturze portów i kontrolerów, jak równoległe porty we/wy, układy obsługi transmisji szeregowej itd. O szczegóły należy sięgać do odpowiedniej dokumentacji dostępnej zawsze u producenta. Wybrane modele procków mają możliwość dołożenia do systemu na zewnątrz trochę statycznej pamięci RAM. W takiej sytuacji część portów zamienia się w szyny adresowe, danych i sterowania.x_foton pisze:Czy patrząc na model prostego procka, to rodzajem wyprowadzeń przypomina choć trochę zwykły procesor z komputera (tzn. na szynę danych, adresów, VCC/GND, R/W) ?
Do tego właśnie służą porty we/wy. Można je konfigurować jako wejście lub wyjście dla każdej linii oddzielnie. Jeżeli brakuje "nóżek" to są dwa rozwiązania: albo użyć procek o większych zasobach lub trochę pokombinować.x_foton pisze:Jak ma te szyny, to jak podpinać urządzenia we-wy (wyświetlacze, przyciski), przecież układy są uniwersalne i są projektowane na różne rodzaje klawiatur, wyświetlaczy itd.
Chyba trochę przesadzasz. Wszystko co nowe jest trochę straszne, ale to szybko mija...x_foton pisze:Chyba lepiej będzie jak znajdę sobie jakiś „kurs”, ale na razie s tym jest ciężko.
Na początek można rozważyć bardzo popularny mikrokontroler AT90S2313 lub jego nowszą wersję ATTINY2313.
Zadana lektura przeczytana
Postanowiłem zgłębić onóżkowanie polecanego AT90S2313.
Zauważyłem, że jest parę typów nóżek:
DP0 … DP6
DB0 … DB7
XTAL1, XTAL2
Reset
VCC/GND
XTAL1 i 2 domyślam się, że służą do podłączenia zegara (kwarcu i dwóch kondensatorków podpiętych do masy)
VCC/GNG to wiadomo
, choć nie do końca: czy napięcie (z bateryjki) ma być podłączone też podczas ładowania programu? Jak już się dowiedziałem napięcie zasilania mieści się w przedziale od 2,7 do 6V – więc wydaje mi się, że optymalnie jest zastosować płaską 3R12.
DP0 … DP6 to chyba jest we/wy - nie wiem
DB0 … DB7 to chyba też we/wy??
Reset – wiadomo, co to jest, ale nie wiem, kiedy się tego używa. Przeczytałem już ze z tego korzysta się podczas programowania procka, ale nie wiem czy tylko wtedy? Może ma to zastosowanie takie jak reset w komputerze – przerywa wszystkie procesy (np. gdy go zapętlimy).
Stosowane przy programowaniu MOSI, MISO i SCK ukryte są pod odpowiednimi BDkami (BD5, 6 i 7). Czy to oznacza ze te nóżki mają „podwójną tożsamość” – podczas programowania pełnią funkcję inną niż podczas normalnej pracy? Czy, co za tym idzie, mam (na płycie drukowanej) podpiąć je po prostu bezpośrednio: i do wtyczki z której odchodzą kable do porogramatorka i do tego czegoś do czego jest normalnie podpięty??
I jeszcze jedno: jak podpina się LEDy i przyciski do we/wy?
Dopisano po 5 min:
Czy AT90S2313 można kupić w obudowie DIL?
Postanowiłem zgłębić onóżkowanie polecanego AT90S2313.
Zauważyłem, że jest parę typów nóżek:
XTAL1 i 2 domyślam się, że służą do podłączenia zegara (kwarcu i dwóch kondensatorków podpiętych do masy)
VCC/GNG to wiadomo
DP0 … DP6 to chyba jest we/wy - nie wiem
DB0 … DB7 to chyba też we/wy??
Reset – wiadomo, co to jest, ale nie wiem, kiedy się tego używa. Przeczytałem już ze z tego korzysta się podczas programowania procka, ale nie wiem czy tylko wtedy? Może ma to zastosowanie takie jak reset w komputerze – przerywa wszystkie procesy (np. gdy go zapętlimy).
Stosowane przy programowaniu MOSI, MISO i SCK ukryte są pod odpowiednimi BDkami (BD5, 6 i 7). Czy to oznacza ze te nóżki mają „podwójną tożsamość” – podczas programowania pełnią funkcję inną niż podczas normalnej pracy? Czy, co za tym idzie, mam (na płycie drukowanej) podpiąć je po prostu bezpośrednio: i do wtyczki z której odchodzą kable do porogramatorka i do tego czegoś do czego jest normalnie podpięty??
I jeszcze jedno: jak podpina się LEDy i przyciski do we/wy?
Dopisano po 5 min:
Czy AT90S2313 można kupić w obudowie DIL?
Jak go resetujesz to na MOSI, MISO i SCK się go programuje więc jak do reset masz scalaka resetu to nid dawaj tam przyciskow tylko LEDki tak na wszelki wypadek.
,,DB0 … DB7'' tak jak ,,DP0 … DP6'' to 3-tranzystorowe WY czyli algo +, albo -, albo podciągnięte, / we cmos (nie wiem czy można WE podciągnięte albo wysokiej impedancji) a i jeszcze na pind.7 masz WE wudowanego kompaktora analogowego
.
[ Dodano: 02-09-2005, 17:20 ]
jest natomiast tiny2313 ,,lepsza w tej samej cenie''
.
,,DB0 … DB7'' tak jak ,,DP0 … DP6'' to 3-tranzystorowe WY czyli algo +, albo -, albo podciągnięte, / we cmos (nie wiem czy można WE podciągnięte albo wysokiej impedancji) a i jeszcze na pind.7 masz WE wudowanego kompaktora analogowego
[ Dodano: 02-09-2005, 17:20 ]
at90s2313 już nie produkująx_foton pisze: Dopisano po 5 min:
Czy AT90S2313 można kupić w obudowie DIL?
Jeżeli odpowiada ci lektura w jęz. ang. to http://www.atmel.com/dyn/resources/prod ... OC0839.PDF lub http://www.atmel.com/dyn/resources/prod ... oc2543.pdfx_foton pisze: I jeszcze jedno: jak podpina się LEDy i przyciski do we/wy?
Czy AT90S2313 można kupić w obudowie DIL?
w jęz. polskim ew. http://www.btc.pl/index.php?id=avr
Procek 90S2313 oraz jego następna są dostępne w obudowach DIL.
Przykład użycia, co prawda jest inny procek, ale koncepcja pozostaje ta sama.
Mam nadzieję, że to już ostatni kłopot, którego sam nie mogę rozwiązać:
Ściągnąłem BASCOMA AVR 1.11.7.9 z www.mcselec.com (program w sześciu częściach). Przepisuje, wręcz na żywca, program z książki do tego programu:
I, jak proponuje autor, w celu sprawdzenia błędów kliknąłem Program -> Syntax check. Pojawiło się okienko z dwoma pudełeczkami: w górnym napisana była nazwa pliku, który sprawdzałem, natomiast w dolnym pojawiały się zużycie pamięci Flash. W pewnym momencie (gdy w dolnym jest już 3%centowe użycie) wyskakuje okienko z komunikatem „file not found”. Po całej operacji przycisk: Syntax check staje się nieaktywny.
Prościej by było jakby BASCOM bardziej przybliżył, o co mu chodzi, ale na to przestałem już liczyć.
Co się dzieje?? W książce nie ma nic na ten temat ;(
Ściągnąłem BASCOMA AVR 1.11.7.9 z www.mcselec.com (program w sześciu częściach). Przepisuje, wręcz na żywca, program z książki do tego programu:
Kod: Zaznacz cały
$regfile = "m8def.dat"
$crystal = 8000000
Config Portd = Output
Config Pin.0 = Input
Dim Kierunek As Bit
Przycisk Alias Pinb.0
Set Portb.0
Portd = &B11111110
Reset Kierunek
Do
If Przycisk = 0 Then
Waitms 50
Toggle Kierunek
Do
Loop Until Przycisk = 1
End If
If Kierunek = 1 Then
Rotate Portd , Left
Else
Rotate Portd , Right
End If
Waitms 100
Loop
EndProściej by było jakby BASCOM bardziej przybliżył, o co mu chodzi, ale na to przestałem już liczyć.
Co się dzieje?? W książce nie ma nic na ten temat ;(
- Załączniki
-
- chwilę przez pojawiniem sie erroru
- bez tytułu.JPG (8.36 KiB) Przejrzano 6877 razy
-
- nie znaleziono pliku ;(
- bez tytułu1.JPG (5.01 KiB) Przejrzano 6877 razy