c*u 发帖数: 916 | 1 最近又需要搞一个控制电路,我想好象用单片机实现会比较容易一些,但是单片机我
不是很熟,有没有高手能够指导一二,推荐一款单片机,
要求是:
1。最好有一个12bit A/D接口,
2。最好有两个12 Bit DAC
3。要能够在收到一个A/D输入后,比较阈值,5微秒内开始输出到DAC,输出后每毫秒
refresh 4-5个点,这些点可以从内存大table里读取,或者有公式产生,(估计
从table里读取会比较快)。要同时输出俩组不同的信号(分别到两个DAC上)。
我尝试了ADI的ADUC7026,发现那个片子因为没有DMA,中断后输出一个点最少要
100多个cycles,也就是2.5微秒以上,不符合要求,有没有更好的片子? |
b*****e 发帖数: 1193 | |
c*u 发帖数: 916 | 3 那个ADUC7026倒是AD,DA精度度足够了,看上去41.78 MHz的主频也足够了,但是我一
开始没有注意,试验之后发现那个片子的中断响应就算是FIQ,也要将近50 cycles,
从中断出来可能也要40cycle,然后我的中断程序本身占了20个左右的cycle,一个
中断就奔着100 cycles去了 :(
【在 b*****e 的大作中提到】 : AD,DA精度高,很难用合适的独立单片机实现
|
l***g 发帖数: 1035 | 4 what is your DA for in your application?
【在 c*u 的大作中提到】 : 最近又需要搞一个控制电路,我想好象用单片机实现会比较容易一些,但是单片机我 : 不是很熟,有没有高手能够指导一二,推荐一款单片机, : 要求是: : 1。最好有一个12bit A/D接口, : 2。最好有两个12 Bit DAC : 3。要能够在收到一个A/D输入后,比较阈值,5微秒内开始输出到DAC,输出后每毫秒 : refresh 4-5个点,这些点可以从内存大table里读取,或者有公式产生,(估计 : 从table里读取会比较快)。要同时输出俩组不同的信号(分别到两个DAC上)。 : 我尝试了ADI的ADUC7026,发现那个片子因为没有DMA,中断后输出一个点最少要 : 100多个cycles,也就是2.5微秒以上,不符合要求,有没有更好的片子?
|
c*u 发帖数: 916 | 5 一个控制一个号称99.9%准确地galvo-motor,另外一个控制一个Piezo,理论上如果
over-sample by 2, 11-bit DAC就够了,
【在 l***g 的大作中提到】 : what is your DA for in your application?
|
b*****e 发帖数: 1193 | 6 如果进出中断用的时间太多,何不用polling 的方式作? |
c*u 发帖数: 916 | 7 polling 不 work, 中断使用external crystal clock控制,时间精度是30ppm,polling
使用Core的clock,有3%的偏差可能。3%的偏差将使这个片子和系统别的东西产生时差,
【在 b*****e 的大作中提到】 : 如果进出中断用的时间太多,何不用polling 的方式作?
|
b*****e 发帖数: 1193 | 8 mpc5554,12bit AD, 132Mhz,有DMA
DA用别的办法了,比如PWM了,或者独立芯片 |
n******g 发帖数: 662 | 9 MSP430 would work for you. |
a****l 发帖数: 8211 | 10 not quite sure what you mean. For 1MHz clock, 1 cycle is 1uS, so 100 cycles
is 0.1mS.
【在 c*u 的大作中提到】 : 最近又需要搞一个控制电路,我想好象用单片机实现会比较容易一些,但是单片机我 : 不是很熟,有没有高手能够指导一二,推荐一款单片机, : 要求是: : 1。最好有一个12bit A/D接口, : 2。最好有两个12 Bit DAC : 3。要能够在收到一个A/D输入后,比较阈值,5微秒内开始输出到DAC,输出后每毫秒 : refresh 4-5个点,这些点可以从内存大table里读取,或者有公式产生,(估计 : 从table里读取会比较快)。要同时输出俩组不同的信号(分别到两个DAC上)。 : 我尝试了ADI的ADUC7026,发现那个片子因为没有DMA,中断后输出一个点最少要 : 100多个cycles,也就是2.5微秒以上,不符合要求,有没有更好的片子?
|
|
|
c*u 发帖数: 916 | 11 谢谢,明天研究一下。
【在 b*****e 的大作中提到】 : mpc5554,12bit AD, 132Mhz,有DMA : DA用别的办法了,比如PWM了,或者独立芯片
|
c*u 发帖数: 916 | 12 Thank you too.
【在 n******g 的大作中提到】 : MSP430 would work for you.
|
c*u 发帖数: 916 | 13 一般的单片机clock不止1MHz,ADI的那个ADUC702x clock是41.78MHz,100 cycle大约
2.5us。
cycles
【在 a****l 的大作中提到】 : not quite sure what you mean. For 1MHz clock, 1 cycle is 1uS, so 100 cycles : is 0.1mS.
|
f*****0 发帖数: 489 | 14 in this case, you may want to use a dedicated adc, with a multiplexer, or
two adc for speed, plus a mcu.
most onboard adc in mcus (PIC for example) wouldn't be fast enough for you.
on the flipside, you don't really need that much precision / speed to
control a motor. |
a****l 发帖数: 8211 | 15 you are definitely right. This is the reason why I am wondering why this 100
cycle delay is making LZ to miss the 5mS deadline.
【在 c*u 的大作中提到】 : 一般的单片机clock不止1MHz,ADI的那个ADUC702x clock是41.78MHz,100 cycle大约 : 2.5us。 : : cycles
|
f*****0 发帖数: 489 | 16 unless you have a fast acting motor, even 100ms wouldn't have mattered. |
c*u 发帖数: 916 | 17 sorry, my mistake, suppose to be us, not ms in the original post
100
【在 a****l 的大作中提到】 : you are definitely right. This is the reason why I am wondering why this 100 : cycle delay is making LZ to miss the 5mS deadline.
|
c*u 发帖数: 916 | 18 The piezo I am driving is a very fast one. It's resonant freq is around
10kHz. I am far away from it's resonance, therefore it's a little easier.
Still, to correctly drive it, I have to input a weird looking voltage
function to make it vibrate linearly.
【在 f*****0 的大作中提到】 : unless you have a fast acting motor, even 100ms wouldn't have mattered.
|
a****l 发帖数: 8211 | 19 oops, that's a gigantic difference. ms is very easy, us is very difficult.
【在 c*u 的大作中提到】 : sorry, my mistake, suppose to be us, not ms in the original post : : 100
|