-
Naja ich poste jetzt mal einfach meinen Kram, das programm geht vollkommen. Vllt kannst du ja was finden was du vergessen hast (steh grad leider unter Zeitdruck und kann es daher nicht alles raussuchen).
Ist übrigens mein 1. Porgramm *fg*
Code:
$regfile = "m16def.dat"
$framesize = 32
$swstack = 32
$hwstack = 32
$crystal = 16000000
$baud = 9600
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portc.0 , Db5 = Portc.1 , Db6 = Portc.2 , Db7 = Portc.3 , E = Portc.5 , Rs = Portc.4
Cls
Cursor Off
Dim U As Word
Dim I As Integer
Dim Teiler As Integer
Dim W As Integer
Teiler = 20 'Umrechnung A/D Wert
W = 1 'Abbruch Bedingung Eingabe
Config Adc = Single , Prescaler = Auto
Start Adc
Config Pina.0 = Input 'AD
Config Pinc.6 = Output 'LED
Config Pinc.7 = Input 'S1
Portc.7 = 1
'Start
Locate 1 , 1
Lcd "<<<<uC Timer>>>>"
Locate 2 , 1
Lcd "by Stefan Reible"
Wait 2
Cls
Locate 1 , 1
Do
Lcd "Loading"
Lcd " ."
Waitms 200
Lcd "."
Waitms 200
Lcd "."
Waitms 200
Incr I
Cls
Loop Until I = 3
'Eingabe Timer
I = 0
Do
Locate 1 , 1
Lcd "Timer setzen: "
U = Getadc(0)
I = U / Teiler
Locate 2 , 1
Lcd "Sek: " ; I ;
Locate 2 , 14
Lcd "OK?"
Waitms 200
Loop Until Pinc.7 = 0
'Go
Cls
U = I
I = 0
W = 0
Locate 1 , 1
Lcd "Timer = " ; U ; " Sek" ;
Locate 2 , 11
Lcd "Start?"
Wait 1
Do
If Pinc.7 = 0 Then
Do
Cls
Locate 1 , 1
Lcd U ; " Sekunden";
U = U - 1
Wait 1
Loop Until U = 0
W = 1
End If
Loop Until W = 1
Cls
Locate 1 , 1
Lcd "Fertig!"
Locate 2 , 1
Lcd "LED = AN"
Portc.6 = 1 'LED an
End 'end program
Mfg
Lenox
-
Fehlt da nicht wieder
Reference = AVCC
oder ähnliches??
jon
-
wenn ich es hinzufüge geht es nicht mehr.
Vcc muss nur halt an AREF angeschlossen sein.
-
Ihr müsst halt wissen wie Ihr es haben wollt,
entweder schliesst man Vcc an AREF an, dann muss man es aber auch so dem AVR sagen,
oder man nimmt etwas internes her, oder AVCC, dann muss aussen ein Kondensator an AREF dran, damit das auch geht.
Ein Kondensator sollte aber trotzdem immer am AREF vorkommen, damit die Spannung einigermassen stabil bleibt, denn die Messung wird nur so genau wie AVCC und AREF genau sind !
-
Schon mal vielen vielen Dank für eure Hilfe. Also ich habe ja das Board RN-Minicontrol, da ist an AREF schon ein Kondensator, genauso wie an AVCC. AVCC ist zudem über einen Widerstand (oder an ein Teil mit der Bezeichnung L1 Induktivität 10uH (ich find das teil aber nirgens auf dem Board)) an 5 V angeschlossen.
Ich versuch noch herauszufinden, was das Teil L1 sein soll und wo ich es auf dem Board finden kann.bin schon die ganze Zeit am löten, dass ich den Sensor mal ausprobieren kann...
So, ich mach mal weiter, bis denne
Gruß Felix
-
Hmm das ist kein Widerstand sondern eine induktivität (Spule).
Wenn du VCC (5V) schon an AREF anliegen hast denke ist es ist alles oky, es geht auch ohne Kondensator (nur halt ungenauer). Denke eher es ist ein Software Problem. Ich vergleich jetzt mal deins mit meinem.
Mfg
Lenox
-
So, kopier mal folgendes in Bascom rein, denke so gehts ;)
Code:
$regfile = "m168def.dat"
$crystal = 16000000
$baud = 9600
$hwstack = 32
$framesize = 32
$swstack = 32
Config Adc = Single , Prescaler = Auto
Start Adc
Config Pinc.2 = Input
Dim Sensor As Integer
Do
Sensor = Getadc(2)
Print "Sensor " ; Sensor ;
Waitms 500
Loop
End
-
@Stargate
die Spule kann man beim RN-MiniCtrl fast nicht übersehen, ist relativ gross, schaut nach Widerstand aus, ist aber rosafarbig, und in der Nähe des Stromanschlusses, das L1 kann man fast nicht lesen, weil da genau ein Loch in der Platine ist,
wenn du es selber zusammengelötet hast, muss diese drin sein, sonst kommt nix am AVR an !
Ja und man sollte das angeben, wenn man AVCC als Referenz haben will !
-
Danke für den Code! ich hab meinen Fehler gefunden :-)
Ich hatte die Zeile Config Pinc.2 = Input weggelassen, da ich dachte, das die Funktion Getadc (2) das schon weiß.
Es funktioniert...leider sind es wohl doch nur 256 Bit... ;-/
Bei 0V, also auf GND, zeigt er mir Sensor : 0 an und bei 5V zeigt er mir Sensor : 255 an.
Ja, ich habe mir mein Board nochmal angeschaut :-) und habedie Spule gefunden *freu* ICh hab mir zwar schon gedacht, dass das Teil nur einmal auf der Platine zu finden ist, und dass es das Teil schon sein muss, aber ich bin davo ausgegangen, dass es ein widerstand ist ;-)
Es stimmt, das L ist "durchlocht", sonst hätt ich's vielleicht auch gefunden. Hab die Platine zwar selbst zusammengelötet, aber nicht mehr drauf geachtet.
So, vielen Dank für eure Hile, ihr habt meinen Tag gerettet. Ich sitz da nämlich schon ne ganzeweile dran und es tat nie ^^
Viele Grüße Felix
-
;D der Fehler ist mir auch passiert, und mir hatte ein kompletter Code auch gut geholfen ;). Eigentlich ist es mit getadc ja kindereinfach, aber man vergisst schnell ne Zeile, hehe