Questions tagged «microcontroller»

紧密耦合的独立设备中包括中央处理器(CPU),内存和(通常)各种I / O外设(UART,ADC,DAC,通用I / O,I2C等)的设备包。


3
从PIC切换到AVR [关闭]
按照目前的情况,这个问题并不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 6年前关闭。 我已经与PIC16和PIC18一起工作了三年多,并且也想了解AVR。我没有特定的项目,但想尝试使用不同的体系结构。我想获得有关PIC和AVR的兼容性报告。 uC的软件 我熟悉PIC16和PIC18的Assembly和C。AVR微控制器的Assembly和C变体与PIC变体有何不同?有很多区别吗? PC的软件 我需要为AVR芯片编译和组装程序的什么软件?它是免费的,我可以在哪里下载? 编程硬件 我已经使用VOTI的Wisp648对PIC进行编程,但是该板无法对AVR进行编程。我是否必须购买程序员,或者网络上有任何我可以自行构建的电路? uC的硬件 对于PIC,我已经使用了很多PIC18F4620。我正在寻找具有类似功能的AVR。我喜欢的功能有: 内部振荡器 计时器 5V和3.3V版本 ADC 具有I2C和SPI支持的MSSP (E)USART 脉宽调制 许多I / O针脚 > = 32kB程序存储器,> = 2kB RAM DIP包装 哪种AVR芯片具有相同的功能?该软件包是一个交易突破者,我真的想要DIP,PDIP或SPDIP。具有类似功能的AVR是什么? SPI和I2C变种 有人告诉我Microchip在SPI和I2C协议上有自己的变种。我经常将微芯片的SPI和I2C从器件与PIC结合使用。我可以将这些芯片(23K256,RTC,ENC28J60等)与AVR结合使用吗?除此之外,是否可以使用I2C或SPI链接AVR和PIC芯片?

9
8位处理器如何支持超过256字节的RAM?
如果32位处理器可以处理大约4 GiB的RAM(即字节),为什么我的Arduino Mega 2560具有8 KiB的SRAM,如果是8位处理器则允许它仅处理256个字节(2 ^ 8)?还是我阅读以下页面有误?232= 4 294 967 296232=42949672962^{32} = 4 294 967 29628282^8 http://www.atmel.com/devices/atmega2560.aspx?tab=参数

5
分析加速度计数据特征并设计滤波器
我有大约32秒的基本行驶场景25MPH正常道路上的加速度计数据,还有大约7个坑洼和一段崎rough不平的道路。加速度计用双面胶带安装在我的汽车仪表板上。 问题:我获得了来自加速度计的所有嘈杂数据,我需要采取一种简单的方法来检测是否发生了坑洞事件。以下是时域和FFT的几个数据图。加速度计在GForce中进行测量 基本上,我希望我的arduino能够非常准确地知道发生了坑洞,并且没有使用研究生水平的数学和技术。 以100hz采样的加速度计在Z轴上具有一个简单的50HZ RC低通滤波器 Here is the CSV data for the 32 seconds of accelerometer readings TIME, GFORCE format: http://hamiltoncomputer.us/50HZLPFDATA.CSV 更新:这是加速度计1000HZ的RAW全带宽,可以在Arduino上以最高采样率进行采样。直接CSV文件下载:大约112秒的数据 http://hamiltoncomputer.us/RAWUNFILTEREDFULLBANDWIDTH500HZ.csv 黑色轨迹为未经过滤的RAW加速度计原始数据:蓝色轨迹由带阻滤波器根据FFT,2HZ和12HZ支配的极限频率进行过滤。 坑洞事件在时域中如下所示: 不确定FFT中10到​​15HZ的分量是什么,是实际的坑洼,还是车轮相对于道路的车轮跳动,还是汽车的共振频率? FFT: 似乎是实际的坑洞事件,这是HPF @ 13HZ坑洞的主要特征似乎增强了 我希望能够实时检测和计数坑洼 我认为悬挂应该比10到13 HZ慢很多,这会引起晕车,这是违反直觉的 更新: 根据AngryEE的建议,我使用了加速度计1000HZ的全部带宽以及在arduino上可以获得的最大采样率。 FFT: 以下是坑洼事件及其周围一些颠簸和道路噪音的数据样本: 添加了二极管包络检测器电路,输出看起来相同...加速计始终输出0至3.3V电压,而不是负电压... 更新: 在许多路试中,我在Z轴上的车中从未超过1.6G的最高45 MPH,我使用rand()生成伪随机Gforce加速。 我的想法是,如果我可以查看1到3秒的数据窗口,可以计算Z轴的位移,但是我担心加速度计的漂移以及积分误差。我不需要在这里甚至达到90%的精度,> 70%的精度就可以了,但是如果我一次只观察一到三秒钟的位移,那可以实时进行吗?这样,我可以看到位移是否大于1英寸,2英寸,5英寸。位移越大,凹凸或坑洼越粗糙: 您能否检查我是否做对了,我基本上在桌面上进行设置,使用rand()生成从-1.6到1.6 G的随机加速度,以模拟的50HZ采样率捕获3秒的数据 如果像运行* nix一样,我正在使用Windows.h中的Sleep()进行20ms延迟,50HZ采样率 我只是想看看代码是否适合您,我还没有做环形缓冲区,我对如何实现它有点困惑:注释掉的代码来自我正在为此工作的类,但我还不了解100%。循环缓冲区将允许连续移动数据窗口吗? #include <cstdlib> …

5
使用现代CPU(例如ARM)进行周期计数
在许多应用中,其指令执行与预期的输入激励具有已知时序关系的CPU可以处理如果该关系未知则需要更快CPU的任务。例如,在我使用PSOC生成视频的项目中,我使用代码每16个CPU时钟输出一个字节的视频数据。由于测试SPI设备是否准备就绪,如果不进行分支转移,则IIRC将花费13个时钟,加载和存储输出数据将花费11个时钟,因此无法测试该设备在字节之间的准备情况;取而代之的是,我只是安排让处理器在第一个字节之后的每个字节上精确执行价值16个周期的代码(我相信我使用了实际索引加载,虚拟索引加载和存储)。每行的第一次SPI写操作发生在视频开始之前,对于随后的每次写操作,都有一个16周期的窗口,在该窗口中可以进行写操作而不会导致缓冲区溢出或欠载。分支循环生成了一个13周期的不确定性窗口,但是可预测的16周期执行意味着所有后续字节的不确定性都将适合相同的13周期窗口(又适合于当写入可接受时的16周期窗口内)发生)。 对于较旧的CPU,指令时序信息是清晰,可用且明确的。对于较新的ARM,时序信息似乎更加模糊。我了解从闪存执行代码时,缓存行为会使事情难以预测,因此我希望应该从RAM执行任何周期计数的代码。即使从RAM执行代码,规范也有些含糊。使用循环计数代码仍然是一个好主意吗?如果是这样,使它可靠工作的最佳技术是什么?可以安全地假设某个芯片供应商不会在某种程度上悄无声息地使用“新改进的”芯片,从而在某些情况下缩短了某些指令的执行周期的程度? 假设以下循环在一个字边界上开始,那么如何根据规范精确地确定将花费多长时间(假设具有零等待状态内存的Cortex-M3;对于该示例,与系统无关的其他内容)。 myloop: mov r0,r0; 简短的简单说明,可以预取更多说明 mov r0,r0; 简短的简单说明,可以预取更多说明 mov r0,r0; 简短的简单说明,可以预取更多说明 mov r0,r0; 简短的简单说明,可以预取更多说明 mov r0,r0; 简短的简单说明,可以预取更多说明 mov r0,r0; 简短的简单说明,可以预取更多说明 加r2,r1,#0x12000000; 2字指令 ; 重复以下操作,可能使用不同的操作数 ; 将继续增加价值直到发生进位 itcc addcc r2,r2,#0x12000000; 2字指令,加上itcc的额外“字” itcc addcc r2,r2,#0x12000000; 2字指令,加上itcc的额外“字” itcc addcc r2,r2,#0x12000000; 2字指令,加上itcc的额外“字” itcc addcc r2,r2,#0x12000000; 2字指令,加上itcc的额外“字” ; ... etc,带有更多条件的两个单词的指令 子R8,R8,#1 bpl myloop …

4
BJT晶体管如何在饱和状态下工作?
这是我对NPN BJT(双极结型晶体管)的了解: 基极-发射极电流在集电极-发射极处被放大了HFE倍,因此 Ice = Ibe * HFE Vbe是基极-发射极之间的电压,并且与任何二极管一样,通常约为0.65V。不过,我不记得了Vec。 如果Vbe低于最小阈值,则晶体管断开,并且没有电流通过其任何触点。(好的,也许有几微安的泄漏电流,但这无关紧要) 但是我仍然有一些问题: 晶体管饱和时如何工作? 除了Vbe低于阈值以外,是否可以在某些条件下使晶体管处于打开状态? 此外,请随时指出(在答案中)我在这个问题上犯的任何错误。 相关问题: 我不在乎晶体管如何工作,如何使它工作?

9
为获得更好的性能而为嵌入式软件编写函数时的最佳方法是什么?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 2年前关闭。 我已经看到了一些用于微控制器的库,它们的功能一次只能做一件事。例如,如下所示: void setCLK() { // Code to set the clock } void setConfig() { // Code to set the config } void setSomethingElse() { // 1 line code to write something to a register. } 然后在它上面放其他功能,它使用此1行代码包含包含用于其他目的的功能。例如: void initModule() { setCLK(); setConfig(); setSomethingElse(); } 我不确定,但是我相信这样会在每次调用或退出函数时创建更多的跳转调用,并增加堆栈返回地址的开销。那样会使程序运行缓慢,对吗? 我已经搜索过,到处都在说编程的经验法则是,一个函数只能执行一个任务。 因此,如果我直接编写一个InitModule函数模块来设置时钟,添加一些所需的配置并执行其他操作而无需调用函数。编写嵌入式软件时,这是一种不好的方法吗? 编辑2: …

3
非制造商的微控制器选择地点?
我正在寻找一个可以输入所需微控制器特性的站点。我已经找到了制造商的网站...但是那些只会显示他们的微控制器。 IE有一个用于PICS的站点和一个用于AVR的站点,但是我正在寻找一个可以从所有制造商那里选择可能性的站点,除了它只是在黑暗中运行...

3
用MOSFET和微控制器驱动直流电动机?
我正在开发一个使用Atmega328微控制器,功率为3.3V的纳米四轴飞行器以及非常小的有刷直流电动机。这些电机使用的平均电流约为3.7V时为800mA。 最初,为了驱动它们,我使用了L293D电机驱动器,但是该组件效率很低。电动机以最大功率运行时测得的电流约为500mA,因此推力远低于应有的水平。 现在,要解决此问题,我将用4个逻辑电平MOSFET替换该电机驱动器。经过长时间的搜索,我找到了这个(2SK4033)。 你知道它是否应该工作吗?我必须与二极管一起使用吗?如果答案为“是”,那么这个(MBR360RLG)怎么办? 我之所以选择这些组件也是因为我可以从同一家在线商店购买它们。

7
什么是最小的微控制器?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使其成为电气工程堆栈交换的主题。 3年前关闭。 我正在寻找在空间非常有限的项目中使用的微控制器。哪些微控制器具有最小的封装?这不必是高性能的,大多数微控制器的功能要比这种情况下所需的功能强大,但是它确实必须很小。Atmel的ATtiny20采用WLCSP-12封装,尺寸为1.55x1.4x0.53mm,这还不错。这些路线或更小的路线还有哪些其他选择?(来自任何家庭,不必是Atmel) 更新:至少有4个I / O引脚。

5
我的微控制器上没有UART,如何添加一个?
我使用的是ATMEGA32HVB微控制器,该微控制器具有用于电池电量平衡的功能,通过该功能我们可以串联4个电池,一次只能使用一个。这对于电源管理非常有用,因此我不能使用其他微控制器。请提出一些添加UART的方法,以便我可以轻松地连接到串行设备。


3
非常精确的时间测量
我将尽可能准确地测量非常短的时间。该设备将获得第一个脉冲,并在150微秒内再得到六个脉冲,每个脉冲都通过自己的电线传输。第一个信号与六个其他信号中的每个信号之间的时间必须尽可能精确地测量。精度应至少为100纳秒,但更好。 哪个微控制器最适合?我发现了这个。他们似乎有一个周期为4纳秒的计时器。对我来说足够准确了。 其他一些微控制器会更好吗?可以用AVR完成吗?

5
延长5 ns脉冲
我有5 ns的脉冲宽度High从异步比较器发出。我正在尝试计算此脉冲。我当前的单片机(dsPIC33FJ)在板上具有一个异步计数器,其最小规格至少为10 ns脉冲宽度高。 我有什么选择来延长/延长这个5 ns脉冲以便计数器可以读取?我愿意切换到其他微控制器或使用质量更高的前端计数器,但是我宁愿使用无源/简单电路。这可能吗? 到目前为止,我研究了什么: 我曾尝试在输出信号和地面之间连接一个0.1uF的电容器,以希望放电会降低它的速度,但是这样做会使信号严重失真。我可以使用更低的价值吗? 我研究了采样并保持IC,但我能找到的最短采集时间约为200 ns,这不适合我的应用。

3
将LED连接到PIC的Rx引脚
我需要某种方式来了解microcontroller(PIC)是否正在接收(或传输)任何数据。因此,我想保留一个单独的位置,LED以便在发生任何数据传输时它都会闪烁。 但是我需要知道如何附加这个LED。将s 直接连接LED到PICs Tx(和Rx)引脚可以吗?我的意思是这会以某种方式影响数据传输(例如通过降低电压等)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.