Questions tagged «microcontroller»

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

2
C编码设计-函数指针?
我有一个PIC18F46K22,并使用XC8编译器对其进行了编程。最后,我将拥有一个像PC这样的系统,stdin并带有和stdout。因此,在主循环中将有一个函数来检查是否有新输入。如果有输入,将相应地调用一个函数。因此,例如,当我在A上输入A时stdin,PIC将运行类似的函数,function_A而不是function_B在我输入B时调用的函数。 当PIC完成该功能后,我希望将新输入发送到该功能。因此,当按A打开RS232发送器时,从此刻开始,所有输入都将通过RS232发送。最后,该项目是一个独立的文本编辑器。因此,当按A键打开文件系统时,此刻不再是文本编辑,而是浏览文件列表。这意味着按下“向上”和“向下”意味着与在文本编辑环境中有所不同。 我已经做了很多关于如何使用C进行编程的思考。昨晚我想了一下,想知道是否有可能,如果有可能,如何做。我想做的是: 该main函数调用类似function_A function_A将全局变量更改function_addr为函数的地址指针in_function_A 从那时起,main在function_addr有新输入时调用该函数。 所以我需要一个main检查是否function_addr为零的函数。如果是这样,应调用“正常”函数,如function_A。如果不是,function_addr则应调用at中的函数。我还需要function_A将更function_addr改为的指针in_function_A。 注意:当应关闭文件系统功能时,is_function_A应将其更改function_addr为0。 所以基本上我的问题是我怎么能 获取函数的地址(并将其存储在变量中) 在指定地址调用函数


7
微控制器与片上系统
我开始对微控制器进行编程,并且正在阅读一些文档和教科书。我对微控制器和片上系统之间的区别感到困惑吗? 一些文档可互换使用这两个术语。但是大多数教科书指出,交替使用两个术语是不正确的,因此必须有一些显着的区别... 谢谢!

7
非入门固件开发的好书
已锁定。该问题及其答案被锁定,因为该问题是题外话,但具有历史意义。它目前不接受新的答案或互动。 我的工作很多,但我正在寻找有关该主题的更高级的书籍。事情不像“什么是中断”的基础。我正在阅读有关嵌入式系统开发的O'Reilly书,虽然不错,但不够先进。例如,很少有书籍讨论诸如Flash页面(这可能非常有用)之类的事情,很少讨论如何将一段代码放在特定的内存区域中。 也许有些技巧和窍门。我主要进行PIC编程。

13
英特尔HEX(.hex)查看器/阅读器
最近,我一直在处理Intel HEX文件。我想要一个可以导入Intel HEX文件并允许我查看每个地址的字节内容的程序。 我见过一些执行此操作的程序,但是有什么好用的程序是免费的,并且还允许您在绝对地址而不是十六进制文件开头的相对地址中查看内容(对于例如,如果Intel HEX文件开始在地址200处写入,则应用程序应表示地址0-199为空,并且不会显示为好像从地址0开始)。 我发现最好的工具并不是真正的用于查看HEX文件的工具,而是Segger的J-Link Flash编程软件。这实际上是为了对芯片进行编程,但它可以读取精美的HEX文件。在J-Link / J-Trace下载中找到它。


6
串行协议定界/同步技术
由于异步串行通信甚至在当今的电子设备中也很普遍,我相信我们许多人会不时遇到这样的问题。考虑与串行线(RS-232或类似产品)连接并且需要连续交换信息的电子设备D和计算机。即每个发送一个命令帧,并每个发送一个状态报告/遥测帧答复(报告可以作为对请求的响应发送,也可以独立发送-在这里并不重要)。通信帧可以包含任何任意二进制数据。假设通信帧是固定长度的分组。PCPCX msDY ms 问题: 由于协议是连续的,因此接收方可能会失去同步,或者只是在进行中的发送帧中间“加入”,因此它只是不知道帧起始位置(SOF)在哪里。根据数据相对于SOF的位置,数据具有不同的含义,接收到的数据可能会永久损坏。 所需的解决方案 可靠的定界/同步方案可在恢复时间短的情况下检测SOF(即重新同步所需的时间不超过1帧)。 我了解(并使用了一些)的现有技术: 1)标头/校验和 -SOF作为预定义的字节值。帧末的校验和。 优点:简单。 缺点:不可靠。恢复时间未知。 2)字节填充: 优点:可靠,快速恢复,可与任何硬件一起使用 缺点:不适用于固定大小的基于帧的通信 3)第9位标记 -在每个字节之前附加一个位,而SOF标记为1和数据字节标记为0: 优点:可靠,快速恢复 缺点:需要硬件支持。大多数PC硬件和软件未直接支持。 4)第8位标记 -上面的一种模拟,同时使用第8位而不是第9位,每个数据字仅保留7位。 优点:可靠,快速的恢复,可与任何硬件一起使用。 缺点:需要从/到常规8位表示到/从7位表示的编码/解码方案。有点浪费。 5)基于超时 -假定SOF为某个已定义的空闲时间之后的第一个字节。 优点:无数据开销,简单。 缺点:不太可靠。在较差的计时系统(如Windows PC)上无法很好地工作。潜在的吞吐量开销。 问题: 还有哪些其他可能的技术/解决方案可以解决该问题?您能否指出上面列出的缺点,可以轻松解决这些缺点,从而消除它们?您(或您将)如何设计系统协议?
24 serial  communication  protocol  brushless-dc-motor  hall-effect  hdd  scr  flipflop  state-machines  pic  c  uart  gps  arduino  gsm  microcontroller  can  resonance  memory  microprocessor  verilog  modelsim  transistors  relay  voltage-regulator  switch-mode-power-supply  resistance  bluetooth  emc  fcc  microcontroller  atmel  flash  microcontroller  pic  c  stm32  interrupts  freertos  oscilloscope  arduino  esp8266  pcb-assembly  microcontroller  uart  level  arduino  transistors  amplifier  audio  transistors  diodes  spice  ltspice  schmitt-trigger  voltage  digital-logic  microprocessor  clock-speed  overclocking  filter  passive-networks  arduino  mosfet  control  12v  switching  temperature  light  luminous-flux  photometry  circuit-analysis  integrated-circuit  memory  pwm  simulation  behavioral-source  usb  serial  rs232  converter  diy  energia  diodes  7segmentdisplay  keypad  pcb-design  schematics  fuses  fuse-holders  radio  transmitter  power-supply  voltage  multimeter  tools  control  servo  avr  adc  uc3  identification  wire  port  not-gate  dc-motor  microcontroller  c  spi  voltage-regulator  microcontroller  sensor  c  i2c  conversion  microcontroller  low-battery  arduino  resistors  voltage-divider  lipo  pic  microchip  gpio  remappable-pins  peripheral-pin-select  soldering  flux  cleaning  sampling  filter  noise  computers  interference  power-supply  switch-mode-power-supply  efficiency  lm78xx 

1
MCU转接板的PCB布局问题
我正在尝试对LPC23xx / LPC17xx MCU进行扩展的电路板。之前,我从未尝试过任何解决这种复杂性的事情,并且我有几个需要关注的领域。我知道四层PCB板是最佳选择,但我是一个爱好者,将其变成四层板将使其与市售选件一样昂贵。我的设计基于几个经过验证的两层商业板,因此我知道可以进行这项工作。首先,这是布线最多的电路板(忽略右侧的所有USB设备,我什至都没有确定是否要包含它)(另外,我知道丝网印刷很恐怖,我还没有解决) ): 1)我要关注的一个领域是MCU和晶体之间的走线长度(一个是RTC,另一个是MCU)。它们不再是我基于其设计的任何一块板,但是我想验证一下。 2)我还有一个担忧是去耦。我知道,总的来说,没有太多的去耦,但是在这种情况下,我的空间不足,所以我没有将所有的VCC / GND对去耦(有很多!)。我基于设计的两个板都只有2个去耦电容,而我有3个,因此在那儿我可能还不错。我应该努力至少再获得一两个吗? 3)我非常努力地在底层上提供了几乎不间断的接地平面。它仅在几个点处破裂,一个是一个晶体上的通孔(我认为实际上应该是焊盘),另一个是VCC到MCU的较大路径。我的地平面足够坚固吗? 4)配电对我来说是一个特殊的问题(请参阅此处的上一个问题)。最后,我选择将较大的填充物倒在MCU下方,并通过较大的走线将其连接到VCC引脚。这是可接受的配电策略吗?如果我使用4层板,则将整个层用于VCC,但出于成本原因,我想坚持使用2层。 总的来说,我在这里做了什么?这可能会启动,还是我应该回到图纸板上?



10
STM单片机每次都会燃烧
我有一些使用stm32的经验,但是我只在开发板上使用过它们。 我最近尝试将stm32和stm8焊接在一个简单的分线板上,并用我的st-linkv2克隆对其进行编程。 首次通电时,单片机会发出一些小声音,例如几秒钟后燃烧,然后在2分钟后吸取100mA电流并冒烟。 我认为我缺少一些重要的细节。 像这样的简单设置会出什么问题?(仅vdd,vss,去耦电容和st-link) 我使用stm8和stm32尝试了20多次。 我尽可能地靠近去耦电容,并为其提供了3.3v电压。 几次,我可以对闪光灯进行编程和验证,但显示出一些奇怪的行为 *,几分钟后又冒了烟。 我尝试了拖焊,带有smd尖端的常规焊接以及低至260C的温度以及每个焊垫之后的冷却时间。我还尝试了在270C上使用热风枪,并且我已经确定该问题不在焊接中。 我还尝试了NRST上拉和BOOT0下拉。 *怪异的行为:“随机”,例如简单的led眨眼信号灯或pwm信号上的定时,仅下降到2.8v左右,而不是0v。总体而言,“ kinda”工作正常,但仅持续1分钟。 **问题不是st-link。它闪烁开发板就好了 编辑1: 这是原理图(对于stm32)(到带有标签的ST-Link的连接): 下面没有任何东西。只是连接到引脚的另一个(未填充)封装。 编辑2:连续性测试:无短路,所有引脚接触均正常 编辑3:连接VDDA和VDD,并在VDD上增加另一个4.7uF。还在炸 VDD直接在设备上测得:3.36v 编辑4:电流消耗行为:在所有情况下,油炸芯片时,它消耗大约20-40mA电流,有时突然上升到100-240mA持续几秒钟,然后归零(小于10mA)。并在重新启动之前保持零状态。 更新:我在VCAP上焊接了另一个STM8S003F3P6,1uF,在VDD上焊接了2x100nF和10uF。并使用电池作为电源,并制造了一个小的电容倍增器和发射极跟随器,以使3.3v带有许多陶瓷电容和低ESR电容,并且电流限制设置为15mA。该电压在50MHz以上的噪声小于30mV。然后我连接了MCU(刚焊接)。电流消耗小于4mA,电压稳定。我离开了。一两分钟后,它突然开始超过15mA极限并触发PDR。现在它立即开始执行此操作(即使已声明NRST)。似乎这个也消失了...

7
为什么I2C设计为使用上拉电阻而不使用下拉电阻?
我了解在I2C中,SCL和SDA线使用上拉电阻,并且引脚驱动器是开路集电极NPN器件,可以将引脚驱动到地。这给I2C带来了一个优势,即同一根总线现在可以与多个从机共享,即使两个或多个从机意外尝试同时驱动该总线,也不会对系统造成任何损害。 但这也可以通过在SDA和SCL线上使用PNP开漏驱动器和下拉电阻来完成。时钟延展和多主机仲裁之类的事情也可以实现。 I2C协议的当前实现是否比上述建议的替代实现有任何好处?

6
我如何计划需要长期支持的带有微控制器的远程产品?
我需要在必须长时间不进行重大更改的系统上使用微控制器(数十年)。为了确保总会有替换零件,我需要一个可以长期运行或由某些制造商生产的微控制器,其固件二进制和封装引脚兼容。如何确保我选择的微控制器满足这些条件? 该应用程序不需要太多的计算能力。其目的是控制电动机和其他工业系统。8位微控制器能够以0.5-1 MHz的频率更改大约8-16个IO引脚的状态。ADC可能很有价值,但可以用一个简单的外部比较器代替。

6
如何从“基本”微控制器过渡到ARM Cortex?
我在使用来自多家制造商的8位内核(即8051,PIC和AVR)方面有多年的经验,现在我有了一个Cortex M0。具体来说这一个,但我希望我们能比这更普遍。 事实证明,这要超出我的讨价还价了,有多个文档以不同的详细程度描述了系统的不同部分,但实际上我还没有看到将它们连接在一起的事实。相比之下,只有一份数据手册可以解释所有内容。我了解首先需要记录的内容还很多,但是格式的变化使我陷入困境。 上面的网站有一个文档,它很好地概述了每个子系统和外围设备,另一个文档则详细描述了每个寄存器,我拥有其SDK的所有源代码,包括头文件和一些复杂的示例,但是我仍然看到没有描述它如何连接在一起的东西。 是否有Cortex架构的简要介绍,解释了小型控制器所不具备的功能(例如从CPU到外设的多层总线,每个总线都有自己的看门狗定时器),以及它们如何连接在一起?

5
如何确保中央组件的长期制造?
这个问题与项目计划和将来的风险最小化有关。假设X公司建立了这个聪明的设备(我没有公司,我很好奇)。巧妙的设备利用了微控制器单元(MCU)作为中央最重要的组件。该MCU由Y公司生产。今天,在2013年,如何确保Y公司或其他公司在未来数年仍生产Y品牌和型号? 当前是否有任何特定的品牌+型号系列(或只是通用架构),在可预见的未来中可以依靠它们?是否有任何不确定的品牌/型号家族/架构?我猜英特尔和爱特梅尔必须生产某些型号系列,这些型号系列肯定可以保留数年/数十年。但是究竟是哪种模型或架构?

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.