jo, also ich nutze gerne die interne Referenz, klappt beim mega16 recht gut - und soweit ich das sehe wird vom e-lab-System auch nur der MUX-Teil des ADMUX-Registers überschrieben, die REFselect-Bits bleiben stehen.
ich mach dann immer admux := admux or %xx000000; vor das enableints. - xx passend nach Datenblatt setzen.
Man kann auch ONADCread nutzen, wenn man eigene MUX-Routinen braucht, z.B sowas wie immer 3 Kanäle von 4 wandeln um Wandlungszeit zu sparen und dann den 4ten separat per adcfixed setzen und auslesen - ggf. hilft immer ein Blick in den generierten ASM-Code des Compilers.
Man sollte aber immer ins jeweilige Datenblatt schauen, je nach Prozessortyp ist die interne Referenz nämlich irgendwas zwischen 1,5 und 2,7V - im Text des Datenblattes beim AD-Wandler steht fast immer 2,56V, der wirkliche Wert steht dann weiter hinten unter "electrical specification" irgendwo im Kleingedruckten.
Hab mich anfangs bei den tiny-Typen gewundert, daß da ganz andre Zahlenwerte als errechnet gewandelt wurden - die tinys haben 2,7V Referenz.
- zumindest der tiny26.
ich mach dann immer admux := admux or %xx000000; vor das enableints. - xx passend nach Datenblatt setzen.
Man kann auch ONADCread nutzen, wenn man eigene MUX-Routinen braucht, z.B sowas wie immer 3 Kanäle von 4 wandeln um Wandlungszeit zu sparen und dann den 4ten separat per adcfixed setzen und auslesen - ggf. hilft immer ein Blick in den generierten ASM-Code des Compilers.
Man sollte aber immer ins jeweilige Datenblatt schauen, je nach Prozessortyp ist die interne Referenz nämlich irgendwas zwischen 1,5 und 2,7V - im Text des Datenblattes beim AD-Wandler steht fast immer 2,56V, der wirkliche Wert steht dann weiter hinten unter "electrical specification" irgendwo im Kleingedruckten.
Hab mich anfangs bei den tiny-Typen gewundert, daß da ganz andre Zahlenwerte als errechnet gewandelt wurden - die tinys haben 2,7V Referenz.
- zumindest der tiny26.