Questions tagged «microcontroller»

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


7
Arduino的加密库
我正在使用Arduino读取键盘并在键盘PIN输入时打开电击。对于此草图,我想使用某种轻量级加密将PIN存储在EEProm中。有人知道这样的图书馆吗?我听说使用TwoFish是可能的。

2
PIC12F675 GP4不起作用
我正在为一个项目使用PIC12F675,除一件事情外,其他所有东西都工作正常。GP4不能用作数字IO。我已经看了很多配置和代码,但是找不到任何东西。 配置: #pragma config FOSC = INTRCCLK #pragma config WDTE = OFF #pragma config PWRTE = OFF #pragma config MCLRE = OFF #pragma config BOREN = ON #pragma config CP = OFF #pragma config CPD = OFF 码: #include <xc.h> #include <math.h> #include "config.h" #define _XTAL_FREQ 4000000 void delay(unsigned int …
9 pic  c  embedded  programming  audio  oscillator  spark  dc-dc-converter  boost  charge-pump  eagle  analog  battery-charging  failure  humidity  hard-drive  power-supply  battery-charging  charger  solar-energy  solar-charge-controller  pcb  eagle  arduino  voltage  power-supply  usb  charger  power-delivery  resistors  led-strip  series  usb  bootloader  transceiver  digital-logic  integrated-circuit  ram  transistors  led  raspberry-pi  driver  altium  usb  transceiver  piezoelectricity  adc  psoc  arduino  analog  pwm  raspberry-pi  converter  transformer  switch-mode-power-supply  power-electronics  dc-dc-converter  phase-shift  analog  comparator  phototransistor  safety  grounding  current  circuit-protection  rcd  batteries  current  battery-operated  power-consumption  power-electronics  bridge-rectifier  full-bridge  ethernet  resistance  mosfet  ltspice  mosfet-driver  ftdi  synchronous  fifo  microcontroller  avr  atmega  atmega328p  verilog  error  modelsim  power-supply  solar-cell  usb-pd  i2c  uart 

6
从嵌入式C角度看static关键字的概念
static volatile unsigned char PORTB @ 0x06; 这是PIC微控制器头文件中的一行代码。的@操作者用于存储地址内的值PORTB 0x06,这是PIC控制器表示PORTB内部的寄存器。到目前为止,我有一个明确的想法。 该行在头文件(.h)中声明为全局变量。因此,根据我对C语言的了解,“静态全局变量”对于其他任何文件都不可见-或简单地说,不能在当前文件外部使用静态全局变量/函数。 然后,该关键字如何PORTB对我的主源文件和我手动创建的许多其他头文件可见? 在我的主源文件上,我仅添加了头文件,#include pic.h这与我的问题有关吗?

5
如何测量极低功耗设备上的功耗?
这在过去的六五年中可能是个老新闻,但就今天而言,我指的是将吸收μA(uA)甚至nA电流范围的电子原型和设计。 一些最近的MCU,例如我正在使用atm的SAMD21,都配备了内部时钟,例如始终打开的超低功耗内部32kHz RC振荡器,其功耗仅为125nA,并且整个微控制器在STANDBY模式下仅消耗6.2μA的电流。带有实时RTC。 在这类静态电流和功耗级别中,台式测量设备(如万用表和示波器)的内部机械中的最小限制可能会给整体测量带来相当大的误差,甚至在诸如此类的情况下也能测量出平坦的错误值。当将万用表的分辨率从6位精度更改为8位精度时,继电器会触发。 测量此类应用的整体静态电流/功耗的最精确方法是什么? 更新: 正如我在答复中提到的那样,测量低电流虽然困难,但非常有可能,但是,我想到的是,要对总的电流消耗量做出结论,并得出所有功率消耗的实际数字。 我碰到了一些解决方案,例如宽范围的电流到变频器,但是本应用笔记中的宽范围仅限于最大200uA,在我的情况下,当我的无线电正在传输时,我的最大电流可能会升至毫安,并且当整个系统进入睡眠状态时,它降至3uA。

1
这些微控制器引脚输入/输出模式是什么意思?
我买了一个stm32f103ret6。当我看到参考手册时,我看到它有几种I / O模式。 输入:浮动,上拉,下拉 输出:模拟,漏极开路,推挽 我已经使用具有三态和上拉功能的AVR MCU。因此,我可以理解上拉和下拉,但是我不能理解浮动,模拟,漏极开路,推挽模式。这些模式是什么意思,什么时候使用?

3
读取端口和PIN的区别
读PORTA和PINA有什么区别?端口与其引脚之间的关系是什么?我真的很困惑!!! 读取端口的示例:(读取引脚在这里没有用) 装配f = 1MHZ ATmega8我需要每1ms对PORTB进行一次补充(占空比= 50%) LDI R16,$FF OUT DDRB,R16 MAIN: LDI R16,00 DELAY:CPI R16,200 BREQ LOOP INC R16 RJMP DELAY loop:IN R17,PORTB COM R17 OUT PORTB,R17 OUT R17,PORTB RJMP MAIN


2
晶体管:为什么需要电阻?
我有一个固态继电器,至少需要3V才能激活,并且需要使用微控制器的2.3V输出进行切换。我还有一个6V 1A电源,可用于为继电器供电。 我知道我需要以某种方式使用晶体管,并且已经掌握了基础知识,但是我不明白为什么在电路中需要电阻才能使晶体管工作。 所以我的问题是:为什么我需要电阻,如何知道要使用哪个电阻以及哪个晶体管适合我的需求? (固态继电器是Crouzet 84 134 900)

4
在控制感性负载(交流电动机)时,什么时候应该触发TRIAC的闸门?
我正在使用光电双向可控硅+ TRIAC的组合来通过微控制器控制230V交流电机。为了检测电压的过零,我正在使用另一个光耦合器。 我知道交流电动机是一个感性负载,因此电压的过零先于电流的过零。我的电路检测到电压的过零,但是当电流为零时,可控硅会关断。我应该何时触发TRIAC的闸门以获得任意的电动机速度(假设是正常速度的一半)?我怎么知道可控硅何时关闭?

3
相当复杂的传感器网络
我最近正在从事一个项目,这是第一个涉及到足够使传感器网络复杂化的项目。最后,我认为沟通是整体绩效的瓶颈,我想知道更有经验的人会如何解决这个问题。这是一本长篇小说,但我认为这很有趣,因此请坚持使用。问题是设计一种自主飞艇,该飞艇能够导航障碍物路线并将乒乓球放入棕色盒子目标中。开始: 感测器 4D Systems uCAM-TTL摄像机模块-UART接口 HMC6352数字罗盘-I2C接口 Maxbotix Sonar ez4-1针模拟接口 执行器 2个L293D电动机驱动器(连接到简单的爱好电动机)-用于双向驱动6个电动机。他们需要PWM输入才能改变速度。现在,我们的3台电机始终在做相同的事情(控制上下运动的电机),因此它们仅需要我们控制器的2个PWM输出即可控制所有3台电机。其他3个控制横向运动的电机都需要单独控制(全向运动),因此我们的控制器还需要另外6个PWM输出。 伺服电机-PWM接口 控制器 由于稍后将变得清楚的原因,我们最终使用了2个ATmega328P。我们使用Arduino Uno对其进行编程(我们无法访问ISP),但是我们制造了定制PCB,因此我们不必使用arduino板,因为这只会给飞艇增加不必要的重量。至于我们为什么选择ATmega328P的原因,我对arduino环境非常熟悉,我认为这使代码开发变得更快,更容易。 通讯与处理 2个Xbee Basic 2个ATmega328P 带有OpenCV的运行C ++的台式计算机 因此,从相机模块可以看出,我们的大多数项目都依赖于计算机视觉。飞艇只能承载这么多的重量,而在微控制器上实现计算机视觉使我们感到不舒服。因此,我们最终要做的是使用XBee将图像数据中继回台式计算机。因此,在服务器端,我们接收到图像数据,并使用openCV处理图像并从中提取出东西。现在,服务器端还需要知道(来自声纳)的高度信息和指南针信息。 首先的麻烦是由于几个原因,我们无法使相机由微控制器控制。主要问题是uP上的内部存储器无法处理存储整个帧。通过聪明的编码可能有解决此问题的方法,但是出于这个问题的目的,让我们假装这是不可能的。因此,为了解决此问题,我们让服务器端通过XBee收发器发送摄像机命令,而XBee接收器(在飞船上)将其输出连接到摄像机的输入。 下一个难题是,单个ATmega328P上没有足够的PWM来控制所有电机,因为I2C接口使用PWM引脚之一(该死的...)。这就是为什么我们决定使用第二个。该代码实际上实际上完全适合于并行处理,因为高度控制完全独立于横向运动控制(因此2微米可能比连接到PWM控制器的1微米更好)。因此,U1负责2个PWM输出(向上/向下)并读取声纳。U2负责读取指南针,控制6个PWM输出(横向电机)以及读取声纳。U2还负责通过XBee从服务器接收命令。 这导致了我们的第一个沟通问题。XBee DOUT线已连接到微控制器和摄像机。当然,现在我们设计了一个协议,这样我们的微命令将忽略摄像头命令,而摄像头命令将忽略微命令,这样很好。但是,当忽略我们的微指令时,相机会在其输出线上发送回NAK数据。由于该命令是针对微型计算机的,因此我们需要某种方式来关闭相机输出到XBee的功能。为了解决这个问题,我们在相机和XBee(即第一个FET)之间以及在U2和XBee(即第二个FET)之间制作了微控2 FET。因此,当摄像机尝试将信息发送回服务器时,第一个FET为“开”,第二个FET为“关”。 因此,让您大致了解这是如何工作的几个示例: 服务器请求图片-PIC_REQUEST通过XBee到达U2和摄像机。U2会忽略它,并且相机会发回图像数据。 服务器刚刚完成图片处理,并正在发送电机数据以告诉飞艇右转-MOTOR_ANGLE(70)通过XBee进入并到达U2和摄像机。U2识别为微指令,因此关闭了相机的FET(但是相机可能已经响应了NAK?谁知道...)。然后,U2通过更改电动机PWM输出来响应命令。然后,它将相机的FET重新打开(这是默认设置,因为图像数据非常重要)。 服务器意识到我们已经到达障碍物路线的某个位置,默认悬停高度现在需要从90英寸而不是50英寸。SET_HEIGHT通过XBee,与示例2相同。U2识别SET_HEIGHT命令并在U1上触发中断。U1现在退出其高度控制循环,并等待从U2接收串行数据。是的,更多串行数据。此时,U2的FET处于打开状态(而相机的FET处于关闭状态),因此服务器将接收U2也发送到U1的高度。那是为了核实目的。现在,U1将其内部变量重置为height2HoverAt。U2现在关闭它的FET,然后重新打开相机的FET。 我肯定会遗漏大量信息,但是我认为这足以理解一些并发症。最后,我们的问题只是同步所有内容。有时缓冲区中会剩下数据,但是只有3个字节(我们所有的命令都是6个字节序列)。有时我们会失去与相机的连接,必须重新同步。 所以我的问题是:你们建议采用什么技术使所有这些组件之间的通信更可靠/更健壮/更简单/更好? 例如,我知道有人会在板载XBee输出和摄像头之间添加一个延迟电路,以便微机有机会在用NAK响应微指令之前关闭摄像头的通话线路。还有其他想法吗? 谢谢,我确定这将需要进行许多修改,敬请期待。 编辑1:对我们来说,通过微型镜之一拼接摄像机的UART数据似乎是不可能的。相机数据有两个选项:原始位图或JPEG。对于原始位图,相机会尽可能快地向您发送数据。ATmega328P仅具有128字节的串行缓冲区(从技术上讲这是可配置的,但我不确定如何配置),我们认为我们无法将其从缓冲区中取出并足够快地传送到XBee。这就留下了JPEG方法,该方法将它发送到每个包并等待控制器对其进行确认(小的握手协议)。最快速度为115200波特。现在由于某种原因,我们能够通过XBee可靠地传输大量数据的最快速度是57600波特(甚至在我们进行了节点/网络配对以允许自动重发功能之后)。在我们的网络中添加额外的停靠点(将摄像机连接到XBee的微型摄像机,而不是将摄像机连接到XBee的微型摄像机),只会减慢传输过多图像所需的时间。为了使电机控制算法正常工作,我们需要在图像上具有一定的刷新率。

5
有人知道没有时钟速度或没有超过1.705 MHz的振荡器的微控制器/ DSP吗?
我打算制造一种简单的电子设备,如果可以的话,我最终可能会尝试将其推向市场。在尝试并大规模生产之前,我将首先尝试在互联网上出售一些产品,看看是否有人想要它。 但是,事实证明,要在美国销售任何产品,您都需要通过FCC测试,或符合使其免检的条件。据我了解,FCC测试的费用高达10,000美元,我现在不愿意支付。在网上大量搜索了官方FCC文档(几乎找不到)之后,似乎其中一个条件是,如果电路中没有振荡器或频率超过1.705 MHz的频率,则使您无需进行FCC测试(请让我知道这是否是错误的,我在查找文件之前先在这里询问,每个人都说这是9 kHz并关闭了线程)。 这是法规的链接: 标题47:电信第15部分-无线电频率设备B部分-无意辐射器§15.103豁免的设备。 以下设备仅受§§15.5和15.29中的一般操作条件约束,并且不受本部分中包含的特定技术标准和其他要求的约束。如果委员会或其代表发现该设备造成有害干扰,则应要求被豁免设备的操作员停止操作该设备。在纠正造成有害干扰的条件之前,不得恢复操作。尽管不是强制性的,但强烈建议豁免设备的制造商努力使设备符合本部分中的特定技术标准。 ... (h)数字设备,其产生的最高频率和使用的最高频率均低于1.705 MHz,并且不能通过交流电源线进行操作,或者包含在连接至交流电源线时进行操作的规定。包括或允许使用除电装置,交流适配器或充电器的数字设备,这些设备可以在充电时进行操作或间接连接至交流电源线,并通过与交流电源线连接的另一台设备获得电源,请勿因此免税。 有谁知道一个具有时钟速度且所有振荡器均低于1.705 MHz的微控制器?我发现有些微芯片的时钟速度为1 MHz,但振荡器的频率为4 MHz。时钟速度可能超过500 kHz,但最好为1 MHz!


2
SPI从设备可以以全双工模式启动传输吗?
据我所知,SPI从设备的SPI传输如下所示: 主机通过SS引脚选择一个从机 主从之间同时发送数据 主机同时启动时钟和数据传输(写操作之前没有时钟) 即使从站有更多数据要发送,主站也可以在其希望的任何时候停止传输(通过停止写操作和时钟生成)。 是否有任何SPI从设备配置,该配置允许从设备在未经主机许可的情况下传输数据? 我只是想大声一点。假设只有一个从站,而主站等提供了一个连续的时钟。 即使假定的陈述为真,由于没有SPI的起止位,主机和从机也不会丢失字节同步(即接收位流)吗? 我问这样的问题是因为我已经阅读了本文档的以下部分。 2.2 SPI示例 所附的SPI示例说明了USART在同步模式下的使用。USART1被配置为从设备,而USART2被配置为主设备。发生以下交易: 从主机到从机的数据传输。 从机到主机的数据传输。 从主机到从机以及从机到主机同时进行数据传输。 本文给出了SPI示例,但使用USART器件实现了示例。而且我知道USART从站可以在未经主站许可的情况下开始传输。 我找不到文档引用的源代码。

1
是否可以在3.3 V电源上将蓝绿色LED用作MCU状态指示器?
现代电子行业已经开发了非常高效的LED,这些LED具有基于InGaN技术或类似技术的漂亮和奇特的颜色(“真绿色”,“青色”和“蓝色”)。这些LED中的一些被指定为具有3.2到4.2 V的正向电压。以下是此类LED的示例:Kingbright WP7104PR51C / A或表面贴装APT3216VBC。 但是通常的MCU由3.3 V电源供电,GPIO输出通常为3.1-3.2 V,这似乎不足以驱动这些LED。如何将这些LED用作某些信号状态或电源导轨状态的指示器?我这里需要串联电阻R1​​吗? 如果是,如何选择其值? 免责声明:这个“问题-答案”是对原始问题的阐述:“在此LED电路中增加1欧姆电阻是否有意义?” ,以解决LED作为逻辑状态指示器的特定用例。

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.