Questions tagged «microcontroller»

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

4
缓冲数字微控制器信号以连接到光耦合器
我经常在一些项目中工作,在这些项目中,我使用光耦合器将数字+ 5VDC控制信号(例如,来自微控制器的信号)与电路的其余部分隔离开。但是,由于这些功能通过点亮设备内部的LED来工作,因此微控制器引脚上可能会负载数十毫安的电流。我正在寻找有关用附加级缓冲该控制信号的最佳实践的建议,以使微控制器有效地看到高阻抗,从而减少其需要提供的电流? 只是天真地离开了我的脑海,我想到了一些可行的方法: 1)只需将运算放大器用作单位增益缓冲放大器。 2)使用专用的比较器芯片将输入信号与例如+ 2.5VDC进行比较。 3)使用MOSFET作为信号放大器。 但是,在阅读后,我遇到了很多以前从未使用过的芯片,但听起来它们可能是为这种事情而设计的。例如: 差分线路驱动器(MC3487) 差分线路接收器(DC90C032) 线路收发器(SN65MLVD040) 缓冲门和驱动器(SN74LS07,SN74ABT126) 我真的没有任何这些经验,对可用的东西数量有点不知所措!因此,任何人都可以帮助我了解这些设备之间的区别,以及哪种/哪种情况下不适合。有没有达到我所描述的最佳/标准方法? 编辑: 由于我最多可以切换到x30左右的输出,因此我完全不需要担心微控制器的加载,因此不会考虑直接连接到DIO引脚。因此,我认为我会选择逻辑缓冲器IC。我将尝试对每个输入使用SN74LVC1G125 “ 具有三态输出的单总线缓冲门 ”,并查看其工作原理。

10
微控制器引脚上的12V输入
我正在尝试计算脉冲/秒。在〜5至100Hz范围内的微控制器引脚上。µC可以在5V输入下工作,因此我必须安全降低电压电平。 我想到了一个简单的电阻,但是任何浪涌都直接通向µC pin- meh。 我已经找到了这个答案,但是问题仍然在于该电路是否能够“快速”改变100Hz。 是否有一种可靠的,可靠的方式(可能是通过IC?)将5V或3.3V引脚连接到“脏”的 12V输入?我有12V和5V可用来驱动任何“现成的” IC。

5
具有基于级别的中断的意义何在?
无论我在哪里搜索基于级别的中断的实际实现方式,我都发现只有一个建议,即人们已经给出了该中断,即在中断进入ISR后立即将其禁用,这样就不会继续触发它。 我读过的另一件事是,它用于创建循环,即只要存在中断即可为ISR服务,但可以使用whileor do while循环来实现。 级别边缘中断将提供的优势可能是在服务ISR和延迟之间运行主程序的一条指令。我猜。 那么,在理解电平边缘中断时我缺少什么吗? 一个很好的答案是向我展示基于级别的中断的某种实际用法。

4
为什么要学习微控制器架构?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 3年前关闭。 我最近开始在一家小公司工作,该公司生产与汽车诊断相关的电子产品。我的上司已经50多岁了,他说他使用的是8051衍生产品,而他们正在做这项工作。我继续搜索Google,以了解8051是否仍然很受欢迎。在Quora中,我看到了这些: ...这可能是最简单的MCU架构。每个外围设备似乎都是准系统版本。我对计时器,时钟,UART等的概念有了很多了解!而且,然后我开始欣赏其他架构-因为我实际上了解这种差异。 ...显然,由于其简单性,任何行业都不会使用它来开发产品... 但为什么?到目前为止,至少作为一个学生,我以前做过很多事情,而不会搞乱建筑。我很高兴用C编码,我使用了LCD外设,并通过不同的协议(SPI,I2C等)连接到其他IC。 除了实时和时间关键型应用程序的有限领域之外,为什么还要烦恼微控制器的体系结构?

4
嵌入式C程序的生命周期内运行一次代码
如何使代码段在程序的生命周期内仅运行一次?它可以关闭和打开很多次。再次运行代码段的唯一选择必须是再次刷新电路板。 该代码是“校准部分”,我不想再次运行。如果我使用EEPROM或闪存,我们将标志设置为true或False。因此,当我们第一次读取该内存位置时,该内存区域中的随机值是多少? 在嵌入式C中实现此功能的最佳方法是什么?

1
ADC上的DNL,INL和ENOB异常差
我目前正在尝试表征MCU及其外围设备,尤其是板载ADC。但是,运行常规测试程序(即,对于ENOB为正弦波,对于DNL和INL为锯齿波),我发现结果相当差。长话短说,ADC“是” 12位-意味着人们期望其中有大约10位的分辨率。但是,无论我如何尝试,ENOB似乎都稳定在8.5位左右。与DNL和INL相似-我获得的最佳结果是对信号进行64次过采样时。第44页的数据手册确实说过,人们可能希望DNL约为±3 LSB-但是,这就是我超采样时得到的。原始信号的峰值约为7 LSB。到目前为止,我尝试了一些操作: 在ADC输入和地之间接一个10 nF的电容(在某种程度上确实起作用-如果没有ENOB为7.5) 对4倍,8倍和其他一些像素进行过采样,最高可达256倍。就像人们可能期望的那样,这也改善了结果,尽管效果并不明显。较大的过采样会产生更好的结果,而4倍几乎等于没有过采样。 降低ADC模块时钟并增加采样窗口。这些都不是特别有效。增大采样窗口对ENOB和DNL的影响很小。放慢时钟时间并没有任何效果。 同样,使用外部或内部引用似乎也不会产生效果,尽管我没有对外部引用进行大量实验-也许这是下一个要考虑的问题。对有一天可能阅读的人的参考文献进行小的编辑 - 在我的情况下使用外部参考文献会产生较差的结果。换句话说,我的MCU上的内部参考似乎更准确-或外部参考不如我预期的好。 现在的问题是,在什么时候可以接受ADC质量低劣或某种程度上受到损坏?我可以尝试其他哪些测试来改善ADC特性。请注意,我使用函数发生器生成输入信号。在这一点上,我只是被卡住了-即用尽了论坛线程 来 阅读 -我将非常感谢任何建议。

2
清除STM32中的USART(UART)中断标志?
我正在使用STM32F105通过UART与Linx GPS芯片进行通信。 如果我不使用中断(如果我只是轮询RX标志),那么它将正常工作。但是当尝试使用中断时,我得到了意外的结果。 例如,如果仅使用启用RXNE(“ RX不为空”)中断USART_ITConfig(USARTx, USART_IT_RXNE),则该代码仅应针对该特定事件引导至ISR。但是,中断也会因溢出条件而触发。 至于清除标志,似乎方法取决于标志。为了清除溢出标志(USART_IT_ORE),用户手册说明我应该先读取USARTx_SR寄存器,然后再读取USARTx_DR寄存器。这确实有效;该标志被清除。 还有一个USART_ClearITPendingBit()功能,但是只接受一小部分标志。 有八个可以选择使能的中断源,以及十个不同的标志。 是否有关于如何管理所有这些标志的摘要?

4
使用微控制器实现多个时间紧迫功能的好方法?
如果有的话,在微控制器中实现高度时间紧迫的功能的哲学或方法是什么? 我正在从事一个涉及输出变化频率的精确方波波形的项目。我已经使用计时器和中断功能完成了此操作。但是,即使正确地实现了这一点,我也必须针对中断服务程序中所花费的时钟周期数来校准偏移量。我想如果同时运行另一个这样的波形会干扰这种精度(例如,需要在同一时间更改频率)。每个具有微控制器的关键时间功能似乎都是浪费的。 再举一个例子,实现一个时钟(如hh:mm:ss)函数。我无法想象每一个高级微控制器/计算机都有专门的实时时钟芯片来跟踪时间。但是,我发现很难想象使用核心处理器可以对它进行准确地测量,而该处理器正忙于同时为异步间隔提供大量功能。我以为时间计数会有偏移误差,该误差会根据正在运行的功能而变化。 是否有一个设计过程或方法来限制或给出可达到的精度公差?还是有人对我在哪里可以找到更多相关信息有任何指示或建议?

3
从ROM或RAM执行程序哪个更快?
我们大多数来自电子领域的人都知道SRAM比DRAM快。但是,当比较RAM和ROM时,我不确定。 我的问题与微控制器有关:“如果代码直接从RAM / ROM执行,则其性能会更好-1)从RAM执行或2)从ROM执行或3)两者将表现相同” 还考虑到ROM被设计为具有更高的读取速度这一事实。而对于RAM,要具有写入功能就必须权衡读取速度。

2
如何创建安全的UART通信协议?
我想知道如何创建安全的UART / USB通信协议。我需要它来实现微控制器和PC之间的通信。我有大约10个命令,并认为我将为每个命令使用10个单独的确认命令。 交换应该像这样: PC通过UART发送唤醒命令 µC识别出PC已连接,并将其命令发送到PC,例如。 0x01 PC会执行要求的操作(一些硬件任务),并~0x01在完成后做出响应(我将数字取反以在两个数字之间创建更大的“距离”) µC知道它已发送0x01并且期望~0x01PC 发出请求。如果除了~0x01返回以外的内容,µC会知道出了点问题,并会发送新的请求或错误消息 µC发送的情况下,0x01PC可以理解0x02并发送~0x02回去,但是~0x01由于某些噪声而导致µC读取会非常糟糕。 就传输而言,这有多安全?或者我怎样才能使其更加安全?

2
为什么Atmel使用39R下拉电阻?
我最近购买了SAM4S XPLAINED板,以对ARM有一定的经验。该板上有一个外部RAM,并且在PIN6上有一个39R下拉电阻,该电阻是RAM的/ CS1线。 完整原理图:原理图 问题:为什么该电阻的阻值为39R?这对我来说很罕见。我看不出为什么要在此处使用强大的下拉菜单。我只想了解其背后的逻辑。 根据原理图,它已连接至控制器的PC14,但实际上并未连接。(缺少R208)

5
我需要将我的代码放入微控制器吗?
我学习了有关编码控制器的知识,但从未真正将代码放在物理设备上。我试图弄清楚开始开发基本的嵌入式系统所需的条件。 例如,如果我有PIC18F1330,则我有MPLAB IDE和XC8编译器。太好了,所以我已经编译了代码,现在可以将其放到控制器上了。将PC上已编译的代码传输到控制器上,我需要做什么? 我看过诸如在线调试器和PIC套件之类的东西。我现在迷路了。

1
裸机代码是否有任何标准测试方法
我想知道裸机代码(尤其是诸如设备/外围设备初始化代码之类的东西)是否具有任何测试方法,因为在写入寄存器时几乎不会出错(一旦知道所有地址都正确映射)。同样,当仅将设备配置为一个功能时,这种代码通常只有很少的分支/路径,那么在这里有必要进行哪种测试?

7
4 MBit!= 512 kB?
我正在使用富士通微控制器,我认为我对以下细节有些不满意,这就是为什么我问这个问题。我有以下规格: 4M位闪存 内置产品:MB90F345E(S),MB90F345CE(S) 容量:512 KB / 256 Kwords 扇区配置:64K×6 + 32K×2 + 16K×2 + 8 K×4 分配的银行:F8H到FFH银行 他们似乎神奇地创建了12K字节的额外ROM存储器?我在这里想念什么怪癖?


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.