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);
}


