Extras din laborator
Definirea problemei:
1. Sa se proiecteze o aplicatie in baza de MCU care ar schimba starea unui LED la detectarea apasarii unui buton
2. Sa se proiecteze o aplicate in baza de MCU care ar receptiona comenzi de la terminal prin interfata seriala pentru a seta starea unui LED.
- led on pentru aprindere si led off pentru stingere, sistemul trebuie sa raspunda cu mesaje text despre confirmarea comenzii.
- pentru schimbul de text prin terminal a se utiliza libraria stdio.h.
3. Sa se proiecteze o aplicatie in baza de MCU pentru detectarea unui cod de la o tastatura 4x4, sa verifice codul si sa afisese mesaj la un LCD.
- pentru cod valid sa se aprinda un led de culoare verde, pentru cod invalid, un led de culoare rosie.
- A se utiliza stdio.h pentru scanarea tastaturii si afisare la LCD.
Obiective:
1. Initierea in programarea MCU, invatarea arhitecturii MCU, invatarea lucrului cu registrii MCU.
2. De a invata cum se creeaza o librarie, adaptarea acestei librarii sub stdio.h pentru a putea folosi comenzile scanf si printf pentru a lucra cu un Serial Terminal sau LCD.
3. De a implementa o tastatura 4x4 si de a invata cum se decodifica semnalele primite de la aceasta tastatura.
Materiale si metode:
1. Pentru a schimba starea unui LED cu ajutorul unui MCU este nevoie de un buton si un LED, pentru receptionarea semnalului de la buton, este nevoie de indicat in registrul DDR ca pinul la care atasam butonul va fi in directia de intrare, si de asemenea acest pin va fi nevoie de conectat la resistorul de pull-up. Butonul este conectat la pamant si la pinul MCU. De asemenea va fi nevoie de un oarecare timp de debounce pentru buton, pentru a evita activarea falsa a LED-ului.
2. Pentru afisarea si scanarea de pe Virtual Terminal cu ajutorul printf si scanf, va fi nevoie de implementat 2 functii, de put si get, adica scriere si citire de pe terminal, apoi aceste functii de put si get va fi nevoie de atasat la stream, cu ajutorul functiei fdevopen. Exemplu luat de pe https://www.nongnu.org/avr-libc/user-manual/group__avr__stdio.html
3. Pentru afisarea pe LCD este folosita metoda similara ca si pentru Virtual Terminal. Pentru a putea lucra ai comod cu sirurile, am folosit libraria string.h. Pentru implementarea unei tastaturi 4x4 este nevoie de a implementa in cod o logica de decodificare a semnalelor obtinute de la tastatura. Metoda de decodificare utilizata de mine este urmatoarea:
Bibliografie
https://www.nongnu.org/avr-libc/user-manual/group__avr__stdio.html (stdio.h)
https://ww1.microchip.com/downloads/en/DeviceDoc/doc2503.pdf (Datasheet ATmega32)
Preview document
Conținut arhivă zip
- HEX_Files
- Keypad.hex
- LED.hex
- serial_stdio.hex
- Code.docx
- Interactiunea cu utilizatorul.docx