Questions tagged «microcontroller»

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


2
通过串行实现MCU的控制命令
我希望将命令界面集成到一个项目中,该项目使我可以接受来自PC的命令。 这个想法是设备将执行其操作,但会收到命令,它将执行该命令。这与我设法找到的大多数示例不同,这只是一个等待串行数据的空闲设备。 因此,例如,一个控制LED并播放动画的设备。假设有3个预设动画,当它打开时,它始终播放数字1。在PC端,我将发送命令“播放预设2”,或“将颜色更改为绿色”,或向设备发送实时实时动画在LED上播放。 所以我的问题是我找不到关于这种“设计模式”的太多信息吗?我不知道从哪里开始。我最接近的是预制的arduino串行解析库。但是我正在寻找更多的C /非arduino /理论方法。 我已经研究了串行协议,但这仅仅是诸如SPI和I2C之类的东西,而不是实际上如何在软件中实现控制/命令接口的东西。 我还发现了有关HDLC的信息,尽管它似乎更多是一种标准/协议。一个类似的线程是 /programming/1445387/how-do-you-design-a-serial-command-protocol-for-an-embedded-system, 它具有一些非常好的信息,但同样可以做与协议/通信本身。 我试图找到如何编码/实现此功能以创建命令或控制能力。 我是否使用无限循环来监视和捕获传入命令的序列,并使用IF语句列表选择要执行的命令,但是当没有命令且系统应该正常运行时,或者如果它正常运行,会发生什么情况?错过命令? 中断驱动的状态机? 是否有官方名称可用于研究和查找示例? 编辑: 对于任何有相同问题的人,我在研究时都发现了一个非常不错的示例, http://www.adnbr.co.uk/articles/parsing-simple-usart-commands

1
我们如何实际控制120个LED?
如该网站所示,仅需用17根导线控制120个LED,这些导线连接到设置为OUTPUT的引脚。 我知道如何控制下面的线对中的至少一个二极管,但是当我们要打开整个电路板时会发生什么呢?那可能吗?更具体地说,例如,如何打开相邻的LED以形成正方形? 我希望这个问题不要太愚蠢。

1
AVR:超频ADC
这是来自ATmega32数据表的报价: By default, the successive approximation circuitry requires an input clock frequency between 50kHz and 200kHz to get maximum resolution. If a lower resolution than 10 bits is needed, the input clock frequency to the ADC can be higher than 200kHz to get a higher sample rate. 我打算使用8位ADC。问题是:我能走到200kHz以上多少?我在数据表中找不到有关此的任何信息。是否可以使用64或32的预分频器,从而在uC以16MHz运行时分别以250kHz或500kHz运行ADC而没有转换错误?超出规范的ADC可能带来什么后果?

3
您可以为PIC微控制器选择任何晶体吗?
我正在使用PIC16F690,我知道内部振荡器具有某些值(20,8,4 ...)。 我想放置一个外部8MHz晶体,但只能找到8.8MHz或7.6MHz。 我想知道是否可以将其中的任何一个放到PIC上,还是必须精确地是8MHz?另外,我该如何选择每个电容器?

1
选择一个32位微控制器
现在大多数供应商都提供各种各样的ARM Cortex-M芯片,为什么要选择瑞萨或飞思卡尔产品呢?我了解,由于某些人熟悉工具等,因此有理由使用PIC32,也有理由使用TI或Atmel的16位或8位MCU,因为他们可能认为它更适合他们的设计,但是为什么是否想使用Renesas RX或Freescale ColdFire?

5
是什么导致UART错误?
我想知道为什么会发生UART错误,以及何时应检查此类错误。这里有一篇帖子,询问如何处理单个错误,例如超限,奇偶校验等。我很清楚为什么会发生数据超限,为什么会发生奇偶校验错误,但是我想知道根本原因是什么。我的问题更集中于为什么会发生这些错误(物理原因),以及何时应将错误检查作为其应用的一个因素。 到目前为止,我的程序似乎运行良好(没有错误检查),但是我知道噪音可能会使事情变得混乱。如何模拟可能导致UART Rx / Tx端口出现故障的情况?

3
L3G4200D随机峰值
我已经在有关L3G4200D陀螺仪的问题上搜索了一下这个论坛,但没有看到提到的问题,但是我在其他论坛上看到了其他人在谈论它。当陀螺仪静止时,我在输出中看到一个奇怪的大值。不幸的是,似乎没有人能够回答为什么会这样,所以我想问一下 因此,我正在使用i2c以400kHz(快速模式)从陀螺仪收集数据,并使用多字节读取(一次六个字节)收集陀螺仪数据。以100Hz采样(也尝试了最高800Hz),还尝试了在不同值处打开和关闭滤波。我没有使用中断引脚,而是在GYRCTRLREG4中使用了“块数据更新”属性,以便在读取LSB和MSB之前都不会输出数据。满2000dps,对FIFO没做任何事情。如果有帮助,我可以发布确切的寄存器值,但是图大多数人都没有数据手册。 下图显示了我的问题。输出的数据良好,据我所知正确计算,并且一般噪声是可以接受的。但是后来我注意到,当设备静止时,这些烦人的“斑点”会随机出现。如果我将其静置几秒钟,我将获得其中一个峰值,始终等于250-255(转换后约为18,使用'(输出* 70)/ 1000')。正如我所说,这些峰值是随机的,可以出现在任何平面中(在下图中,您可以看到X平面中的第一个峰值,Y方向中的第二个峰值),始终在相同的值附近,以及一个,两个或全部三个可以同时发生。大值仅用于单个样本,然后恢复正常。 如前所述,我在另一个线程中看到应该在GYRCTRLREG4中使用块数据等待功能,但没有任何变化。我将问题缩小到MSB为零或更高(即正数)时,然后将MSB和LSB合并时,我得到了这些大数。例如,我抓取X平面所需的两个字节,在LSB中得到-6,在MSB中得到0,将它们组合起来得到250,然后转换为(250 * 70)/ 1000 = 17.5 dps(即对于固定/错误而言太大)。在同一样本中,Y平面的两个字节是-3 LSB和-1 MSN,将它们组合在一起得到-3,而转换得到-0.21(即,期望/正确)。 几天来一直在解决这个问题,我的磁力计也看到了一些随机峰值,所以我想这是我通过i2c读取设备错误吗? 任何建议或尝试的事情都非常欢迎!

5
我可以控制微控制器的电压输出吗?
我必须为电路生成介于0 V和0.8 V之间的值,并获取系统输出的电压值并分析数据。我可以使用微控制器自动生成电压值吗?(例如:0.05 V,0.1 V,0.15 V ...) 如果答案是肯定的,那么我应该使用哪个微控制器以及您推荐什么技术? 如果答案是否定的,您还能提出其他建议吗?

2
具有极高温度范围的微控制器
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使其成为电气工程堆栈交换的主题。 去年关闭。 我正在寻找可在高温下工作的组件。特别是我正在寻找可在180°C至200°C下工作的微控制器。我需要找到在极端条件下可以正常工作的微控制器。如果微控制器具有内置的CAN接口,那真的很好吗?或我可以用于我的项目的任何其他方法和微控制器。微控制器的目的是从不同的传感器获取信息并执行一些校准。 我从TEXAS找到了一个微控制器SM320F28335-HT,但该微控制器的成本非常昂贵。是否有任何低成本且可在高温下工作的微控制器。

5
在高温下选择微控制器之间的通讯
我被分配到一个项目中,以找到具有特定功能的微控制器的多个PCB板之间的最佳通信。我需要所有微控制器与包含CPU的主板进行通信。 我需要从主板向控制器发送一些信息,并从控制器接收响应。每个控制板都是为特定目的而设计的。我不需要在微控制器之间进行通信,但是即使一个微控制器无法通信,也不会影响其他微控制器。目前,我需要有六个微控制器进行通信,但在将来不止如此。我想避免在主板和其他控制器之间建立更多的有线连接(应该更少)。 通讯不受温度(250°F(120°C))和压力(高压)的影响。主板到最终控制器之间的距离可能超过一米。哪种控制器最好?我需要执行一些计算和传感器读数。每个板都有两个以上的传感器。我需要对传感器读数进行一些计算或直接发送值。 我是这种项目的新手。我一直在寻找最好的沟通方式,但我感到困惑的是最好的沟通方式。有人建议我使用CAN通讯。如果我选择CAN通信,哪种类型的微控制器是最好的?我已经附上了一个简单的图表,如下所示。

3
如何编程PIC12?
我有需要编程的PIC12F675。我正在使用Pickit 2和Pickit 2软件。我应该可以使用此电路对其进行编程,但是Pickit 2软件根本无法检测到该芯片。 怎么了 编辑:我已经添加了电路板的图像。而这里就是你可以找到的PIC12F675数据表。跳至第4页以了解引脚排列。 EDIT2:我实际上只是看了看这些芯片(笨拙,但我以为Mouser会把我订购的东西发送给我),我注意到它们实际上是PIC12C671的。这会有什么不同? 最终编辑:哇!感谢所有为我提供帮助的人!我没想到会有这样的反应。最终就像我想的那样,这是一个小愚蠢的问题。我从Mouser收到包裹时没有仔细检查所有东西是我的错。

3
Microchip XC16中函数的绝对地址
器件:dsPIC33FJ128GP802 我有一些* .s文件,如下所示 .global _D1 .section .speex, code _D1: .pword 0x66C821, 0x1B0090, 0xD96C36, 0x9B60B0, 0xDD4E36, 0xBF4E53 .pword 0xD1098B, 0x719BD9, 0x873989, 0x003B69, 0x279035, 0xED4244 .pword 0xE1403C, 0x54D439, 0x826550, 0xC59627, 0xDD0432, 0x88FA29 我在* .h中声明了相同的内容 extern void D1(void); 现在我将D1传递给表读取功能 nowPlaying.file1 = (unsigned long) D1; function(nowPlaying.file1); 我的问题是,如果D1的地址大于0X8000,则例程不正确。我尝试了大型和小型代码模型,但结果是相同的。我认为这是由于指针的16位限制引起的。是否有任何方法可以直接从代码中访问D1的绝对地址。可能类似于内置函数或宏。

2
如何确定微控制器是否损坏?
我的“垃圾邮件”箱中有几个微控制器。我认为其中一些人在对它们进行编程后表现出奇怪的行为时就到达了那里。从那以后,我学到了很多东西,例如,对编译器进行错误的优化如何导致这种奇怪的行为。另一方面,某些微控制器可能由于静电,超出容忍电压等而受到了严重损坏。因此,我相信某些微控制器可能处于良好的工作状态。 在抛弃所有东西之前,我想知道:是否有相对简单或简便的方法来测试微控制器以确定其是否仍然良好? Micros特别是DIP和SOIC版本的Atmel ATTiny13,ATTiny26和ATTiny2313。

3
从PIC18s上的I2C开始
对于一个项目,我希望三个PIC(两个从PIC18F4620,一个主PIC18F46K22)通过I2C总线进行通信。稍后,可以添加更多从设备(如EEP​​ROM,SRAM等)。我正在使用C18编译器在C中为这些PIC编写代码。我在Internet上浏览了很多东西,但是找不到用于处理(M)SSP外设的库。我已经在I2C模式下阅读了(M)SSP外设上的这两个PIC的数据表,但找不到如何与总线接口。 所以我需要主库和从库。 您有什么推荐的吗?你在某处有这样的图书馆吗?它是内置在编译器中的吗?如果是,在哪里?网络上有什么好的教程吗?

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.