die pollswitch funktion
und das Programm:Code:unsigned char PollSwitch (void) { unsigned int i; int ec_bak = autoencode; // Sichert aktuellen Zustand /* Autoencode-Betrieb vom ADC-Wandler unterbinden. */ autoencode = FALSE; DDRD |= SWITCHES; // Port-Bit SWITCHES als Output SWITCH_ON; // Port-Bit auf HIGH zur Messung ADMUX = (1 << REFS0) | SWITCH; // AVCC reference with external capacitor Sleep (10); ADCSRA |= (1 << ADSC); // Starte AD-Wandlung while (!(ADCSRA & (1 << ADIF))) // Ende der AD-Wandlung abwarten ; ADCSRA |= (1 << ADIF); // AD-Interupt-Flag zuruecksetzen i = ADCL + (ADCH << 8); // Ergebnis als 16-Bit-Wert SWITCH_OFF; // Port-Bit auf LOW Sleep (5); /* Autoencode-Betrieb vom ADC-Wandler wiederherstellen. */ autoencode = ec_bak; return (long)i; }
funktioniert jetzt so :>Code:#include <stdlib.h> #include "asuro.h" int main(void) { uint8_t t1; unsigned char text[16]; Init(); SerPrint("\r\nTastsensor Test\r\n"); while (1) { t1 = PollSwitch(); itoa(t1, text, 10); /* Tastenwert senden */ SerPrint(text); Msleep(500); } }







Zitieren

Lesezeichen