Usystematyzowanie wiedzy dla żółtodzioba

To forum jest dla wszystkich pasjonatów mikrokontrolerów AVR Atmela. Wymiana doświadczeń i pomoc dla początkujących w pisaniu programów zarówno w C, Asemblerze jak i BASCOM. Zapraszam znawców tematu, aby pomogli wszystkim początkującym!
ODPOWIEDZ
x_foton
-
Posty: 7
Rejestracja: 01 wrz 2005, 18:09
Lokalizacja: Kraków
Kontakt:

Usystematyzowanie wiedzy dla żółtodzioba

Post autor: x_foton » 01 wrz 2005, 18:38

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)

Awatar użytkownika
gaweł
Użytkownik
Posty: 651
Rejestracja: 05 kwie 2004, 8:38
Lokalizacja: Białystok
Kontakt:

Post autor: gaweł » 01 wrz 2005, 19:37

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 :mrgreen: ). 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).

x_foton
-
Posty: 7
Rejestracja: 01 wrz 2005, 18:09
Lokalizacja: Kraków
Kontakt:

Post autor: x_foton » 01 wrz 2005, 20:52

Dziękuję za szybką i obszerną odpowiedź.

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).
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?

Awatar użytkownika
gaweł
Użytkownik
Posty: 651
Rejestracja: 05 kwie 2004, 8:38
Lokalizacja: Białystok
Kontakt:

Post autor: gaweł » 01 wrz 2005, 21:51

x_foton pisze:Szkoda, że nie mam skąd wymontować procka - będę musiał go sobie kupić.
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: 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?
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=142
Na temat samego programatora można poczytać w: http://www.edw.com.pl/index.php?module= ... y&ceid=121
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) ?
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: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.
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:Chyba lepiej będzie jak znajdę sobie jakiś „kurs”, ale na razie s tym jest ciężko.
Chyba trochę przesadzasz. Wszystko co nowe jest trochę straszne, ale to szybko mija... :mrgreen: :mrgreen: :mrgreen:
Na początek można rozważyć bardzo popularny mikrokontroler AT90S2313 lub jego nowszą wersję ATTINY2313.

x_foton
-
Posty: 7
Rejestracja: 01 wrz 2005, 18:09
Lokalizacja: Kraków
Kontakt:

Post autor: x_foton » 02 wrz 2005, 15:56

Zadana lektura przeczytana :)

Postanowiłem zgłębić onóżkowanie polecanego AT90S2313.
Zauważyłem, że jest parę typów nóżek:
:arrow: DP0 … DP6
:arrow: DB0 … DB7
:arrow: XTAL1, XTAL2
:arrow: Reset
:arrow: 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 :D, 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?

Awatar użytkownika
Ertew
Użytkownik
Posty: 1414
Rejestracja: 03 lip 2005, 10:36
Lokalizacja: Leszno
Kontakt:

Post autor: Ertew » 02 wrz 2005, 16:15

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 :mrgreen: .

[ Dodano: 02-09-2005, 17:20 ]
x_foton pisze: Dopisano po 5 min:

Czy AT90S2313 można kupić w obudowie DIL?
at90s2313 już nie produkują :cry: jest natomiast tiny2313 ,,lepsza w tej samej cenie'' :o 8) .

x_foton
-
Posty: 7
Rejestracja: 01 wrz 2005, 18:09
Lokalizacja: Kraków
Kontakt:

Post autor: x_foton » 02 wrz 2005, 18:39

Czyli mogę zrobić takie połączeie jakie jest w załączniku?
Załączniki
FORUM1.JPG
FORUM1.JPG (7.68 KiB) Przejrzano 6923 razy

Awatar użytkownika
gaweł
Użytkownik
Posty: 651
Rejestracja: 05 kwie 2004, 8:38
Lokalizacja: Białystok
Kontakt:

Post autor: gaweł » 02 wrz 2005, 21:28

x_foton pisze: I jeszcze jedno: jak podpina się LEDy i przyciski do we/wy?

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.pdf

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.
Załączniki
avr.JPG

x_foton
-
Posty: 7
Rejestracja: 01 wrz 2005, 18:09
Lokalizacja: Kraków
Kontakt:

Post autor: x_foton » 03 wrz 2005, 18:36

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:

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

End
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 ;(
Załączniki
bez tytułu.JPG
chwilę przez pojawiniem sie erroru
bez tytułu.JPG (8.36 KiB) Przejrzano 6883 razy
bez tytułu1.JPG
nie znaleziono pliku ;(
bez tytułu1.JPG (5.01 KiB) Przejrzano 6883 razy

ODPOWIEDZ