Ustawienie czasu zbocza narastania

To forum jest dla wszystkich pasjonatów mikrokontrolerów AVR Atmela. Wymiana doświadczeń i pomoc dla początkujących w pisaniu programów zarówno w C, Asemblerze jak i BASCOM. Zapraszam znawców tematu, aby pomogli wszystkim początkującym!
ODPOWIEDZ
Awatar użytkownika
sigaris
-
Posty: 7
Rejestracja: 06 cze 2006, 18:05
Lokalizacja: Niepołomice

Ustawienie czasu zbocza narastania

Post autor: sigaris » 19 lip 2010, 19:46

Mam takie zapytanie ( jesli już gdzies było, to przepraszam)

Czy jest w Bascomie funkcja dzięki której mogłbym ustawić czas narastanie zbocza podczas przejścia z 0 na 1 i 1 na 0 ??? Chodzi mi o to, że chcę fizycznie podpiąć pod mikrokontroler diodę LED, ale chcę by zaświecała się przez około 2 sek i tak samo wolno gasła. Choć nie wiem, czy z diodą tak się da, i czy nie lepiej zastosowac małą żaróweczkę ???

Awatar użytkownika
matrix
Użytkownik
Posty: 1796
Rejestracja: 15 mar 2006, 5:21
Lokalizacja: Sochaczew
Kontakt:

Post autor: matrix » 19 lip 2010, 20:09

do tego celu używa się sprzętowego PWM. diodę można bezpośrednio z pinu kontrolera sterować, natomiast żarówkę przez tranzystor sterujący.

Awatar użytkownika
Pikczu
Użytkownik
Posty: 754
Rejestracja: 18 lip 2005, 18:33
Lokalizacja: Dublin
Kontakt:

Post autor: Pikczu » 19 lip 2010, 21:05

Czyli robi się to tak:
Musisz skonfigurować timer do pracy pwm

Kod: Zaznacz cały

Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 1
właczyć globane przerwania

Kod: Zaznacz cały

 Enable Interrupts 
No i właczyć samo PWM

Kod: Zaznacz cały

Enable Oc1a
Enable Oc1b 
Potrzebujesz jeszcze zmienna na przechowywnaie wartości tego PWM, więc piszemy

Kod: Zaznacz cały

 Dim moje_PWM1 as byte
Dim moje_PWM2 as byte


A potem w programie już przypisujesz wartość zmiennej do PWM :

Kod: Zaznacz cały

 Pwm1a=moje_PWM1
Pwm1b=moje_PWM2
To jeszcze nie koniec, teraz trzeba tym jakoś zarządzić kiedy ma to nasze PWM się zmienić i w jaki sposób.
Wiec albo przez nacisnięcie guzika albo przez upływ czasu co sobie tam wymyślisz.
Np z upływem czasu można zwiększyc lub zmniejszyć wartość naszego PWM:

Kod: Zaznacz cały

do 
Pwm1a=moje_PWM1
Pwm1b=moje_PWM2
wait 1' tu akurat jest 1 sekunda więc będzie to trwało wiele dłużej jak chciałeś ale to jest tylko przykład 
incr moje_PWM1
incr moje_PWM2
loop 
end 
itp.

Aha możesz to zaobserwować podpinajćc led pod nóżkę procka z opisem oc1a i oc1b

ODPOWIEDZ