aaalso ... die 300ms sind deutlich übertrieben, ja, die Routine getadc ist etwas lahmer als direkt die Register auszulesen, was die schnellste Methode ist.
Die schnellste Methode den ADC auszulesen ist di Daten linksbündig und nur den MSB, sprich ein Byte zu holen und das ganze noch im free running Mode mit Interrupt bei Sample ... dann können einige kHz Samplerate erreicht werden ... wird bei Dir aber vermutlich nicht gehen, da Du ja mehrere Analogeingänge brauchst.
Dabei ist zu beachten, dass der AVR ATMega32 prinzipiell nur einen (!!) einzigen AD-Wandler (ADC) hat. In der Kosequenz, wenn mehrere Kanäle benötigt werden wird dieser eine ADC auf den jeweils jetzt gebrauchten Eingang umgeschaltet. Dann braucht er erstmal noch ne Zeit um den Messwert zu ermitteln, wodurch durch die Schalterei und dann Messerei eben Zeit und somit Samplerate verloren geht.
Man kann Assembler Code direkt zwischen die Basiczeilen einbauen, das ist kein Problem (Suchbegriff in der Bascom Hilfe: $asm), es wird Dich nur nicht direkt weiter bringen. Zum Einen ist es Käse ASM einzubauen nur um ein paar Register anzusprechen, das kann man unter Bascom auch direkt tun, das schenkt sich praktisch nix, außer das der Code hinterher auch noch lesbar ist. Die Abfrage des ADC-Wertes kann man ebenso direkt aus den Registern und per Overlayvariable ergibt sich auch kaum Geschwindigkeitsverlust gegenüber ASM. Um die Verzögerung für das Wechseln des ADC-Kanales wirst Du aber hardwaretechnisch nicht herum kommen.
Lesezeichen