Hallo,
Ich versuche, mit einem Atmega8 seine eigene Versorgungsspannung viac LCD auszugeben.
Dazu habe ich folgenden Code geschrieben
Code:$regfile = "m8def.dat" ' specify the used micro $crystal = 1000000 ' used crystal frequency $baud = 19200 ' use baud rate $hwstack = 150 ' default use 32 for the hardware stack $swstack = 150 ' default use 10 for the SW stack $framesize = 60 ' default use 40 for the frame space 'note : tested in PIN mode with 4-bit Config Lcdpin = Pin , Db4 = Portb.1 , Db5 = Portb.2 , Db6 = Portb.3 , Db7 = Portb.4 , E = Portb.5 , Rs = Portb.6 Dim A As Byte Dim Druck As Byte Dim Var As Byte Dim Uv As Byte Dim X As Byte Dim Y As Byte Config Lcd = 16 * 2 'configure lcd screen 'other options are 16 * 4 and 20 * 4, 20 * 2 , 16 * 1a 'When you dont include this option 16 * 2 is assumed '16 * 1a is intended for 16 character displays with split addresses over 2 lines Config Timer1 = Timer , Prescale = 1024 Enable Timer1 Ddrd = &B00000000 'input D Var = 35 Druck = 150 Enable Interrupts Cursor Off Noblink Config Adc = Single , Prescaler = Auto , Reference = Internal Start Adc 'With STOP ADC, you can remove the power from the chip 'Stop Adc Dim W As Word , Channel As Byte 'now read A/D value from channel 0 ' ------------------------------------ hier liegt der Hund im Graben Do W = Getadc(4) Uv = W * 25 Uv = Uv / 10 Lcd "Vers.Spannung:" Locate 2 , 0 Lcd Uv ; " mV " ; "-" ; W Waitms 1800 Cls ' -------------------------------- Loop End
Rauskommen tut dann immer 16 mV -16
Gemessen sinds 2,55V - 2,54V (1 kOhm + 1 kOhm)
Wieso der ADC Minuswerte angibt, ist mir ein Rätsel. Habe den Spannungsteiler auch umgepolt (wie zu erwarten kein Effekt)
Mit dem Beispielprogramm hat es geklappt, der hat alle Channels (ADC 0-7) durchgeswitched. 546 , 433 usw kam immer raus also realistische Werte. Wieso er jetzt negative Werte ausgibt?
Habt ihr eine Idee???
EDIT: Auch wenn ich 0-W oder -1*W rechne, gibt er nachher Minuswerte aus!!
Mfg







Zitieren

Lesezeichen