Ok, Danke.
Jetzt habe ich Im RN-Wissen nach ADC gesucht, gefunden und abgewandelt übernommen, weil ich noch kein Kable zur RS232 habe sondern nur ein Display.
Der ATmega32 soll nach folgendem Code die Spannung an allen PortA bzw. nur an PortA.0 auslesen und im Display mit dazugehöriger Pinnummer anzeigen. Klappt soweit auch fast alles, nur habe ich mit offenem Ende an PortA.0 (nicht mal ein Kabel ist angechlossen) einen Wert von 1 Volt! Und bei der Versorgungsspannung bloß 4Volt anstatt 5V. Aber er wird mit 5V versorgt (sogar nachgemessen!). Woran liegt das? Bis wieviel Volt kann der ATmega32 messen?
Den Wert von den Ports habe ich natürlich umgewandelt nach RN-Wissen.
Code:
regfile = "m32def.dat"
$framesize = 32
$swstack = 32
$hwstack = 32
$crystal = 1000000
Config Portc.5 = Output 'Híntergrundbeleuchtung
Config Portd.6 = Output 'Gruen LED
'LCD Eigenschaften...
Config Lcd = 20 * 4
Config Lcdpin = Pin , Db4 = Portc.1 , Db5 = Portc.2 , Db6 = Portc.3 , Db7 = Portc.4 , E = Portc.0 , Rs = Portd.7
Config Lcdbus = 4
Portc.5 = 1 'Hintergrundbeleuchting ein
Portd.6 = 1 'Gruen LED ein
Cursor Off 'Cursor ausschalten
Cls 'Display löschen
Config Adc = Single , Prescaler = Auto
Start Adc
Dim W As Word , Channel As Byte
Channel = 0
Do
W = Getadc(channel) 'Wert am Port auslesen
W = W * 5 'Wert * Interne Referenzspannung (5V)
W = W / 1024 'Wert / 1024 oder Wert / 2^10
Locate 2 , 1 'Wert ausgeben mit Pinangabe
Lcd "ADC-Pin: "
Locate 2 , 10
Lcd Channel
Locate 3 , 1
Lcd "Wert: "
Locate 3 , 10
Lcd W ; " Volt"
'Incr Channel 'Damit nur PortA.0 angezeigt wird
If Channel > 7 Then Channel = 0 'Im Moment überflüssig
Waitms 500
Loop
End
So gibt es ja keine zuverlässige Angabe. Warum werden nur ganzzahlige Werte angezeigt?
Lesezeichen