亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
樓主: ady2002
打印 上一主題 下一主題

請教一個(gè)ADC0809驅(qū)動(dòng)的問題,高人進(jìn) [復(fù)制鏈接]

論壇徽章:
36
IT運(yùn)維版塊每日發(fā)帖之星
日期:2016-04-10 06:20:00IT運(yùn)維版塊每日發(fā)帖之星
日期:2016-04-16 06:20:0015-16賽季CBA聯(lián)賽之廣東
日期:2016-04-16 19:59:32IT運(yùn)維版塊每日發(fā)帖之星
日期:2016-04-18 06:20:00IT運(yùn)維版塊每日發(fā)帖之星
日期:2016-04-19 06:20:00每日論壇發(fā)貼之星
日期:2016-04-19 06:20:00IT運(yùn)維版塊每日發(fā)帖之星
日期:2016-04-25 06:20:00IT運(yùn)維版塊每日發(fā)帖之星
日期:2016-05-06 06:20:00IT運(yùn)維版塊每日發(fā)帖之星
日期:2016-05-08 06:20:00IT運(yùn)維版塊每日發(fā)帖之星
日期:2016-05-13 06:20:00IT運(yùn)維版塊每日發(fā)帖之星
日期:2016-05-28 06:20:00每日論壇發(fā)貼之星
日期:2016-05-28 06:20:00
21 [報(bào)告]
發(fā)表于 2008-11-17 17:11 |只看該作者
我覺得如果使用中斷方式的話,那么很可能啟動(dòng)AD就是中斷函數(shù)中對相關(guān)的引腳職位。你看一下ADC0809哪個(gè)引腳時(shí)代表啟動(dòng)AD的,并且確定高電平還是低電平代表啟動(dòng)AD。

然后,在你的程序里面看一下哪個(gè)地方定義了這個(gè)引腳,哪些地方對這些引腳進(jìn)行了賦值等操作。

論壇徽章:
0
22 [報(bào)告]
發(fā)表于 2008-11-17 17:13 |只看該作者
原帖由 Godbach 于 2008-11-17 16:43 發(fā)表
一般AD采集的時(shí)候,write函數(shù)是用不上的。偶覺得?刂泼钜话愣纪ㄟ^ioctl來實(shí)現(xiàn),用戶空間除了發(fā)送命令之外,就剩下讀取轉(zhuǎn)換的數(shù)據(jù)了。而在用DAC的時(shí)候,是需要用write而用不上read的。

恩,我也是這么理解的。但是 我的這個(gè)驅(qū)動(dòng)中 就是看不懂ioctl這個(gè)函數(shù)到底是怎么工作的。
int adc0809_ioctl(struct inode *inode,
                 struct file *flip,
                 unsigned int command,
                 unsigned long arg)
{
     int err = 0;
     switch (command) {
case IOCTRL_ADC_0:
adc_write_addr = ADC_0;
//printk("adc0809_ioctl: adc addr: %x\n",adc_write_addr);
/* start collect and convert */
(*(volatile unsigned char *) adc_write_addr) = (char) arg;
return 0;
case IOCTRL_ADC_1:
adc_write_addr = ADC_1;
(*(volatile unsigned char *) adc_write_addr) = (char) arg;
return 0;
case IOCTRL_ADC_2:
adc_write_addr = ADC_2;

書上是說 ioctl用來選著 相應(yīng)的管腳(ADC_0.1.2.3...)和觸發(fā)中斷。
不解的是函數(shù)這里只是一個(gè)地址的傳遞,怎么就實(shí)現(xiàn)了對管腳的選著呢???還有下面只是對相應(yīng)的地址賦值,怎么又是觸發(fā)了中斷呢。最主要就是這里看不懂郁悶啊

論壇徽章:
0
23 [報(bào)告]
發(fā)表于 2008-11-17 17:14 |只看該作者
原帖由 dreamice 于 2008-11-17 16:42 發(fā)表


中斷的觸發(fā)前提是你注冊了這個(gè)中斷以及中斷處理函數(shù)。它實(shí)際上做的工作很簡單,一個(gè)io映射,然后把讀取的數(shù)據(jù)的存到data,就ok了。

一個(gè)io映射 這個(gè)我是不是可以理解為對數(shù)據(jù)進(jìn)行一次刷新,要不然數(shù)據(jù)無法更新,對與ADC0809管腳設(shè)置是無關(guān)的

論壇徽章:
0
24 [報(bào)告]
發(fā)表于 2008-11-17 17:16 |只看該作者
原帖由 Godbach 于 2008-11-17 17:07 發(fā)表
對了,既然是你們買的嵌入式的板子。那應(yīng)該給的有使用手冊。AD部分沒有數(shù)據(jù)采集的例程嗎?

大哥  這個(gè)就是自帶的例程哦  郁悶哦
我是想在上面加個(gè)定時(shí)時(shí)鐘中斷的  看是沒看懂中斷觸發(fā)到底怎么回事  就不知道怎么加了哦

論壇徽章:
3
金牛座
日期:2014-06-14 22:04:062015年辭舊歲徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:45
25 [報(bào)告]
發(fā)表于 2008-11-17 17:16 |只看該作者
原帖由 ady2002 于 2008-11-17 17:01 發(fā)表

  在驅(qū)動(dòng)中是這個(gè)函數(shù):ssize_t adc0809_read(struct file *filp, char * buf,
                size_t size, loff_t *offp)
GOD大哥
我也是想實(shí)現(xiàn)   我做數(shù)據(jù)采集的時(shí)候,一般就是將AD配置之后,啟動(dòng)AD即 ...


你這個(gè)應(yīng)用的話就很簡單了啊。根本不需要ad的中斷了,讓定時(shí)器定時(shí)讀AD數(shù)據(jù)就是了,然后傳給應(yīng)用層就ok,沒畢業(yè)去while(),while簡直是吃CPU的程序。

論壇徽章:
36
IT運(yùn)維版塊每日發(fā)帖之星
日期:2016-04-10 06:20:00IT運(yùn)維版塊每日發(fā)帖之星
日期:2016-04-16 06:20:0015-16賽季CBA聯(lián)賽之廣東
日期:2016-04-16 19:59:32IT運(yùn)維版塊每日發(fā)帖之星
日期:2016-04-18 06:20:00IT運(yùn)維版塊每日發(fā)帖之星
日期:2016-04-19 06:20:00每日論壇發(fā)貼之星
日期:2016-04-19 06:20:00IT運(yùn)維版塊每日發(fā)帖之星
日期:2016-04-25 06:20:00IT運(yùn)維版塊每日發(fā)帖之星
日期:2016-05-06 06:20:00IT運(yùn)維版塊每日發(fā)帖之星
日期:2016-05-08 06:20:00IT運(yùn)維版塊每日發(fā)帖之星
日期:2016-05-13 06:20:00IT運(yùn)維版塊每日發(fā)帖之星
日期:2016-05-28 06:20:00每日論壇發(fā)貼之星
日期:2016-05-28 06:20:00
26 [報(bào)告]
發(fā)表于 2008-11-17 17:19 |只看該作者
不解的是函數(shù)這里只是一個(gè)地址的傳遞,怎么就實(shí)現(xiàn)了對管腳的選著呢???


你找一下中斷對應(yīng)的是哪個(gè)引腳。每個(gè)引腳都會(huì)對應(yīng)的有地址,那對相應(yīng)的地址寫入1或0,就相當(dāng)于對該引腳上設(shè)置的高或低電平。中斷引腳上一旦出現(xiàn)高低電平的切換,應(yīng)該就會(huì)出發(fā)中斷。就會(huì)按照你中斷函數(shù)的方式執(zhí)行。

論壇徽章:
0
27 [報(bào)告]
發(fā)表于 2008-11-17 17:19 |只看該作者
原帖由 Godbach 于 2008-11-17 17:11 發(fā)表
我覺得如果使用中斷方式的話,那么很可能啟動(dòng)AD就是中斷函數(shù)中對相關(guān)的引腳職位。你看一下ADC0809哪個(gè)引腳時(shí)代表啟動(dòng)AD的,并且確定高電平還是低電平代表啟動(dòng)AD。

然后,在你的程序里面看一下哪個(gè)地方定義了 ...

但是我不解的是 中斷函數(shù)中
只有這么幾句
void adc0809_interrupt(int irq,void *d,struct pt_regs *regs)
{
SRCPND &= (~0x00000004);    //clear interrupt (bit2)  設(shè)置中斷為2號(hào)外部中斷
INTPND = INTPND;      //不知道什么意思
printk("interrupt process!\n");
adc_read_addr = ioremap(0x10000020,4);  //地址映射
data = (*(volatile unsigned long *) adc_read_addr); //賦值

}
和ADC0809的引角設(shè)置無關(guān)哦  苦惱i

論壇徽章:
36
IT運(yùn)維版塊每日發(fā)帖之星
日期:2016-04-10 06:20:00IT運(yùn)維版塊每日發(fā)帖之星
日期:2016-04-16 06:20:0015-16賽季CBA聯(lián)賽之廣東
日期:2016-04-16 19:59:32IT運(yùn)維版塊每日發(fā)帖之星
日期:2016-04-18 06:20:00IT運(yùn)維版塊每日發(fā)帖之星
日期:2016-04-19 06:20:00每日論壇發(fā)貼之星
日期:2016-04-19 06:20:00IT運(yùn)維版塊每日發(fā)帖之星
日期:2016-04-25 06:20:00IT運(yùn)維版塊每日發(fā)帖之星
日期:2016-05-06 06:20:00IT運(yùn)維版塊每日發(fā)帖之星
日期:2016-05-08 06:20:00IT運(yùn)維版塊每日發(fā)帖之星
日期:2016-05-13 06:20:00IT運(yùn)維版塊每日發(fā)帖之星
日期:2016-05-28 06:20:00每日論壇發(fā)貼之星
日期:2016-05-28 06:20:00
28 [報(bào)告]
發(fā)表于 2008-11-17 17:19 |只看該作者
原帖由 dreamice 于 2008-11-17 17:16 發(fā)表


你這個(gè)應(yīng)用的話就很簡單了啊。根本不需要ad的中斷了,讓定時(shí)器定時(shí)讀AD數(shù)據(jù)就是了,然后傳給應(yīng)用層就ok,沒畢業(yè)去while(),while簡直是吃CPU的程序。


while中一定要加上延遲,不然的話CPU就被他一個(gè)給占用了

論壇徽章:
0
29 [報(bào)告]
發(fā)表于 2008-11-17 17:22 |只看該作者
原帖由 dreamice 于 2008-11-17 17:16 發(fā)表


你這個(gè)應(yīng)用的話就很簡單了啊。根本不需要ad的中斷了,讓定時(shí)器定時(shí)讀AD數(shù)據(jù)就是了,然后傳給應(yīng)用層就ok,沒畢業(yè)去while(),while簡直是吃CPU的程序。

dreamice  你說到重點(diǎn)了
呵呵
我其實(shí)就是想在驅(qū)動(dòng)中實(shí)現(xiàn) 定時(shí)器定時(shí)讀AD數(shù)據(jù)哦 但是 沒辦法實(shí)現(xiàn)啊
能不能教教我??2410的定時(shí)器 timer我已經(jīng)知道怎么使用了  就是不知道怎么把兩者結(jié)合起來

論壇徽章:
36
IT運(yùn)維版塊每日發(fā)帖之星
日期:2016-04-10 06:20:00IT運(yùn)維版塊每日發(fā)帖之星
日期:2016-04-16 06:20:0015-16賽季CBA聯(lián)賽之廣東
日期:2016-04-16 19:59:32IT運(yùn)維版塊每日發(fā)帖之星
日期:2016-04-18 06:20:00IT運(yùn)維版塊每日發(fā)帖之星
日期:2016-04-19 06:20:00每日論壇發(fā)貼之星
日期:2016-04-19 06:20:00IT運(yùn)維版塊每日發(fā)帖之星
日期:2016-04-25 06:20:00IT運(yùn)維版塊每日發(fā)帖之星
日期:2016-05-06 06:20:00IT運(yùn)維版塊每日發(fā)帖之星
日期:2016-05-08 06:20:00IT運(yùn)維版塊每日發(fā)帖之星
日期:2016-05-13 06:20:00IT運(yùn)維版塊每日發(fā)帖之星
日期:2016-05-28 06:20:00每日論壇發(fā)貼之星
日期:2016-05-28 06:20:00
30 [報(bào)告]
發(fā)表于 2008-11-17 17:22 |只看該作者
int adc0809_ioctl(struct inode *inode,
                 struct file *flip,
                 unsigned int command,
                 unsigned long arg)


你要傳遞的參數(shù)是通過arg實(shí)現(xiàn)的。arg代表的是你傳遞參數(shù)的地址。譬如你要將a=1傳下去,那么就要轉(zhuǎn)變?yōu)?unsigned long ) &a傳給arg
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP