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.
So gibt es ja keine zuverlässige Angabe. Warum werden nur ganzzahlige Werte angezeigt?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







Zitieren

Lesezeichen