Created
February 21, 2013 17:12
-
-
Save rafalw/5006346 to your computer and use it in GitHub Desktop.
Przetwornik analogowo-cyfrowy oraz modulacja szerokości impulsu (ATmega48P).
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
' Demonstracja modulacji szerokości impulsu (PWM) i wbudowanego | |
' przetwornika analogowo-cyfrowego MCU ATmega48P | |
$regfile = "m48pdef.dat" | |
$crystal = 4000000 | |
$hwstack = 40 | |
$swstack = 16 | |
$framesize = 32 | |
' Plik z definicjami stałych używanych do sterowania modułem | |
' wyświetlacza szeregowego. | |
$include "sdrv-const.bas" | |
' Konfiguracja portów pełniących rolę wyjść timera 0 pracującego w trybie PWM (OC0A, OC0B) | |
Config Portd.5 = Output | |
Config Portd.6 = Output | |
Portd.5 = 0 | |
Portd.6 = 0 | |
' Konfiguracja przetwornika analogowo-cyfrowego; napięcie odniesienia ustalone na 5V | |
' (patrz: wyprowadzenie AVCC mikrokontrolera), czyli przedział od 0 do około 5V będzie | |
' "rzutowany" na 10-bitową liczbę (od 0 do 1023). | |
Config Adc = Single , Prescaler = Auto , Reference = Avcc | |
' Timer0 pracujący z największą szybkością w trybie PWM; porównywanie wartości timera | |
' w systemie "clear up" spowoduje zwiększanie szerokości impulsu wraz ze wzrostem wartości zmiennych | |
' PWM0A i PWM0B (patrz dalej). | |
Config Timer0 = Pwm , Prescale = 1 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Up | |
Dim Odczyt_0 As Word | |
Dim Odczyt_1 As Word | |
Dim Napiecie As Single | |
Dim Napis As String * 8 | |
Printbin Clean | |
Printbin Coff | |
' Zerowanie rejestrów porównywania | |
Pwm0a = 0 | |
Pwm0b = 0 | |
Do | |
' Czyszczenie wyświetlacza | |
Printbin Clean | |
' Odczyt wartości napięcia z potencjometrów pracujących jako dzielniki | |
Odczyt_0 = Getadc(0) | |
Odczyt_1 = Getadc(1) | |
' Konwersja odczytanej wartości na wolty | |
' i prezentacja wyników | |
Napiecie = Odczyt_0 * 0.0049 | |
Napis = Fusing(napiecie , "#.#") | |
Napis = Napis + "V" | |
Print "1: " + Napis | |
Napiecie = Odczyt_1 * 0.0049 | |
Napis = Fusing(napiecie , "#.#") | |
Napis = Napis + "V" | |
Print " 2: " + Napis | |
' Aktualizacja rejestrów porównywania - zmiana jasności | |
' świecenia diod | |
Shift Odczyt_0 , Right , 2 | |
Shift Odczyt_1 , Right , 2 | |
Pwm0a = Odczyt_0 | |
Pwm0b = Odczyt_1 | |
Waitms 100 | |
Loop | |
End |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment