Elektronika

Mikroprocesor AT89c2051

Przedstawiam serdecznie procesor firmy Atmel.Jest on klonem popularnego procesora Intel 8051
AT89c2051 jest procesorem 8 bitowym. Zawiera 2KB pamięci Flash
(Istnieje również AT89c4051 posiadająca 4KB Flash)
Dokumentację można ściągnąć ze strony producenta.
AT89S2051Nowsza, odswierzona wersja mikrokontrolera, z interfejsem SPI,

Procesorek jak na dzień dzisiejszy nie jest niczym szczególnym.
Nie jest za szybki; Cykl maszynowy to Clk/12
Daje to, przy kwarcu 11.0592MHZ, jedynie 921600 cykli w ciągu sekundy.
Nie posiada wewnętrznego generatora jak PIC
Nie ma również ułatwiających programowanie interfejsów jak ISP dla AVR
Cóż więc w nim godnego uwagi?
Z pewnością ma walory edukacyjne, Asembler nie jest zbyt skomplikowany.
Posiada on szereg funkcji jak:
Obsługa portu RS232
Wbudowany komparator.
Ma też dwa timery,
obsługuje łącznie 5 źródeł przerwań.
Darzę go sympatią ponieważ z nim zacząłem zabawę z mikroprocesorami i nadal zajmuje on szczególne miejsce w mojej pracowni elektronicznej.

Bliższe spojrzenie


Mikroprocesor ten posiada 20 pinów
  1. RST - generalnie reset aktywny w stanine wysokim, również używany przy programowaniu
  2. P3.0 RXD (Wejście portu szeregowego)
  3. P3.1 TXD (Wyjście portu szeregowego)
  4. XTAL2 Wyjście z odwracającego wzmacniacza oscylatora.
  5. XTAL1 Wejście z odwracającego wzmacniacza oscylatora i wejście dla wewnętrznego zegara.
  6. P3.2 INT0 (Zewnętrzne przerwanie 0)
  7. P3.3 INT1 (Zewnętrzne przerwanie 1)
  8. P3.4 T0 (Zewnętrzne przerwanie timera 0)
  9. P3.5 T1 (Zewnętrzne przerwanie timera 1)
  10. GND - Masa
  11. P3.7 (ostatni pin z portu 3)
  12. P1.0 (AIN0) Jedna z nóżek komparatora*
  13. P1.1 (AIN1) Druga z nóżek komparatora*
  14. P1.2
  15. P1.3
  16. P1.4
  17. P1.5
  18. P1.6
  19. P1.7 - Praktycznie cały port P1 do dowolnych zastosowań
  20. Vcc - nic innego jak napięcie zasilania.
Warto nadmienić, iż port P3.6 jest podłaczony bezpośrednio do wyjścia z komparatora (P1.0 P1.1)
* - Wyjścia P1.0 i P1.1 są typu open kolektor (ze względu na komparator) i żeby z nich normalnie korzystać zamiast urzywania komparatora trzeba je pociągnąć resystorem 1K do + (vcc)

Podstawowy schemat:
Najprostszy ze schematów

Programatory:

Używanym przezemnie programatorem jest obecnie Easyprog. Budowałem kilka rodzai programatorów dla tego procesorai mówiąc wprost - ten dla odmiany działa. Easyprog Ma jednak też wady. Po pierwsze sam zawiera procesor AT89c2051 zatem trzeba go gdzieś najpierw zaprogramować tudzież dostać zaprogramowanego. Program wraz z kodem źródłowym w C jest dostępny na stronie projektu.(Z czasem go zmirroruję, bo również opisywany tam easydownloader 4.1 jest niedostępny a ja go mam :P)
Schemat
To jest moja przeróbka schematu.
Nie zabardzo lubie układów open kolektor do innych napięć, gdyż często przy uruchomieniu pojawiają się tajemnicze problemy. Wolę więc w takich przypadkach zastosować transoptor by się upewnić, że napięcie nie ucieknie mi nigdzie w nieokreślonym kierunku.
to w zasadzie jedyna zmiana jaką poczyniłem, sprawiła ona że napięcie programujące jest takie jak powinno być.W sieci jest dostępne wiele projektów programatorów do tego procka, również ekstra proste na LPT.Niestety w żaden sposób nie udało mi się go zaprogramować takim cackiem.
Mam jednakże czeski dość złożony projekt programatora pod DOS który po kilku modyfikacjach jakoś zadziałał - dzięki temu udało mi się zapisać writer.hex do easyproga. Nie zawiera on procesorów jedynie kości logiczne. Sądzę że możnabyło by w nim przerobić układ napięcia programowania na podobieństwo easyproga, dzięki temu może by nie palił procesorów po 5 programowaniach... jakby się ktoś zainteresował poszperam za nim.

Środowisko uruchomieniowe:

Jest to generalnie prosty edytor tekstu z funkcją podświetlenia składni wraz z kompilatorem i czasem symulatorem.Nie próbowałem wszyskich które są dostępne w sieci choć znalazłem kilka w opsesji znalezienia symulatora z wyjściem terminala podłączonym do fizycznego portu RS232. (znalazłem tylko dwa takie i oba płatne).
Sam przyzwyczaiłem się ostatnio do wide51
Wygląda on tak:

Jest darmowy i ma przyzwoity symulatorek, choć ma kilka denerwujących czasem bugów (zachowanie programu) da się \ nim wytrzymać.

Projekty:

Jak mi się uda opiszę kilka możliwych zastosowań.

Zdalne sterowanie przez RS232
Projekt jest rzekłbym dość trywialny, lecz ciekawy i nie obył się bez "schodów"
Założeniem było sterowanie 8 przekaźnikami poprzez port rs232.
Najprostrzym rozwiązaniem jest zatem urzyć port P1 jako wyjścia sterujące przekaźnikami. Jako, że wyjścia te są dość mało wydajne prądowo a zwłaszcza jeśli chodzi o napięcie dodatnie, to trzeba podłączyć jakiś wzmacniacz.
Wybrałem ULN2803A .
Pozatym układ zawiera bajerancką ledę RGB, która sobie sama kolor zmienia,
Jedną led kontrolną (P3.7)
do komunikacji z komputerem standardowo MAX232

Interfejs urzytkownika.
Właściwie procesor całkowicie odpowiada za komunikację z urzytkownikiem. Drugą stroną jest jedynie terminal zgodny z VT100.
Może być znany z windowsa Hyperterminal lub lepszy putty.Nadaje się też DOSowy term95 (w pakiecie norton commander), terraterm a nawet linuxowy minicom.
Na dzień dzisiejszy program czeka na klawisz, po czym interpretuje go i wyświetla obecny stan na ekranie.wygląda to tak:

[to akurat snapshot z linuxowego putty, wywołanego zdalnie poprzez SSH przy urzyciu x - serwera Xming]
Widać tu aktualny stan wyjść od 1 do 8 oraz obecny stan led-y RGB podany w formacie hexadecymalnym.