OE5TPO - Analog Digital Wandler

Gastbeitrag

Dieser Beitrag wurde von einem Gastautor geschrieben!

Analog Digital Wandler

Linux Board

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

Hat ihnen der Beitrag gefallen?, wenn ja teilen sie ihn

Kommentare

VerÖffentlichen Sie ihre Kommentare ...