TIPS ‘N TRICKS

25 AUGUST 2008

Microchip continuă să ofere produse inovative mai mici, mai rapide, mai uşor de utilizat şi mult mai sigure. Microcontrolerele (MCU) PIC® FLASH pe 8-pini sunt utilizate într-o gamă largă de produse de zi cu zi, de la periuţe de dinţi, uscătoare de păr şi maşini de gătit, până la produse industriale, auto şi medicale.
MCU PIC12F629/675 reunesc toate avantajele arhitecturii PIC MCU şi flexibilitatea memoriei program FLASH într-o capsulă cu 8-pini. Ele oferă caracteristici şi inteligenţă ce nu au fost disponibile până acum datorită costurilor sau limitărilor legate de spaţiu. Caracteristicile includ un set de instrucţiuni pe 14-biţi, capsulă cu amprentă mică, plajă largă a tensiunii de operare de la 2 la 5,5 V, un oscilator intern programabil de 4 MHz, memorie de date EEPROM on-board, referinţă de tensiune on-chip şi până la 4 canale de conversie A/D pe 10-biţi. Flexibilitatea FLASH şi o suită excelentă de unelte de dezvoltare, inclusiv un depanator economic In-Circuit Debugger, In-Circuit Serial Programming™ şi MPLAB® ICE 2000, fac aceste dispozitive ideale pentru aproape orice aplicaţie de control embedded. Această serie Tips ‘n Tricks poate fi aplicată la o mare varietate de aplicaţii pentru a vă ajuta să beneficiaţi de dinamica pe 8-pini.

TIP 1. – Oscilator RC cu dublă viteză
1. După reiniţializare pinul I/O este High-Z;
2. Ieşirea ‘1’ pe pinul I/O;
3. R1, R2 şi C determină frecvenţa OSC;
4. Funcţionează de asemenea cu condensatoare adiţionale.
Frecvenţa PIC® MCU în modul de oscilator RC extern depinde de rezistenţa şi capacitatea de pe pinul OSC1. Rezistenţa este schimbată de tensiunea de ieşire pe GP0. Ieşirea GP0 ‘1’ pune R2 în paralel cu R1, reduce rezistenţa OSC1 şi creşte frecvenţa OSC1. GP0 ca intrare creşte rezistenţa OSC1 prin minimizarea curentului prin R2, şi descreşte frecvenţa şi consumul de putere.
Sumar:
GP0 = Intrare: Viteză redusă pentru curent redus
GP0 = Ieşire de nivel superior: Viteză mare pentru procese rapide.

TIP 2. – Citire a trei stări de pe un singur pin
Pentru verificarea stării Z:
– Se comandă pinul de ieşire în nivel superior;
– Se defineşte ca intrare;
– Citire 1;
– Se comandă pinul de ieşire în nivel inferior;
– Se defineşte ca intrare;
– Citire 0.
Pentru verificarea stării 0: n Citire 0 pe pin
Pentru verificarea stării 1: n Citire 1 pe pin

Stare Legătură0 Legătură1
0 Închis Deschis
1 Deschis Închis
NC Deschis Deschis

Jumper-ul are trei stări posibile: neconectat, legătura 1 şi legătura 0. Condensatorul se va încărca şi descărca în funcţie de tensiunea de ieşire pe I/O, permiţând starea “neconectat”. Programul va trebui să verifice întâi starea de “neconectare” prin comandarea I/O în nivel superior, citirea 1 şi comanda I/O în nivel inferior şi citirea 0. Stările “Legătura1” şi “Legătura 0” sunt citite direct.

TIP 3. – Citire switch-uri DIP
Intrarea unui temporizator poate fi utilizată pentru a testa care switch(-uri) este închis. Intrarea Timer 1 este ţinută în nivel superior cu ajutorul unei rezistenţe ridicătoare. Secvenţial, fiecare switch I/O este programat ca intrare şi Timer 1 este verificat pentru un increment ce indică faptul că switch-ul este închis. Fiecare bit în registrul DP reprezintă corespondentul său în poziţia switch-ului. Prin stabilirea Timer 1 ca FFFFh şi activând întreruperea sa, un increment va cauza o întoarcere şi va genera o întrerupere. Acest lucru va simplifica programul prin eliminarea bitului de test pe registrul TMR1L. Secvenţial se va stabili fiecare GPIO ca intrare şi se va testa pentru increment TMR1 (sau 0 dacă este utilizat un pin standard I/O).

TIP 4. – Analizarea mai multor taste şi revenirea din modul Sleep
Poate fi adăugată o I/O pentru revenirea componentei când un buton este apăsat. Anterior modului sleep, pinul GP1 se configurează ca intrare cu activarea întreruperii la schimbare, iar GP2 ca ieşire de nivel superior. Rezistorul coborâtor menţine GP1 în nivel inferior până la apăsarea unui buton, iar GP1 este apoi trecut în nivel superior prin GP2 şi VDD generează o întrerupere. După revenire (wake-up), GP2 este configurat ca ieşire de nivel inferior pentru a descărca condensatorul prin rezistenţa de 220 Ohm. GP1 este stabilit în nivel superior şi GP2 este stabilit ca intrare pentru a măsura timpul de încărcare al condensatorului.
– Pinul GP1 este conectat la terminalul comun al tastei;
– Se activează revenirea (wake-up) la schimbarea pe port;
– Se stabileşte GP1 ca intrare şi GP2 în nivel superior înainte de intrare în modul sleep;
– Dacă tasta este apăsată PIC® MCU îşi revine, GP2 trebuie stabilit în nivel inferior pentru a descărca condensatorul;
– Se stabileşte GP1 în nivel superior la întâlnirea revenirii pentru a analiza apăsarea unei taste.

TIP 5. – Generare de tensiuni înalte
Tensiunile mai mari decât VDD pot fi generate prin utilizarea unui I/O comutator. Pinul CLKOUT/OSC2 al PIC® MCU comută la un sfert frecvenţa OSC1 atunci când se află în modul oscilator RC extern. Atunci când OSC2 este în stare inferioară, dioda VDD este polarizată direct şi conduce curentul, încărcând Cpump. După ce OSC2 este în nivel superior, cealaltă diodă este polarizată direct, deplasând sarcina către Cfilter. Rezultatul este o încărcare egală cu de două ori VDD minus două căderi de tensiune pe diodă. Aceasta poate fi utilizată cu un PWM, o intrare/ieşire comutabilă sau alt pin de comutare.

TIP 6. – Circuit cu autopornire VDD
Realizat pe baza metodei anterioare, aceeaşi pompă de încărcare poate fi utilizată de către MCU pentru a alimenta propriul VDD. Înainte de apăsarea switch-ului, VBAT are puterea şi punctele VDD sunt conectate împreună, dar nealimentate.
La apăsarea unui buton, puterea este furnizată către VDD şi MCU CLKOUT (în modul de oscilator RC extern) începe să comute. Tensiunea generată de pompa de încărcare porneşte FET-ul, permiţând VDD să rămână alimentat. Pentru a opri alimentarea MCU, trebuie executată o instrucţiune SLEEP. Aceasta permite MCU să-şi oprească alimentarea prin software.

Avantaje:
– Pierderea de curent a PIC® MCU este aproape 0;
– Cost redus (utilizează un FET cu canal n);
– Siguranţă;
– Nu sunt necesari pini de I/O suplimentare.

TIP 7. – Convertor Delta Sigma
Încărcarea de pe condensatorul de pe GP1 este menţinută aproape egal cu CVref prin monitorizarea COUT a MCU şi comutarea GP2 de pe modul de intrare pe ieşire de nivel inferior. Pentru eşantionarea bitului COUT pe o bază periodică este utilizat un temporizator. De fiecare dată când GP2 este comandat în nivel inferior, este incrementat un numărător. Această valoare din numărător corespunde tensiunii de intrare. Pentru minimizarea efectelor toleranţelor componentelor externe, temperaturii etc., circuitul poate fi calibrat. Se aplică o tensiune cunoscută pe intrare şi se permite microcontrolerului să numere eşantioane până când este obţinut rezultatul aşteptat. Prin utilizarea aceluiaşi număr de eşantioane pentru măsurători subsecvente, acestea devin măsurători calibrate.
1.Tensiune medie GP1 = CVref
2. Baza de timp ca viteză de eşantionare
3. La sfârşitul la fiecărei perioade a bazei de timp:
– dacă GP1 > CVref, apoi ieşirea GP2 este în nivel inferior
– dacă GP1 < CVref, apoi ieşirea GP2 este în nivel superior 4. Se acumulează câte nivele inferioare sunt pe GP2 5. Numărul de eşantioane determină rezoluţia www.microchip.com

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile necesare sunt marcate *

  • Folosim datele dumneavoastră cu caracter personal NUMAI pentru a răspunde comentariilor/solicitărilor dumneavoastră.
  • Pentru a primi raspunsuri adecvate solicitărilor dumneavoastră, este posibil să transferăm adresa de email și numele dumneavoastră către autorul articolului.
  • Pentru mai multe informații privind politica noastră de confidențialitate și de prelucrare a datelor cu caracter personal, accesați link-ul Politica de prelucrare a datelor (GDPR) si Cookie-uri.
  • Dacă aveți întrebări sau nelămuriri cu privire la modul în care noi prelucrăm datele dumneavoastră cu caracter personal, puteți contacta responsabilul nostru cu protecția datelor la adresa de email: gdpr@esp2000.ro
  • Abonați-vă la newsletter-ul revistei noastre