PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : ADC sendet Ergebnis nicht



zappel76
08.09.2010, 16:14
Hallo !

Jetzt habe ich ein Problem mit dem ADC. Der sendet das Signal nicht an das Display, dass dies weiterzählt.

LCD funktioniert und ADC-Messungen am IC passten auch.
Wo ist mein Denkfehler?

$regfile = "m16def.dat"
$crystal = 1000000

Dim Slot1 As Byte
Dim Slot2 As Byte
Dim Slot3 As Byte
Dim Slot4 As Byte
Dim Durchgang As Byte

Dim Schranke2 As Word 'Lichtschranken
Dim Schranke4 As Word
Dim Schranke1 As Word
Dim Schranke3 As Word

Dim Frei1 As Bit
Dim Frei2 As Bit
Dim Frei3 As Bit
Dim Frei4 As Bit

'Alle Lichtschranken freigeben
Frei1 = 1
Frei2 = 1
Frei3 = 1
Frei4 = 1




Config Adc = Single , Prescaler = Auto , Reference = Aref
Start Adc

Do
If Frei2 = 1 Then
Schranke2 = Getadc(7)
If Schranke2 < 500 Then
Frei2 = 0
Incr Slot2
End If
End If

If Frei2 = 0 Then
Schranke2 = Getadc(7)
If Schranke2 > 800 Then Frei2 = 1
End If


Do
Cls


Lcd " 2 | 3 | 4 | 1 "
Lowerline
Lcd " | | | "
Locate 2 , 2
Lcd Slot2
Locate 2 , 6
Lcd Slot3
Locate 2 , 10
Lcd Slot4
Locate 2 , 14
Lcd Slot1

Waitms 50
Loop
End
Loop

Danke im Voraus!

funkheld
08.09.2010, 18:31
Wie willst du da rauskommen aus der do-loop???
Man....

Do
Cls


Lcd " 2 | 3 | 4 | 1 "
Lowerline
Lcd " | | | "
Locate 2 , 2
Lcd Slot2
Locate 2 , 6
Lcd Slot3
Locate 2 , 10
Lcd Slot4
Locate 2 , 14
Lcd Slot1

Waitms 50
Loop


wieder copy-paste gemacht, waaaass.....

Richard
08.09.2010, 20:12
Hmmm, wo ist denn der "print Befehl" zum LCD? Also z.B. Schranke2 = Getadc(7) >> Schranke2 >>LCD?

Gruß Richard

Jaecko
08.09.2010, 22:02
Der "Print"-Befehl heisst in Bascom "LCD" (zugegeben etwas unglückliche Wortwahl).
Aber stimmt, dieses Do-Loop-Konstrukt ist schon abenteuerlich; v.a. die Abfolge:

Do
...
End
...
Loop

Also die innere Do-Loop raus und das END hinter das letzte Loop.

Richard
09.09.2010, 09:23
Der "Print"-Befehl heisst in Bascom "LCD" (zugegeben etwas unglückliche Wortwahl).
.

Das war mir bekannt, aber trotzdem sehe ich nicht wo slot 1...4 mit den gemessenen ADC Werten beschrieben werden.

Gruß Richard

zappel76
10.09.2010, 19:30
Ist die denn nicht der Befehl, um in das Display(Slot2) etwas zu schreiben?
In diesem Fall soll einfach hochgezählt werden 0,1 ....4

Frei2 = 0
Incr Slot2

oder müsste es "If frei2=0 then incr LCD Slot2" heißen?

Zappel ](*,)

Jaecko
10.09.2010, 21:29
Kommt drauf an, was du machen willst.

Frei2 = 0
Incr Slot2
=> Frei2 wird immer 0 gesetzt, Slot2 wird immer erhöht.

If frei2=0 then incr LCD Slot2
=> Slot2 wird nur dann erhöht, wenn Frei2 = 0 ist.

Richard
10.09.2010, 22:59
Ja, aber es soll doch der "get ADC Wert ausgegeben werden"? Und der wird doch anschenend nicht Slot(x) zugeordnet und/oder durch Slot (x) 0/1 überschrieben?

Slot (x) muss ein arry sein, dann könnte man mit slot (1...4) dessen Inhalte am LCD darstellen. Wenn sie denn mittels Get adc slot (1...4) beschrieben wurden.

Zugegeben durch den Code steige ich nicht ganz durch, es fehlen halt Kommentare zu dem Befehlen. Anfänger Fehler halt und nach ~ 14 Tagen weiß der Programmierer selber nicht mehr was (ER) sich dabei gedacht hat.........

Mit ....
get adc Slot (x)
x=x+1......
LCD slot x

u.s.w. Sollte es dann klappen

Gruß Richard

zappel76
11.09.2010, 09:17
Vielen Dank für die Antworten.

Nein, der ADC-Wert soll nicht ausgegeben werden.
Die Lichtschranke funktioniert quasi wie ein Besucherzähler. Kommt einer durch die Lichtschranke, wird ein Besuch gezählt. Dieses soll das LCD-Display dann als Zahl anzeigen.

Do
If Frei2 = 1 Then ´wenn die Lichtschranke frei ist
Schranke2 = Getadc(7) miss ADC (7)
If Schranke2 < 500 Then
´wenn die Spannung kleiner 500 ist dann Sperre die Lichtschranke
Frei2 = 0
Incr Slot2 ´erhöhe die Zahl auf dem Display in Slot2
(Die hat nicht funktioniert, als Alternative würde ich es jetzt so machen:
If Schranke2 < 500 then incr LCD SLot2)
End If
End If

If Frei2 = 0 Then ´ist die Lichtschranke gesperrt
Schranke2 = Getadc(7) ´miss ADC(7)
If Schranke2 > 800 Then Frei2 = 1
´gib sie bei der Spannung größer 800 wieder frei
End If

Cls


Lcd " 2 | 3 | 4 | 1 "
Lowerline
Lcd " | | | "
Locate 2 , 2
Lcd Slot2
Locate 2 , 6
Lcd Slot3
Locate 2 , 10
Lcd Slot4
Locate 2 , 14
Lcd Slot1

Waitms 50
Loop
End

Gruß Zappel!

Richard
11.09.2010, 13:53
Vielen Dank für die Antworten.

Nein, der ADC-Wert soll nicht ausgegeben werden.
Die Lichtschranke funktioniert quasi wie ein Besucherzähler. Kommt einer durch die Lichtschranke, wird ein Besuch gezählt. Dieses soll das LCD-Display dann als Zahl anzeigen.



Ahhh jetzt verstehe ich. :-)

Gruß Richard