Ce prezinta cartea?
Cartea este destinata si recomandata incepatorilor in electronica embedded. Are la baza programarea microcontrolerelor PIC in limbajul JAL (Just Another Language).
Ce este JAL?
JAL (Just Another Language) este un limbaj de nivel inalt destinat tuturor microcontrolerelor flash din seria PIC12/16F: PIC16F8X, PIC16F62X, PIC16F87X, PIC16F7X, PIC16F676/630, 12C(F)50X, PIC12FXXX, partial PIC18FXXX cat si microcontrolerelor Scenix SX18 si SX28. JAL este o alternativa la C sau PICbasic fiind insa un limbaj structurat care se potriveste arhitecturii PIC-urilor. Seamana forte mult cu limbajul Pascal, dar poate fi numit „Basic structurat” sau „ADA pentru microcontrolere”. Majoritatea aspectelor limbajului sunt familiare oricui care are putina experienta in utilizarea a cel putin unui limbaj de nivel inalt. Cateva facilitati mai exotice sunt pseudo variabilele, inexistenta diferentelor semantice dintre declaratii si instructiuni, denumirea implicita a parametrilor.
Novicele care se intersecteaza pentru prima data cu notiunea de microcontroler este tentat in exuberanta sa, sa finalizeze cu nerabdare o aplicatie pe care o considera interesanta si simpla la prima vedere, insa constata pe parcursul realizarii ei ca obstacolele neprevazute intalnite sunt dificile. Depasirea acestora cu brio implica eforturi deosebite in insusirea cunostintelor de electronica generala, (pentru specialistul in software) respectiv a celor de algoritmi numerici, conversii in si din diverse baze de numeratie, operatii matematice, etc. (pentru specialistul in hardware).
Ideal este ca cel ce se aventureaza pe taramul „combinatei” hardware-software cu microcontrolere sa posede cunostinte detaliate in ambele domenii. Nu disperati daca vi se pare ca apartineti cu precadere domeniului software. Nu plangeti nici daca va simtiti mai mult hard-ist. Singurul lucru care nu trebuie sa va lipseasca este curajul, restul vine de la sine pe parcursul parcurgerii acestei carti.
Structura cartii
CAP I – Pornim aventura
- Ce trebuie sa stim?
- Ce este un microcontroler flash si ce mai avem nevoie?
- Aspectul microcontrolerului
- Constructia programatorului
- Programatorul paralel in regim prototip
- Programatorul serial in regim prototip
- Programatorul de mare serie
- Utilizarea editorului si a compilatorului
- Editorul si mediul IDE (Integrated Development Environement)
- Cum functioneaza compilatorul Jal?
- Linia de comanda JAL
- Bootloader pentru microcontrolerul PIC16F87x
- Microcontrolere Microchip flash din seria midrange
- Portretul robot al microcontrolerului flash Microchip midrange
- Arhitectura interna
- Organizarea memoriei
- Registrii cu functii speciale
- Oscilatorul, motorul microcontrolerului
- Gata de start? Nu fara setul de instructiuni!
CAP II – Ce este limbajul JAL?
- Limbajul
- Notiuni de baza
- Tipuri specifice
- Bit
- Byte sau octet
- Universal
- Formate numerice
- Bit
- Universal
- ASCII
- Constante
- Variabile
- Expresii matematice
- Elemente
- Operatori matematici
- Prioritati
- Ordinea evaluarii
- Instructiuni
- Declaratii
- Asignari
- If
- While
- For
- Forever
- Definirea procedurilor
- Return
- Assembler
- Subprograme
- Proceduri
- Functii
- Pseudo-variable
- Pragma
- Nume
- Specificarea tipului microcontrolerului (pragma target)
- Salt la o adresa de tabel (pragma jump_table)
- Eroare
- Test
- Eedata
- Keep page, bank
- Interrupt
- Generarea codului
- Alocarea registrilor
- Expresii la nivel de octet si asignari
- Expresii la nivel de bit si asignari
- Pragma jump_table
- Pragma interrupt
- Biblioteci
- Fila de specificare a microcontrolerului utilizat
- Jlib
- Jpic, jpic628, jpic675
- Registrii cu functii speciale
- Registrii de directie ai porturilor IO
- Porturi de IO
- Acces indirect la registrii interni
- Accesul la memoria eeprom
- Instructiuni speciale
- Jascii
- Jdelay
- Jseven
- Jstepper
- Jprint
- Interval
- Hd447804, Hd447808
- I2C
- Lm75
- Serial
- Random3
- Cio
- JAL in doar ctteva cuvinte
- Exemple
- e0001: LED care pulseaza
- e0002: calaret in noapte cu LED-uri
- e0003: robot care urmareste o linie
- e0004: afisarea temperaturii pe un display LCD
- e0005: exemplu de utilizare a scrierii si citirii din tabel si eeprom
- Index rapid JAL
CAP III – Interfatarea dispozitivelor periferice comune
- Primul program – un singur LED
- Acelasi LED si ceva mai mult
- Butoane si matrici de butoane
- Interfatarea a 4 butoane pe 2 pini de intrare-iesire
- Taste functionale – o privire de ansamblu
- Matrici de butoane sau „keypad”
- Metoda de interfatare derivativa
- Interfatarea afisajelor cu 7 segmente
- Afisaj cu 7 segmente cu polarizare independenta
- Multiplexarea, ceas de precizie cu afisaje cu 7 segmente
- Dispozitive de afisare independente CMOS
- Interfatarea dispozitivelor inductive
- Motoare pas cu pas unipolare
- Relee si solenoizi
- Motoare pas cu pas bipolare
- Interfatarea motoarelor de curent continuu
- Interfatarea motoarelor cu reluctanta variabila
- Difuzoare electromagnetice si piezoelectrice
CAP IV – Interfatarea circuitelor integrate „inteligente”
- Afisaj inteligent alfanumeric cu cristale lichide compatibil cu HD44780
- Registrii HD44780
- Setul de instructiuni HD44780
- Initializarea HD44780
- Interfatarea unui LCD inteligent in modul 6 fire (4 date + 2 comenzi)
- Interfatarea unui LCD inteligent in modul 10 fire (8d ate + 2 comenzi)
- Fantezii de interfatare pentru micsorarea numarului de pini utilizati
- Principiul serializarii
- Interfatarea LCD prin serializare
- Interfatarea butoanelor si a LED-urilor prin serializare
- Conversia AD
- Utilizarea modulului AD intern al PIC16F87x, biblioteca analogica
- Convertorul AD de +-18 biti MAX132
- Convertorul AD de 14 biti MAX121
- Convertorul AD dual de 12 biti, MCP3202
- Masurarea temperaturii
- Dispozitive semiconductoare cu jonctiune (diode si tranzistoare)
- Circuite integrate destinate masurarii temperaturii, cu iesire analogica
- Senzori pasivi pentru masurarea temperaturii
- Senzori activi de masura a temperaturii
- Interfatarea circuitului integrat LM135 sau AD22100A
- DS 1820, DS1620, termometru digital inteligent pe bus de 1 fir sau 3 fire
- Un ceas cu termometru la indemana oricui!
CAP V – Intreruperi si alte smecherii hardware
- In sfarsit despre intreruperi
- Particularitati ale intreruperilor in programele JAL
- Comanda triacelor din microcontroler, la trecerea prin zero a retelei
- Dimensionarea corecta a sursei de alimentare liniare
- Flotarea microcontrolerului la tensiuni inalte
- Alegerea adecvata a tipului de oscilator
- Elemente hardware importante pentru functionarea corecta a PIC-ului
CAP VI – Comunicatii seriale
- Interfata RS232
- Conversia PIC-RS232 utilizand rutine de tipul busy-polling
- Conversia PIC-RS232 utilizand modulul USART
- Comunicatia I2C
- Adresarea memoriei eeprom seriale cu interfata I2C
- Interfatarea eeprom-ului I2C la PIC prin algoritm software
- Interfatarea eeprom-ului I2C la PIC prin algoritm hardware
- Interfata industriala si standardul EIA 485
- Conexiune multi-PIC prin interfata EIA 485
CAP VII – Algoritmi si formate numerice
- Formate numerice
- Complement fata de 2
- BCD si BCD impachetat
- Codul ASCII
- Formatul zecimal cu virgula mobila (floating point)
- Formatul zecimal cu virgula fixa ( fixed point)
- Conversii ale diferitelor formate
- Conversia unei marimi prin metoda compararii cu momente de referinta fixe (metoda tabelului de conversie)
- Conversia unui numar zecimal fractionar in formatul binar cu virgula fixa
- Conversia complementului fata de 2 in binar
- Conversia binar-ASCII, ASCII-binar
- Algoritmi matematici
- Adunarea si scaderea numerelor intregi reperezentate pe 16/24 biti
- Inmultirea si impartirea unui octet cu un numar intreg
- Inmultirea sau impartirea unui octet cu o constanta fractionara
- Inmultirea numerelor intregi reprezentate pe 8 biti
- Impartirea numerelor intregi reprezentate pe 8 biti
- Inmultirea numerelor intregi reprezentate pe 16 biti
- Impartirea numerelor intregi reprezentate pe 16 biti
- Compararea a doua numere intregi de 16 biti
- Media aritmetica
Recomand ceva mai actual, gen arm/stm32. Pe udemy e un curs redus la vreo 10 euro, sau daca nu exista si carti free sau clipuri pe youtube.
In curs se discuta despre programarea pe serial si I2C dar se poate adapta usor si la USB. Sincer, Arm/STM32 imi par putin mai complicate decat PIC-urile…
Sunt dar merita tot efortul. Incep sa fie peste tot, unele variante sunt chiar mai ieftine decat microcontrollere pe 8 biti, astfel incat devine cam nejustificat sa mai investesti in ele.
Da, merita incercat. Stiu c-am citit despre Arm/STM32 si m-am intors inapoi la PIC. Probabil din obisnuinta…
Mi-am luat pickit dar n-am apucat sa ma joc cu el. Dar stiu cum e, si eu umblu cu arduino cand vreau sa fac ceva rapid.
PIC-urile de la Microchip 16C84 sunt bune la de toate!
Si voi ati incercat pe vremuri cu el cartelele Romtelecom? pe portul LPT …ce vremuri
Sincer, nu m-am jucat cu cartelele telefonice SIM dar am folosit in foarte multe aplicatii PIC16F84. Si inca mai folosesc..
Nu SIM. Erau demult cartele cu care vorbeai in cabinele telefonice… era un standard iso … https://www.kanda.com/blog/programming/smart-cards-smart-card-programmer/
N-am apucat sa ma joc nici cu astea, dar am citit despre ele.