Analog Digital Wandler
- Details
- Kategorie: Elektor Linux Board
- Zuletzt aktualisiert am Montag, 17. September 2012 20:42
- Veröffentlicht am Montag, 04. Juni 2012 18:25
- Geschrieben von Johann Weichselbaumer
Erster Test des ADW erfolgreich!
Ausgabe am Bildschirm:
root@gnublin:~# gcc -o adctest1 adctest1.c root@gnublin:~# ./adctest1 set res to 10 765 771 766 768 768 918 1012 611 593 597 root@gnublin:~#
Source Code:
/*Adctest.c Lesen des analogen Eingangs Ausgabe am Terminal */ #include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <unistd.h> #include <time.h> unsigned char buffer[256]; unsigned int n; int fd; void select_gpa1() { /* select ADC 1 */ fd = open("/dev/lpc313x_adc", O_RDWR); // printf("fd:%d,",fd); write(fd, "1", 2); /* "1\0" */ close(fd); } int get_adc() { fd = open("/dev/lpc313x_adc", O_RDONLY); n = read(fd, buffer, 256); close(fd); return n; } int hexatoi(char *in) { int value=0; unsigned char i=0; while(1) { if(in[i] >= '0' && in[i] <= '9') { value <<= 4; value |= in[i] - '0'; } else if(in[i] >= 'A' && in[i] <= 'F') { value <<= 4; value |= in[i] - 'A'+10; } else if(in[i] >= 'a' && in[i] <= 'f') { value <<= 4; value |= in[i] - 'a'+10; } else break; i++; } return value; } int main() { int i,wert; char *ptr; ptr =buffer+2; select_gpa1(); for(i=0;i<10;i++) { get_adc(); wert=hexatoi(ptr); printf("%d/n",wert); sleep(1); } return(1); }