Questions tagged «pic»

PIC是Microchip生产的8位,16位和32位RISC微控制器品牌。“ PIC”最初是“ Peripheral Interface Controller”的缩写。

1
使用齐纳二极管作为参考电压
我想使用一个齐纳二极管作为PIC18F2550的电压基准,作为模拟V +基准。我打算使用此齐纳二极管,但不确定如何计算其值。我计划使用一个简单的电路,例如Vcc-> Resistor-> Zener-> GND(使用反向齐纳二极管并获得其齐纳电压),以获得4.7V基准电压。 看着齐纳二极管的数据表,我看不到齐纳曲线,只是正向电压曲线...为什么?而且我只能看到一张仅包含5mA电流值的表格。我打算使用10K电阻器,但是通过某些仿真,我无法获得4.7V电压,这可能是因为我没有给它提供5mA电流,但是如何计算呢?我怎么知道一个10K的电阻会输出多少电压?

1
dsPIC芯片以正常速度的一小部分运行
我有两个PCB。一个带有dsPIC30F6012a,另一个带有dsPIC30F6015。两者均使用PICkit 3在MPLAB X中的独立HEX项目中进行编程,在此之前,这两种固件已轻松应用于数十个单元。目前,当从除一台以外的所有PC进行编程时,固件都可以正常运行。在昨天开始的那台PC上,这两个固件均编程无明显错误,但以正常速度的约1/20执行。在昨天之前,那台PC还对这些板进行了编程,没有问题。 初始屏幕花了2分钟而不是5秒,指示灯闪烁得非常慢,但除此之外,一切都正常运行。几乎好像振荡器配置位已被更改,但我不知道MPLAB X中可用于独立项目的任何地方。 因此,在同一PCB设计的多个实例上,在两个不同芯片上的两个不同固件,以不同的速度运行,仅取决于用于对其进行编程的PC。在“性能良好”的PC上对慢速板进行重新编程可解决此问题;在“坏”的PC上对该板进行重新编程即可将其重新带回。我所能想到的是,在那台PC上有人按下了“使其缓慢运行”按钮,但我找不到任何贴有该标签的东西。(不过,我们的技术很有创造力。)我目前正在卸载MPLAB X,擦除用户设置,然后重新安装更新的版本。(从1.3到1.6。)即使修复了问题,我仍然不满意所发生的事情,仍然感到不高兴。有人对此问题有见识吗?

3
在PIC中使用多个外部中断
我已经将PIC16F877(datasheet)用于多个项目。对于单个外部引脚更改中断,可以使用PORTB0中断。但是现在我需要在一个电路中支持8个独立的外部引脚更改中断。 在数据表中,它说有15个中断PIC16F877,但是我想这些都算在内,包括定时器溢出中断等...在这种情况下没有用。 这是数据表关于INTCON寄存器的内容。 我可以使用bit0进行4个独立的中断RBIF吗?它代表的变化PB7:PB4。如何通过读取中断程序中的端口值来识别哪个引脚发生了变化? 即使我得到以上肯定的答案,我也需要8次中断?当然,我仍然可以使用INTE进行PORTB0更改。然后4 + 1 = 5,其他3个呢?(但是,尽管这8个中断事件都是同一类型,但4 + 1 + 3 = 8事情看起来很难看,不是吗?) 除了监视8个引脚之外,微控制器没有其他繁重的任务。(谈论其他任务时,它必须维护一组单独的计数器变量,并经常向PC串行传输约4个字节) 欢迎任何建议。即使是为了将微控制器更改为更合适的一个(但...不要告诉我不要使用PICs)。

2
需要一些帮助来了解PIC内存映射
一些背景。我将MPLABx与PicKit2结合使用来对不同类型的图片进行编程。目前是16F887。我尝试坚持使用高科技PICC Lite工具链,但对某些组件的组装方式越来越不满意。相对较快的操作(考虑8Mhz的500ns指令周期)最多需要20us才能完成。因此,我开始插入自己的ASM代码来处理它。 但是,我很难理解第20页的数据表中提供的内存映射。 程序存储器从0005h开始。但是,第23页显示了专用寄存器的文件地址,例如端口A。端口A的地址显示为“ 05h”。 我很困惑如何区分存储位置0005h和位于05h的专用寄存器。如何引用专用寄存器? 我已经为较旧的HC11芯片完成了相当广泛的汇编程序编程,但这是我第一次涉足PIC asm编码。在这里的任何帮助,将不胜感激。

1
用合成的ROM内核模拟一个简单的测试台
我对FPGA领域是一个全新的领域,并认为我将从一个非常简单的项目开始:一个4位7段解码器。我纯粹用VHDL编写的第一个版本(基本上是单个组合select,不需要时钟),并且似乎可以使用,但我也想尝试使用Xilinx ISE中的“ IP内核”功能。 因此,现在我正在使用“ ISE Project Explorer” GUI,并使用ROM内核创建了一个新项目。生成的VHDL代码为: LIBRARY ieee; USE ieee.std_logic_1164.ALL; -- synthesis translate_off LIBRARY XilinxCoreLib; -- synthesis translate_on ENTITY SSROM IS PORT ( clka : IN STD_LOGIC; addra : IN STD_LOGIC_VECTOR(3 DOWNTO 0); douta : OUT STD_LOGIC_VECTOR(6 DOWNTO 0) ); END SSROM; ARCHITECTURE SSROM_a OF SSROM IS -- …

2
蓝牙简单示波器
我当时正在考虑制造一个简单的示波器,它可以测量至少2MHz的信号,这就足够了,它可以连接到PC或Android设备。首先,我努力使用USB将“示波器”连接到PC或具有Android USB主机功能的设备,这将为我提供大约12Mbps的传输速度,但我想用蓝牙或其他射频方式来实现。我说的是一些Bluetooth-UART模块,它们能够实现2Mbps的传输速度,而Wi-Fi模块的速度仅为300Kbps。我有一个512K RAM内存,用于缓冲来自12MSPS ADC的样本,因此以2Mbps的速度需要: 512000 ķ b ÿŤ Ë 小号2000000 中号 b p s / 8 b i t s= 2.048 小号È Ç Ò Ñ ds512000 ķbÿŤËs2000000 中号bps/8b一世Ťs=2.048sËCØñds\frac{512000\ Kbytes}{2000000\ Mbps/8bits} = 2.048 seconds 因此,我将丢失2秒的采样,直到我通过蓝牙发送了所有512K缓冲区。通过USB大约是330mS,我认为太多了。有什么办法可以避免这种情况?USB示波器如何工作?

1
使用4位数7段LED
我有一个7段显示器,其中有4位数字。我将需要使用什么?单个微控制器可以处理该操作吗?我的意思是PIC16F690 ...我也看到了驱动这类显示器的MAXIM芯片...是否绝对需要? 这是数据表中的图片,我不知道为什么有2个引脚图? 这是数据表的链接

2
将数据写入LATCH会发生什么?
这是我在PIC16F1947数据表中找到的: 读PORTB寄存器将读取引脚的状态,而对其进行写操作将写入PORT锁存器。所有写操作都是读-修改-写操作。因此,对端口的写操作意味着要读取端口引脚,然后修改此值,然后将其写入PORT数据锁存器(LATB)。 我是固件开发人员,我的背景是计算机科学。我仍然很难理解硬件方面的电子学和逻辑学。我只有基础知识。 因此,我想了解将数据写入硬件级别的闩锁时会发生什么。 谢谢。

2
AVR微控制器以及如何开始编写init或main循环或计时器或中断的代码
几年来,我一直在修改AVR和PIC微控制器的代码以进行工作,但从未从头开始编写任何东西,我非常了解。 我现在开始编写自己的代码,开始上手也很麻烦。我想知道其他人是如何开始编写代码的,是否有人推荐这本书或教程。 您是从编写初始化函数开始,然后是中断,然后是计时器,然后是主要的while(1)循环吗?我想知道最好的入门方法是什么。 谢谢
9 avr  pic 

7
我应该使用什么PIC?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使其成为电气工程堆栈交换的主题。 4年前关闭。 开始学习的最佳PIC是什么?我想要具有8引脚和模拟输入的PIC。 我有16F628A,但我认为16F684可能会更好。PIC16F648和684A有什么区别? 哪个最好?

5
PIC 16F初学者..使用不同编译器时程序语法的差异
如前所述,我刚刚开始编写pic16f877a。我现在可以使用7段显示器。目前,我正在使用ccs编译器。没有错。但是我更喜欢成为一个独立于编译器的程序员。所以我同时想在其他编译器(如IAR或Hitechc)中工作。我想知道ccs以外的“编译器中的程序声明声明”是否会有所不同?请指导我如何处理这个问题。我欢迎所有形式的建议。提前致谢。
9 pic  compiler 

2
PIC电压测量
我正在运行电池供电的设备,并且希望我的微控制器(PIC)报告电源电压。 这样,我可以确定电源中使用了多少个电池,以及电池组的充电状态。 电源电压范围从4xD(1.2V标称NiMH或1.5V碱性电池约6V)到12xAA(1.2V NiMH对应14.4V或1.5V碱性对应18V)。 我的PIC用5V稳压电源供电。 我计划使用一个ADC端口来测量电压,因此我认为我应该将18V fsd映射到0-5V的范围内,因此大约需要将输入电压除以3。 我听说过使用电阻分压器,但是知道这可能会浪费能源。 想知道是否有更好的方法来实现这种分压而又不会造成过多的能量损耗/损耗? 谢谢。

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这与我的问题有关吗?

2
如何将电压转换为dB SPL
我正在从使用PIC16F877A的ADC单元的LM358放大器放大的驻极体麦克风中获取输入。我正在从2.5V至5V的ADC中获得伏特读数。如何将这些读数转换为dB?
9 pic  sound 

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.