历史上的今天
返回首页

历史上的今天

今天是:2025年03月09日(星期日)

正在发生

2020年03月09日 | 6410 ad 中断读取数据

2020-03-09 来源:eefocus

中断读取数,写之前一直在datasheet中找不出是什么触发中断,后来发现,数据转换完成后就触发中断。所以对相应的中断进行初始化后,打开ad转换,就可以了。


相关的register:adccon:set ad channal,转换频率(prescaler value),prescaler enable,


addcon【0】 enable ad conversion;


adcdatax :对应的data in it


adcclrint: clear interrupt ad


然后就是相关的vic的一些register了,对应的初始化就行了;


参考代码:


#include "gpio.h"

#include "adcts.h"

#include "uart.h"

#include "intc.h"

#include "system.h"

// adccon 

u8 flag = 0;

 

void IntClearAdd(void);

void AdIntInit(void);

u32 ReadData(void);

void ClearAdInt(void);

 

void AdInit(u32 freq)

{

u32 TEMP;

SYSC_GetClkInform(); 

TEMP = g_PCLK/freq -1;

ADCTS->rADCCON = (1<<14)|(TEMP<<6);

AdIntInit();

return ;

}

 

void __irq AdInt()

{

flag = 1;

//ReadData();

ClearAdInt();

IntClearAdd();

}

 

void AdIntInit()

{

ClearAdInt();

IntClearAdd();

IntVectAd(63,(u32)AdInt);

IntEnable(63);

}

void ClearAdInt()

{

ADCTS->rADCCLRINT = 0X1;

}

 

void StartAd()

{

ADCTS->rADCCON |= 0X1;

}

 

//判断是否已经转换好

u32 ReadData(void)

{

//ADCTS->rADCCON |= 0x1; //start ADC

 

//while (ADCTS->rADCCON & 0x1); //check if Enable_start is low

//while (!(ADCTS->rADCCON & 0x8000)); //check if EC(End of Conversion) flag is high

 

return ( (int)ADCTS->rADCDAT0 & 0x3ff );

}

 

void OutRead(u32 x)

{

u8 TEMP;

TEMP = (u8)x/1000;

Sendchar(TEMP);

x = x%1000;

TEMP = (u8)x/100;

Sendchar(TEMP);

x %= 100;

TEMP = (u8)x/10;

Sendchar(TEMP);

x = (u8)x%10;

Sendchar(x);

}

 

void delay(int times)

{

    int i;

    for(;times>0;times--)

      for(i=0;i<3000;i++);

}

 

int main()

{

u32 temp;

SYSTEM_EnableVIC();

SYSTEM_EnableIRQ();

UartInit();

BaudInit(9600);

AdInit(2500000);

Sendchar('r');

do{

StartAd();

while(flag == 0);

temp = ReadData();

OutRead(temp);

delay(8000);

 } while(Getchar() != 'o');

 }


intc.h


/**************************************************************************************

* Project Name : S3C6410 Validation

*

* Copyright 2006 by Samsung Electronics, Inc.

* All rights reserved.

*

* Project Description :

* This software is only for validating functions of the S3C6410.

* Anybody can use this software without our permission.

*  

*--------------------------------------------------------------------------------------

* File Name : intc.h

*  

* File Description : This file declares prototypes of interrupt controller API funcions.

*

* Author : Haksoo,Kim

* Dept. : AP Development Team

* Created Date : 2006/11/08

* Version : 0.1 

* History

* - Created(Haksoo,Kim 2006/11/08)

* - Added Software Interrupt API function (wonjoon.jang 2007/01/18)

*     - Added Interrupt Source for 6410  (2008/02/28)

*  

**************************************************************************************/

 

#ifndef __INTC_H__

#define __INTC_H__

 

#ifdef __cplusplus

extern "C" {

#endif

 

#include "library.h"

#include "def.h"

 

 

// VIC0

#define rVIC0IRQSTATUS (VIC0_BASE + 0x00)

#define rVIC0FIQSTATUS (VIC0_BASE + 0x04)

#define rVIC0RAWINTR (VIC0_BASE + 0x08)

#define rVIC0INTSELECT (VIC0_BASE + 0x0c)

#define rVIC0INTENABLE (VIC0_BASE + 0x10)

#define rVIC0INTENCLEAR (VIC0_BASE + 0x14)

#define rVIC0SOFTINT (VIC0_BASE + 0x18)

#define rVIC0SOFTINTCLEAR (VIC0_BASE + 0x1c)

#define rVIC0PROTECTION (VIC0_BASE + 0x20)

#define rVIC0SWPRIORITYMASK (VIC0_BASE + 0x24)

#define rVIC0PRIORITYDAISY (VIC0_BASE + 0x28)

 

#define rVIC0VECTADDR (VIC0_BASE + 0x100)

 

#define rVIC0VECPRIORITY (VIC0_BASE + 0x200)

 

#define rVIC0ADDR (VIC0_BASE + 0xf00)

#define rVIC0PERID0 (VIC0_BASE + 0xfe0)

#define rVIC0PERID1 (VIC0_BASE + 0xfe4)

#define rVIC0PERID2 (VIC0_BASE + 0xfe8)

#define rVIC0PERID3 (VIC0_BASE + 0xfec)

#define rVIC0PCELLID0 (VIC0_BASE + 0xff0)

#define rVIC0PCELLID1 (VIC0_BASE + 0xff4)

#define rVIC0PCELLID2 (VIC0_BASE + 0xff8)

 

 

 

#define rVIC0PCELLID3 (VIC0_BASE + 0xffc)

 

#define rVIC1IRQSTATUS (VIC1_BASE + 0x00)

#define rVIC1FIQSTATUS (VIC1_BASE + 0x04)

#define rVIC1RAWINTR (VIC1_BASE + 0x08)

#define rVIC1INTSELECT (VIC1_BASE + 0x0c)

#define rVIC1INTENABLE (VIC1_BASE + 0x10)

#define rVIC1INTENCLEAR (VIC1_BASE + 0x14)

#define rVIC1SOFTINT (VIC1_BASE + 0x18)

#define rVIC1SOFTINTCLEAR (VIC1_BASE + 0x1c)

#define rVIC1PROTECTION (VIC1_BASE + 0x20)

#define rVIC1SWPRIORITYMASK (VIC1_BASE + 0x24)

#define rVIC1PRIORITYDAISY (VIC1_BASE + 0x28)

 

#define rVIC1VECTADDR (VIC1_BASE + 0x100)

 

#define rVIC1VECPRIORITY (VIC1_BASE + 0x200)

 

#define rVIC1ADDR (VIC1_BASE + 0xf00)

#define rVIC1PERID0 (VIC1_BASE + 0xfe0)

#define rVIC1PERID1 (VIC1_BASE + 0xfe4)

#define rVIC1PERID2 (VIC1_BASE + 0xfe8)

#define rVIC1PERID3 (VIC1_BASE + 0xfec)

#define rVIC1PCELLID0 (VIC1_BASE + 0xff0)

#define rVIC1PCELLID1 (VIC1_BASE + 0xff4)

#define rVIC1PCELLID2 (VIC1_BASE + 0xff8)

#define rVIC1PCELLID3 (VIC1_BASE + 0xffc)

 

#endif

 

void IntEnable(u32 intNum)

{

u32 temp;

 

if(intNum<32)

{

temp = Inp32(rVIC0INTENABLE);

temp |= (1< Outp32(rVIC0INTENABLE, temp);

}

else

{

temp = Inp32(rVIC1INTENABLE);

temp |= (1<<(intNum-32));

Outp32(rVIC1INTENABLE, temp);

}

}

 

void IntVectAd(u32 intNum, u32 handler)

{

 

if(intNum<32) //VIC0

{

Outp32(rVIC0VECTADDR+4*intNum, (unsigned)handler);

}

else //VIC1

{

Outp32(rVIC1VECTADDR+4*(intNum-32), (unsigned)handler);

}

}

 

void IntClearAdd()

{

Outp32(rVIC0ADDR, 0); 

Outp32(rVIC1ADDR, 0);   

}

推荐阅读

史海拾趣

富信半导体(FOSAN)公司的发展小趣事

台湾第一电阻(Firstohm)公司的发展故事

故事一:创立与早期技术积累

台湾第一电阻电容器股份有限公司(Firstohm)成立于1969年,初期便专注于电阻器的生产制造。在那个电子工业刚刚起步的年代,Firstohm凭借其敏锐的市场洞察力和对技术的不懈追求,逐步在电阻器领域站稳脚跟。1970年,公司开始接受日本东京应濑无线公司的代工订单,外销至日本市场,这一合作为Firstohm打开了国际市场的大门。此后,公司不断引进和吸收先进技术,如1986年从日本横演电子精工取得的精密级金属皮膜电阻技术,为公司的技术积累奠定了坚实基础。

故事二:晶圆电阻的突破

1987年,Firstohm成功研发并量产晶圆电阻(又称MELF电阻),这一成就标志着公司在电阻器制造技术上的重大突破。晶圆电阻以其优异的性能和广泛的应用领域,迅速获得了市场的认可。Firstohm也因此成为全球少数几家具备晶圆电阻生产能力的厂商之一,为公司后续的发展奠定了技术领先地位。

故事三:国际认证与品质提升

进入21世纪,Firstohm更加重视产品品质和国际化发展。2001年,公司获得ISO14001 Green Dove奖项及ISO9001认证,标志着公司在环境管理和质量管理方面达到了国际先进水平。此后,公司不断通过国际认证,如ISO9001:2008、IECQ品质认证等,进一步提升了产品的竞争力和市场信誉。这些认证不仅是对公司产品质量的认可,也为公司拓展国际市场提供了有力支持。

故事四:创新产品的研发

Firstohm始终坚持创新驱动发展战略,不断推出符合市场需求的新产品。例如,2012年,公司间隙式突波吸收器(SGS)获得日本、中国大陆及韩国专利许可;2017年,成功开发AEC-Q200车规级晶圆电阻;2020年,又成功开发出心电导线图(ECG cable)专用电阻器SSWAT系列。这些创新产品的研发和推出,不仅丰富了公司的产品线,也进一步巩固了公司在电阻器领域的市场地位。

故事五:自动化生产与全球化布局

随着电子行业的快速发展和市场竞争的加剧,Firstohm不断加大在自动化生产和全球化布局方面的投入。公司生产线高度自动化,生产效率和产品品质显著提升。同时,Firstohm积极拓展海外市场,与全球多家知名电子企业建立了长期稳定的合作关系。例如,与美国通用、THOMSON、法国雷诺等公司的合作,不仅提升了公司的品牌知名度,也为公司带来了更多的市场机遇和发展空间。

集创北方(CHIPONE)公司的发展小趣事

在显示芯片领域,集创北方是国产化替代的积极推动者。公司凭借自身在显示芯片领域的深入研究和创新实力,成功打破了国外厂商的技术垄断,为国内厂商提供了更多选择。同时,集创北方还积极参与行业标准制定,推动了国内显示芯片产业的健康发展。

AC Interface Inc公司的发展小趣事

ABC Electronics Inc. 起初是一家小型电子元件供应商,专注于为本地市场提供基本的电子零部件。然而,随着技术的快速发展,公司创始人意识到,只有不断创新才能在竞争激烈的市场中立足。于是,ABC Electronics 开始投入大量资源研发具有竞争力的新产品。经过数年的努力,公司成功推出了一款具有高效能、低能耗特点的电源管理芯片,迅速获得了市场的认可。这一创新产品不仅为公司带来了可观的利润,也奠定了其在电子行业的技术领先地位。

DLG Hanbit公司的发展小趣事

面对数字化转型的浪潮,DLG Hanbit公司积极拥抱变革。公司加大了对云计算、大数据、人工智能等技术的研发投入,推出了一系列智能电子产品和解决方案。同时,公司还加强了与互联网企业、电信运营商等合作伙伴的合作,共同打造智能生态圈。未来,DLG Hanbit公司将继续秉承创新、品质、环保的理念,致力于成为全球领先的半导体设计和制造企业。

Dow-Key Microwave Corporation公司的发展小趣事

为了实现公司的国际化发展战略,Dow-Key Microwave积极开展国际合作与交流。公司与全球知名的电子企业和研究机构建立了紧密的合作关系,共同开展技术研发和市场开拓活动。这些合作不仅提升了公司的技术水平和市场影响力,还为公司的国际化发展提供了有力支持。同时,公司还积极参与国际展览和论坛活动,展示公司的最新技术和产品成果,进一步提升了公司的国际知名度和品牌形象。

aconno公司的发展小趣事

aconno公司在电子行业的崛起,始于其坚持创新驱动的发展策略。早年公司便投入大量资源进行技术研发,尤其是在物联网和嵌入式系统领域。通过不断推出具有创新性和实用性的产品,aconno逐渐在市场中建立了良好的口碑。例如,其自主研发的一款智能传感器,因其高灵敏度和稳定性受到了市场的广泛认可。随着技术的不断积累和创新,aconno逐渐在行业中崭露头角。

问答坊 | AI 解惑

流程序开发指南(英)希望这个东西对大家有用。

这是一般讨论流设备程序开发的书籍,希望对兄弟姐妹们的工作有所帮助。…

查看全部问答>

数控电流源资料论文

本帖最后由 paulhyde 于 2014-9-15 09:05 编辑 如果感兴趣,就看看吧,大家互相帮助。word 文档 [ 本帖最后由 ceolach 于 2009-6-4 14:35 编辑 ]  …

查看全部问答>

求指导

本帖最后由 paulhyde 于 2014-9-15 09:40 编辑 有人知道ad811芯片怎么搭建才能实现功能吗,datasheet上的电路好像不行  …

查看全部问答>

菜鸟也谈各单片机的特点

在网上看到许多有关MCU的问题和评论 也许其中有很多是枪手写的 其实我没有真正的用过任何的MCU 说以有错的地方请高手指正 STC 最国产 频率打五折用 AVR 最老龄死 就他没样片 超级孤寒 PIC 卖广告最多 超常在教材上花心思 MSP430功耗最大 说 ...…

查看全部问答>

点到点通信毫米波应用

BridgeWave Communications是能够提供完整的点到点毫米波链路解决方案的公司之一,公司在全球部署有数千台60和80GHz的无线千兆比特设备。该公司的毫米波无线设备支持局域网(LAN)干线扩展、移动电话回传应用以及大容量互联网接入。他们提供的无线系 ...…

查看全部问答>

生成NK.nb0的大小(CE6.0)

能否让Nk.Nb0的大小自动变化? 现在我的NK.NB0大小都一定会等于config.bib文件中定义的大小。 里边的ROMSIZE等于多大,NK.NB0就一定是多大。 请教…

查看全部问答>

wince系统在线播放youtube的问题

我们在为客户开发一款机器,使用pxa270的cpu,客户要求可以在线播放youtube视频。 使用IE上Youtube的网站,总是自动转到youtube的mobile版,视频是3gp格式的,点击播放自动弹出mediaplay,但是提示连接不上服务器。如果上youtube的桌面版,则提示f ...…

查看全部问答>

如何实现类似1008的功能

各位,我现在想实现这样的功能: 1、从数据库中获取电话号码后(如:12345),通过拨号按钮直接拨到此电话上(12345)。 2、拨通后,接受的电话(12345)可以听到一段录音,然后按提示选择对应的功能健。比如按1同意,按2不同意,按3转人工。 3 ...…

查看全部问答>

wince 图形绘制问题

不知道wince 支持 DirectX么? 支持 gdi+么? 各位大虾:不知道wince上,你们是怎么绘制图形?…

查看全部问答>