Zitat Zitat von Mercator
Jaja. Kann man alles machen, doch es geht mir hier weniger um den Sensor, sondern eher darum, wie man Spannungen mit C vom Port C ausliest.
Mit C kann ich dir momentan auch nicht sonderlich weiterhelfen da ich nur Assembler und Bascom benutze. Ich kann dir nur die prinzipielle Nutzung eines AD-Converters im ATMEGA sagen. Zum einen muß AREF beispilesweise auf +5V liegen genauso wie auch die AVCC auf +5V liegen muß. Wenn das passt kann der 10-Bit ADC schonmal 0-5V messen. Da es natürlich nur einen ADC gibt der gemultiplext ist mit einer Art Wahlschalter auf acht Messeingänge muß zuerst der Port an dem gemessen werden soll definiert sein im Register. Genauso muß zuerst die Referenzspannungsquelle definiert werden. Also im Normalfall AREF. Dazu mußt du im Register ADMUX &B00xxxxxx schreiben. Um z.B. Den ADC1 an PortC zu lesen eben noch die Adresse (binär) im Register ADMUX setzen. Wenn Kanal 1 gemessen werden soll ist das eben &Bxxxx0001.
Da der ADC normal defaultmäßig erst mal abgeschaltet ist muß man den natürlich einschalten. Das geschieht über Register ADCSRA und den Wert &B1xxxxxxx. Jetzt ist der ADC mal soweit vorbereitet und du kannst im selben Register mit &Bx1xxxxxx die AD-Wandlung anstoßen. die braucht dann eben je nach Bitbreite der AD-Wandlung (8- oder 10-Bit) verschieden lang. 10-Bit braucht eben 4 mal länger wie 8-Bit udn normal bei 4-Bit eben so 60µs. Das Bit bleibt nun auf 1 bis er fertig ist. Wenn dann eben das Bit auf 0 ist kann man die Werte vom ADC abholen. Der ADC hat ein 16-Bit Register, also mußt du zweimal 8-Bit abholen. Wenn du das nicht machst startet der ADC nicht mehr. Das High-Register ist das Register ADCH und entsprechend das Low-Register (das bei 8-Bit benötigt wird) ADCL. Diese beiden Register müssen dann nacheinander eben zuerst ADCL und dann ADCH gelesen werden. Erst wenn ADCH gelesen wurde geht der AD-Wandler wieder in Bereitschaft für eine neue Messung. Mehr Infos findest du aber im Datenblatt des ATMEGA mit allen Registerfunktionen.

Grüße Wolfgang