当前位置:  技术问答>linux和unix

s3c2410 ad驱动采集数值的诡异问题

    来源: 互联网  发布时间:2016-04-30

    本文导语:  最近在开发yc2410 arm的ad驱动,经过一段时间的调试,总算有时候可以得到正确 的数值了(注:是有时候)。结果发现,在某个地方加上一句printk语句后,就可以得到正确的电压采集值,如果不加上这一句,或者多加...

最近在开发yc2410 arm的ad驱动,经过一段时间的调试,总算有时候可以得到正确 的数值了(注:是有时候)。结果发现,在某个地方加上一句printk语句后,就可以得到正确的电压采集值,如果不加上这一句,或者多加上一句,或者换成别的语句就是死活不对(采集的电压值总是很小,大概0.5左右)。实在是很无语了 ,望各路大侠能相助。源代码我贴在下面了,那句printk我已经在程序中注明了。
首先是.h文件:
-------------------------------------------------------------
struct adc_dev {
struct semaphore sem; /* mutual exclusion semaphore */
struct cdev cdev; /* Char device structure */
};

#define adc_MAJOR 0
#define adc_MINOR 0
-------------------------------------------------------------
然后是程序主文件:

--------------------------------------------------------------------------------------------------------------------------
#ifndef __KERNEL__ 
#define __KERNEL__ 
#endif 
#ifndef MODULE 
#define MODULE 
#endif 

#define Debug_Ram4
#define vPRSCVL 49 
#define ADCRAY_IOC_MAGIC 't'
#define ADCRAY_SEL _IOW(ADCRAY_IOC_MAXNR, 0, int)//set which adc will read
#define ADCRAY_IOC_MAXNR 2
#define adc_number 8

#include  
#include  
#include  
#include  /* printk() */ 
#include  /* kmalloc() */ 
#include  /* everything... */ 
#include  /* error codes */ 
#include  /* size_t */ 
#include  
#include  /* O_ACCMODE */ 
#include  
#include  
#include  /* cli(), *_flags */ 
#include  /* copy_*_user */ 
#include 
#include 
#include 
#include "adcray.h" /* local definitions */ 
#include  /* needed for the _IOW etc stuff used later */
#include 
#include  

MODULE_LICENSE("Dual BSD/GPL"); 

static int adc_major = adc_MAJOR; 
static int adc_minor = adc_MINOR; 
static dev_t dev; 
static struct adc_dev *adc_devices; 

typedef struct _adc_trbl{
int Adc_number;
int can_be_used;//tto excluded adc port that is used for other purpose
int To_Be_Used;// 0 : not used 1 : used
}adc_trbl;

static adc_trbl adcarray [adc_number] = {
{0, 0, 0},
{1, 0, 0},
{2, 0, 0},
{3, 0, 0},
{4, 0, 0},
{5, 1, 0},
{6, 0, 0},
{7, 1, 0}
};


/* adin 0 1 2 3 4 6 are free to use while adin 5 and 7 are connected to lcd module*/
int __init adc_init(void);
void __exit adc_cleanup_module(void); 
int adc_devnum(void); 
void adc_cleanup_module(void); 
void adc_setup_cdev(struct adc_dev *dev); 
int adc_open (struct inode *inode, struct file *filp); 
ssize_t adc_read(struct file *filp, char __user *buff, size_t count, loff_t* f_pos); 
int adc_release(struct inode *inode, struct file *filp); 
int adc_ioctl(struct inode *inode, struct file *filp, unsigned int cmd, unsigned long arg);


ssize_t adc_read(struct file *filp, char __user *buff, size_t count, loff_t* f_pos) 

int result=0, i=0;
unsigned int ADCCON_Get_Val = 0, ADCCON_Set_Val=0;
int each_adc_get_val=0, ret_adc_value[adc_number];
ssize_t retval=0;

#ifdef Debug_Ram3
printk(KERN_ALERT "call read funcn");
#endif
memset(ret_adc_value, 0, adc_number* sizeof(int));

for(i=0; i ADCRAY_IOC_MAXNR) return -ENOTTY;

switch (cmd) 
{
case ADCRAY_SEL:/* arg -> which adc to read */ /* use bit 0 to bit 7 to tell which will used */
for(i =0 ;icdev, devno, 1); 


int __init adc_init(void) 

int result;

if ( (result = adc_devnum()) 

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 急需按键驱动源码 s3c2410开发板 linux-2.6.33的内核
  • S3C2410的AD驱动
  • s3c2410 linux操作系统 insmod 驱动错误 内存耗尽
  • S3C2410上SD卡驱动问题
  • S3C2410按键驱动功能实现
  • 一个简单的s3c2410键盘驱动问题
  • S3C2410 SPI驱动问题(高手敬请入场)
  • 关于S3C2410触摸屏与ADC驱动的冲突
  • 从linux2.6.22 到linux2.6.33 s3c2410 驱动的移植,哭了!!!
  • 移植Linux2.6到S3C2410,关于vivi添加Nand Flash驱动的问题?
  • S3C2410中USB无线网卡驱动的问题
  • s3c2410无线网卡
  • s3c2410开发路由器
  • 2.6内核 S3C2410 中断号怎么算啊
  • 如何利用s3c2410来计时
  • S3C2410寄存器的配置问题,请教了
  • 谁有s3c2410的USB Device Driver?
  • 在2.6.15下配置ARM s3c2410内核,无法启动munconfig,急......
  • 嵌入式s3c2410的中断处理问题
  • arm S3c2410 上面的 linux 在哪里下载啊 ???
  • s3c2410中断模块跟应用程序之间通信问题
  • 移植linux2.6.24到S3C2410却无法ping同主机
  • s3c2410中断按钮怎么消除抖动
  • 问个和硬件有关的问题:s3c2410开发板管脚
  • 对s3c2410上nand flash时序的一些问题
  • Qt采样程序中的内存访问出错(s3c2410)
  • s3c2410 linux2.6移植问题
  • s3c2410芯片,fs2410开发板出问题,连非操作系统的外围测试程序也运行不了(swi exception)
  • 如何把linux2.6.xx内核移植到s3c2410的开发半板
  • 请问大家一个问题:挂载十多M的YAFFS文件系统时,你们用了多少秒?(在s3c2410中或者其它的200M的ARM中)
  • 在S3C2410上写基于linux 的IIC程序具体怎么写啊?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3