Documente Academic
Documente Profesional
Documente Cultură
Craiova, 02.11.2017
Semnale digitale și PWM
Agenda
Introducere în semnale digitale
Digital vs Analog
Rezistență Pull-up
Software debouncing
Semnale PWM
Prezentare Board
Sesiune de întrebări
Sesiune de practică
Prin semnal digital se ințelege un semnal ce poate lua un set finit de valori.
În echipamentele digitale, semnalul util se poate schimba doar între două stări: HIGH
(corespunzător lui logic 1) şi LOW (corespunzător lui 0 logic).
Acestea sunt interpretate fizic prin două nivele de tensiune 𝑼𝟎 şi 𝑼𝟏 . Un exemplu este acela în
care, pentru valoarea 0, valoarea tensiunii 𝑼𝟎 este cuprinsă între 0 V şi 1 V : 0V < 𝑼𝟎 < 1 V, iar
pentru valoarea 1, avem o tensiune 𝑼𝟏 cuprinsă între 4 V şi 5 V : 4 V < 𝑼𝟏 < 5 V.
Interpretarea nivelelor ca HIGH sau LOW depinde de nivelul tensiunilor conform specificaţiilor
microcontrollerului, care la rândul lor depind de tensiunea de alimentare la care funcţionează
controllerul.
push-button
• ”push-to-make”
• “push-to-brake”
toggle switch
Digital vs Analog
Rezistență Pull-up
Software debouncing
Semnale PWM
Prezentare Board
Sesiune de întrebări
Sesiune de practică
Deși pare mai ușor de folosit și mai util un semnal analogic, deoarece ia orice
valoare între 0V și 5V nu doar sus/jos, un senzor digital este mai precis deoarece
elimină zgomotul pe care senzorul analogic l-ar putea capta.
Histereză
Limita
minimă
Digital vs Analog
Rezistență Pull-up
Software debouncing
Semnale PWM
Prezentare Board
Sesiune de întrebări
Sesiune de practică
Digital vs Analog
Rezistență Pull-up
Software debouncing
Semnale PWM
Prezentare Board
Sesiune de întrebări
Sesiune de practică
Digital vs Analog
Rezistență Pull-up
Software debouncing
Semnale PWM
Prezentare Board
Sesiune de întrebări
Sesiune de practică
semnalul analogic
impulsurile de eşantionare
Astfel, se pot controla circuite analogice din domeniul digital. Practic, asta
înseamnă că un LED acționat astfel se va putea aprinde / stinge gradual,
iar în cazul unui motor acesta se va învârti mai repede sau mai încet.
Frecvența semnalului
Digital vs Analog
Rezistență Pull-up
Software debouncing
Semnale PWM
Prezentare Board
Sesiune de întrebări
Sesiune de practică
Digital vs Analog
Rezistență Pull-up
Software debouncing
Semnale PWM
Prezentare Board
Sesiune de întrebări
Sesiune de practică
Digital vs Analog
Rezistență Pull-up
Software debouncing
Semnale PWM
Prezentare Board
Sesiune de întrebări
Sesiune de practică
• Std_Types.h – conține maparea între tipurile de date generale (int, char, short, long) și tipurile de date standard
(uint32, uint8, uint16, uint32), definirea stărilor (STD_HIGH, STD_LOW, STD_ON, STD_OFF)
• Det.c/h – conține corpul funcției folosită pentru detectarea erorilor în timpul dezvoltării modulelor
• iodefine.h – fișier generat de CS+, conține maparea tuturor regiștrilor folosiți de microcontroller
• ModuleName_Types.h – conține tipurile de date folosite de modul mapate pe cele standard
• ModuleName_Private.h – conține datele private folosite de modul și numai de acesta
• ModuleName.h – conține extern-ul funcțiilor folosite în modul
• ModuleName.c – conține implementarea cerințelor aferente fiecărei funcții
• Modulul DIO realizează schimbarea stării (HIGH și LOW) unui pin configurat din PORT ca I/O
• În DIO.h, a fost realizată definirea de canale folosite ca input în proiect
• Modificări ce trebuie făcute în DIO_Types.h:
• Definirea tipurilor de date folosite de modul în funcție de cele standard (uint8, uint16, etc)
• Modificări ce trebuie făcute în DIO.c:
• Verificarea de pin corect primit ca parametru
• Apelarea corectă a funcției din PORT de verificare a configurației pinului primit
• Citirea valorii pinului din registrii uC-lui și returnarea acesteia în pointerul primit
• Modulul DinH realizează abstractizarea canalelor digitale de input și manipularea ciclică a acestora
• În DinH.h, a fost realizat un exemplu de definire a unor semnale de input folosite în proiect
• Modificări ce trebuie făcute în DinH_Types.h:
• Definirea tipurilor de date folosite de modul în funcție de cele standard (uint8, uint16, etc)
• Modificări ce trebuie făcute în DinH.c:
• Definirea în DinH_Init() a buferului folosit
• Citirea ciclică a statusului canalului de DIO în funcția DinH_Cyclic() și updatarea buferului cu acel status
• Verificarea canalului trimis ca parametru în funcția DinH_GetChannelValue()
• Retunarea statusului din bufer către utilizator prin pointerul primit ca parametru în funcția DinH_GetChannelValue()