Microcontrolerul DS5000
Microcontrolerul DS5000 – primul pas spre ceea ce v-aţi propus la început şi pentru care aţi parcurs lecţiile anterioare. Primele lecţii au abordat conceptele generale comune majorităţii mC. În continuare, vom vorbi despre mC DS5000 de la Dallas Semiconductor. În opinia mea acest chip este unul dintre cele mai “elegante” dacă îmi permiteţi o astfel de exprimare, construite până acum. Dallas Semiconductor ştie clar ce trebuie “pus” într-un chip. Pentru realizarea unei aplicaţii complete mai sunt necesare câteva componente externe, dar acestea în general sunt ieftine şi nu necesită eforturi mari. Despre schema de conexiuni şi lista componentelor vom vorbi în lecţiile următoare.
Ideal pentru dumneavoastră ar fi să puteţi obţine manualul de utilizare editat de Dallas Semiconductor. Sunt câteva sute de pagini, după mine cele mai bune din câte există în literatura din domeniu, pline de informaţii utile.
La fel de ideal ar fi să puteţi procura un mC Dallas Semiconductor din seria 5000 pentru a putea realiza aplicaţii practice. Cât costă? În America aprox. 5 USD. Ieftin, spun americanii, în raport cu ce puteţi realiza cu o astfel de investiţie.
În sfârşit! Nu vă grăbiţi să-l cumpăraţi deoarece mai sunt încă multe lucruri de învăţat până o să puteţi aborda o aplicaţie practică.
Microcontrolerul DS5000 este construit pe baza unui microprocesor Intel 8051. Arată ca un Intel 8051 din punct de vedere al programării şi al pinilor, dar DS5000 este mult mai complex.
Sunt 40 de pini pe modul, dintre care 32 sunt alocaţi conectării la echipamentele externe, cu care acesta poate face schimb de informaţii. Aceşti 32 de pini sunt grupaţi în patru porturi de 8 biţi denumite p0, p1, p2, p3. Pe lângă faptul că fiecare port poate constitui intrare sau ieşire spre exterior, acestea au atribuite şi funcţii speciale. p0 şi p2 pot fi folosite pentru a asigura interfaţa cu memoria externă, dar DS5000 având integrată memorie suficientă nu vom folosi această funcţie a acestor porturi. Aceşti 16 pini vor fi folosiţi pentru intrare /ieşire.
Dar dacă ne referim la un 8051, memoria externă va fi conectată prin porturile p0 şi p2.
Jumătate din pinii portului p3 vor fi folosiţi pentru funcţiile lor speciale, iar ceilalţi 4 vor fi intrări/ieşiri obişnuite.
Doi pini din portul p3 sunt folosiţi pentru comunicaţia serială cu DS5000. Prin intermediul acestor pini, datele vor fi transmise serial între un PC şi DS5000. În acest mod se va încărca dintr-un calculator programul scris pentru DS5000.
Alţi doi pini sunt alocaţi întreruperilor.
În programul din lecţia 1, în care descriam paşii necesari traversării unei intersecţii, dacă o persoană din apropiere întrebă cât este ceasul acesta ar fi un exemplu de întrerupere. Această întrerupere nu modifică structura programului, ci doar îl opreşte o perioadă de timp din funcţionare, timp în care se poate răspunde la întrebare. După aceea se continuă execuţia următoarului pas din program.
Întreruperile au asociat un program care poate indica mC modul de tratare al acestora. În cazul nostru, “programul asociat” va privi ceasul şi va răspunde la întrebare.
Aceasta se numeşte o rutină de întrerupere. De fiecare dată când apare o întrerupere, programul principal este oprit temporar, este executată rutina de întrerupere şi apoi se revine la programul principal.
În următoarele lecţii vom aloca timp suficient pentru a descrie întreruperile şi mai ales modul de utilizare al acestora.
DS5000 conţine 128B de memorie RAM internă.
Primii 32B sunt alocaţi pentru 4 grupuri de regiştri denumiţi b0, b1, b2, b3. Dacă se alimentează mC pentru prima oară, grupul de regiştri b0 este activ, pentru activarea celorlate grupuri de regiştri există o anumită comandă care permite comutarea acestora. Fiecare grup este format din 8 regiştri diferiţi denumiţi r0, … r7, folosiţi pentru stocarea temporară a instrucţiunilor sau a datelor din program. Există ca în orice mP un registru acumulator. Acesta este folosit pentru stocarea temporară a rezultatelor diferitelor instrucţiuni cum ar fi adunare, scădere etc.
Următorii 16B din memoria RAM sunt folosiţi pentru stocarea şi restabilirea biţilor. Noile generaţii de mC realizate nu au această facilitate, de altfel foarte necesară.
Ultimii 80B din RAM sunt pentru stocarea informaţiilor în general şi sunt folosiţi pentru diferite lucruri.
Mai există încă 128B de memorie în care se regăsesc regiştri cu funcţii speciale.
În acest domeniu se regăsesc acumulatorul şi numărătorul de programe împreună cu alţi regiştri care controlează diferite aspecte ale funcţionări mC DS5000.
În DS5000 mai există încă un domeniu de memorie, divizat în două părţi, memoria de programe şi memoria de date. În realitate există un bloc de 32K de memorie RAM care prin programarea unora din regiştri cu funcţii speciale poate fi împărţit în cele două secţiuni. În majoritatea aplicaţiilor următoare acesta va fi modul de lucru, vom împărţi acest bloc în 16KB memorie de programe şi 16KB memorie de date.
Memoria de programe este protejată la scriere, deci un program “rătăcitor” nu se poate modifica singur în mod accidental. Memoria de date poate fi scrisă sau citită prin intermediul programului.
DS5000 conţine o baterie de Li care permite menţinerea programelor şi a datelor în memorie chiar dacă acesta nu mai este alimentat. Aceasta este una din cele mai importante facilităţi oferite de DS5000 şi nu cred că mai există un alt mC care oferă această facilitate. În majoritatea mC există memorie PROM sau EPROM pentru memoria de programe.
Memoria PROM poate fi scrisă o dată şi programul implemenat este definitiv. Memoria EPROM poate fi scrisă şi apoi ştearsă cu ajutorul unui fascicol de radiaţii UV prin intermediul ferestrei prevăzute în mC. Dar acest lucru necesită un programator special şi o sursă de radiaţii UV (aprox. 125$).
În DS5000 există doi pini care pot fi poziţionaţi special pentru a încărca un program dintr-un calculator în chip prin interfaţa serială. Un program special cu care este prevăzut DS5000 permite acest lucru; acesta este dezactivat când cei doi pini sunt readuşi în poziţia normală.
Pentru a încărca un program în mC se accesează acest program special, se încarcă programul şi apoi se comută pinii în poziţia normală.
Elegant nu?
Acest lucru durează doar câteva secunde comparativ cu o jumătate de oră cât durează ştergerea unui program dintr-un mC bazat pe memorii EPROM. În plus, nu este necesar decât un port serial.
Această facilitate accelerează dezvoltarea programului şi permite modificarea acestuia, încărcarea în chip şi execuţia lui în aproximativ 1 minut.
Timpul necesar dezvoltării şi depanării programului este mult mai mare decât timpul necesar împlementării acestuia în mC.
Pentru a putea testa programele elaborate fără a fi nevoie să le încărcaţi în DS5000, ar fi necesar un simulator 8051. Puteţi vizualiza astfel toate modificările regiştrilor pe măsură ce programul parcurge fiecare instrucţiune.
Aceasta este o metodă care accelerează procesul de depanare a programului fiind şi o metodă didactică care permite vizualizarea modului în care fiecare instrucţiune influenţează diferitele componente ale mC DS5000.
Vom utiliza această metodă în lecţiile viitoare pentru a ilustra diferitele instrucţiuni sau programe pe care le vom scrie.
În următoarea lecţie vom începe cu limbajul de asamblare, metoda pe care o vom folosi pentru a scrie programele.
• Ioana Enache