Woltomierz

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
agrala
-
Posty: 34
Rejestracja: 17 sty 2011, 21:20
Lokalizacja: Kalisz

Woltomierz

Post autor: agrala » 03 kwie 2011, 9:07

Witam
Napisałem program do woltomierza i amperomierza i tu wszystko jest ok.
Chciałem jeszcze dodać wskaźnik napięcia na kilku diodach i tu mam problem.
Miało to wyglądać tak że gdy napięcie będzie większe niż 1V to na porcieX.Y pojawi się stan niski, gdy napięcie będzie większe od 2V wtedy stan niski na następnym pinie itd.
Problem polega na tym że cały czas mam podawany stan niski na pinie i jest on niezależnie od tego czy warunek jest spełniony czy nie.
Gdy w warunku zamiast portb.0=0 dam toggle portb.0 to po spełnieniu warunku dioda podpięta pod ten pin zaczyna mrugać.
Proszę o wskazanie problemu.

Kod: Zaznacz cały

$regfile = "m8def.dat"
$crystal = 16000000

Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portd.2 , Db5 = Portd.3 , Db6 = Portd.4 , Db7 = Portd.5 , E = Portd.1 , Rs = Portd.0
Config Adc = Single , Prescaler = Auto , Reference = Avcc

Dim Wart_ac1 As Word
Dim V1 As Single
Dim Wart_nap As String * 4
Dim Wart_ac2 As Word
Dim V2 As Single
Dim A as single
Dim Wart_prad As String * 4
Start Adc
config portb=output
config portb=1
Cls

Do
   'Woltomierz
   Wart_ac1 = Getadc(1)
   Upperline
   V1 = Wart_ac1 * 0.0049
   Wart_nap = Fusing(v1 , "#.&&&")
   Lcd Wart_nap ; "[V]" ; Spc(9)

   if wart_ac1 > 205 then
   portb.0=0
   end if

   'Amperomierz
   Wart_ac2 = Getadc(2)
   Lowerline
   V2 = Wart_ac2 * 0.0049
   A=V2/0.47   '0.47 - wartość rezystora pomiarowego
   Wart_prad = Fusing(A , "#.&&&")
   Lcd Wart_prad ; "[A]" ; Spc(9)
Loop
End 

keruseykaryu

Post autor: keruseykaryu » 03 kwie 2011, 9:20

agrala pisze:Problem polega na tym że cały czas mam podawany stan niski na pinie i jest on niezależnie od tego czy warunek jest spełniony czy nie.
A ustawiłeś go kiedyś w stan 1? Nie. Zatem skąd takie zdziwienie. No i czy czy jak warunek nie będzie spełniony to co myślisz, że program zrobi? Nic.

I co to jest?

Kod: Zaznacz cały

config portb=output 
config portb=1

agrala
-
Posty: 34
Rejestracja: 17 sty 2011, 21:20
Lokalizacja: Kalisz

Post autor: agrala » 03 kwie 2011, 11:34

Dziękuje za wskazanie błedu.
Teraz już działa jak powinno :mrgreen:

ODPOWIEDZ