Skip to content

Instantly share code, notes, and snippets.

@rafalw
Created February 21, 2013 17:12
Show Gist options
  • Save rafalw/5006346 to your computer and use it in GitHub Desktop.
Save rafalw/5006346 to your computer and use it in GitHub Desktop.
Przetwornik analogowo-cyfrowy oraz modulacja szerokości impulsu (ATmega48P).
' 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