hye all. im new in using mini2440 and linux. is there any example or any tutorial that can teach me how to read signal from AIN0 pin? let say, i want to connect sine wave to that pin and i want to read it and appear its Vpeak. is it possible? thanx!
how to read from AIN0 pin
hello experts.
i have problem in running my program to read from AIN0. below is my program
that i compile using fedora.
#include <stdio.h>
int main()
{
int value, i, fd = open ("cat /dev/adc", 0);
unsigned int add = 0, ret;
int LOOPS=-1;
if (fd <0) {
printf ("cannot open n device adc!\n");
return -1;
}
for (i = 0; i <LOOPS; i ++)
{
char buffer [30];
int len = read (fd, buffer, sizeof(buffer) -1);
if (len>0)
{
buffer [len] = '0';
value = -1;
sscanf (buffer, "%d", &value);
printf (buffer, "%d", &value);
}
else
{
printf ("cannot read from adc device n!");
close (fd);
return -1;
}
}
close (fd);
return 0;
}
with using fedora, there's nothing wrong with this program. however when i
run the obj file using mini2440, an error occur. the error state :
line 1: syntax error: "(" unexpected.
please do help me!
thnax
int LOOPS=-1; Shouldn't that be int loops = 1; Also values like LOOPS are perhaps better done like: #define LOOPS 1 and put it before main() for visibility and ease of changing. Capitalising is usually done for macros, like the above.
thanx Dave. i already change both. and there are 4 errors appear such as : line 3: 4: not found line 3: EL-:not found line 4: syntax error: E0F in backquote and another one error is unreadable. is there any other ways for me to read a signal from AIN in a simple program? cause i had tried "cat /dev/adc" but the number appears are non-stop. sorry for lots of question. but i need it for my project. thanx.
hello again.
i forgot to tell you that before this i tried to run an examples given
about the adc-test. but there are 2 error appear as below :
./adc-test: line 1:ELF4: not found
./adc-test: line 2: syntax error: "(" unexpected
this is the source code from example in mini2440 dvd:
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/ioctl.h>
#include <fcntl.h>
#include <linux/fs.h>
#include <errno.h>
#include <string.h>
int main(void)
{
fprintf(stderr, "press Ctrl-C to stop\n");
int fd = open("/dev/adc", 0);
if (fd < 0) {
perror("open ADC device:");
return 1;
}
for(;;) {
char buffer[30];
int len = read(fd, buffer, sizeof buffer -1);
if (len > 0) {
buffer[len] = '\0';
int value = -1;
sscanf(buffer, "%d", &value);
printf("ADC Value: %d\n", value);
} else {
perror("read ADC device:");
return 1;
}
usleep(500* 1000);
}
close(fd);
}
is that my mini2440 had problem??or i should install something on it?
About 1 year ago I modified, compiled and ran that same program ... so it
is possible.
I suspect there is a problem in the way your toolchain is set up.
Have you EXPORTed your PATH and the standard compile environment variables,
for example:
export PATH=/usr/local/arm/4.3.2/bin:$PATH
# general cross-compile
export CROSS_COMPILE=arm-none-linux-gnueabi-
export CC=${CROSS_COMPILE}gcc
export CFLAGS=-march=armv4t
# -mtune=arm920t not a valid identifier
# -O0 -msoft-float -D__GCC_FLOAT_NOT_NEEDED
export CXX=${CROSS_COMPILE}"g++"
export AR=${CROSS_COMPILE}"ar"
export AS=${CROSS_COMPILE}"as"
export RANLIB=${CROSS_COMPILE}"ranlib"
export LD=${CROSS_COMPILE}"ld"
export STRIP=${CROSS_COMPILE}"strip"
Good luck.
hi davef. thanx for answer me. i have few question. where should i EXPORTed your PATH and the standard compile environment variables? is it in fedora where i compile my source code before i run the object file in mini2440? sorry for asking so many question.
You cross-compile your source on the fedora host. Have you installed a cross-compile toolchain on the host? Find gcc 4.4.1 on the downloads page. I would suggest you read through the tutorials at this site: http://billforums.station51.net/ and then get back with specific questions.
thanx davef! i do have installed a cross-compiler. but when i compile the program, i compile it using another pc. and i forgot that im not installed the cross-compiler on that pc. im waste my time wondering why. however, its all settle. and i succeed to run in on mini2440. thanx davef for answering my stupid mistake! thanx again! :)


