Questions tagged «pic»

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

5
Arduino还是PIC微控制器?
我当时正在考虑创建一个监视移动机器人。我在选择PIC或Arduino微控制器时遇到问题。监视移动机器人通过无线保真(Wi-Fi)控制。如果选择PIC,是否需要以太网模块? 我搜索它需要一个Arduino板才能连接到Internet。我对PIC有点经验,但是有人说Arduino对初学者来说更好。哪个更好:在项目中使用Arduino或PIC?还是应该同时使用Arduino和PIC?而且我也在考虑使用Android手机作为机器人的控制器。 我该怎么办?

7
在PIC中使用malloc
如何在PIC中使用malloc()和free()运行?我检查了stdlib.h标头,没有任何提及。我正在使用MCC18。 是否有人需要使用它们? 我需要它们,因为我正在将库从Windows XP移植到PIC。移植指南说 使操作系统的特定功能适应我的PIC功能 但是我不知道如何“翻译” malloc()和free()功能。
10 pic  memory 


3
通过CAN总线选择网络层
我打算在工业自动化应用中使用CAN总线,但是我很难决定如何实现网络层。这里是否有人对在CAN上使用更高层协议有任何建议,该协议为如何分配消息ID和如何格式化数据包提供了指南?我应该开发自己的专有网络层还是实施CANopen等现有标准?

5
PIC电路上的电池寿命监控器
我有一个使用PIC18F14F50微控制器芯片的小电路,该芯片通过i2c接口(以后可以通过USB接口读取该数据)将数据记录到外部EEPROM芯片中。每15分钟记录一次采样,不需要特别准确地计时。 更换电池时丢失样本或计时不正确是可以的,但是如果电池过期并且几天之内没有任何数据记录直到有人注意到,那不是很好。 因此,当电池电量不足时,我想提醒用户足够的时间来更换电池。平均电流低于2mA,我使用3节AA碱性电池串联以提供4.5V电压,因此我希望它们能持续几天。 但是我想知道如何检测电池电量低吗?我认为随着电池寿命的延长,电压会下降。我认为该PIC的参考电压为1.024v,因此我可以对电源电压进行分压并将其馈送到模拟输入,并且当分压下降到低于该水平时会触发警告。 但是我对电池知之甚少,无法知道它能发挥多大作用?而且我不知道选择什么电压可以表明电池寿命可能剩下10-20%。那会完全起作用吗?有没有更好的方法? 这完全不需要是准确的,我只是想在足够的时间内发出良好的警告,而又​​不要让人们去浪费仍然有生命的电池。 由于我目前的使用情况相当稳定,如果我能算出电池平均可以使用多长时间,然后在发出警告之前选择该时间的85%,那么一个简单的计时器是否合理?还是电池寿命变化更大? 任何想法都将受到欢迎。
10 pic  batteries 

4
最好的PIC程序员?
我想开始在我的项目中使用PIC,想知道我应该选择哪个程序员。我在使用微控制器(68k,avr)方面有丰富的经验,在电子方面也有很多经验(因此可以创建一个程序员)。 我希望能够使用MPLAB,icsp,并且在线调试功能看起来很整洁。USB也很方便,但这不是必需的。在您的回答中,我希望对您的建议的优缺点进行比较。

3
复制磁条?
我想进行一个项目,在该项目中您可以用另一个项目替换磁条,这可以通过PIC更改存储在其上的数据,但仍可以由磁条读取器读取。这意味着PIC可以将另一个值“写入”磁条上的不同磁道以复制不同的卡。那么什么方法可以用来做到这一点呢?会使用磁条吗?
10 pic  magstripe 

5
PIC32 vs dsPIC vs ARM与AVR,无论如何,当我们使用C语言编程时,体系结构是否重要?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 2年前关闭。 我们目前正在使用32位PIC32单片机。它可以很好地满足我们的需求,但是我们也在探索其他微控制器,这些微控制器可以更好地适应我们的需求+我们还有其他项目正在选择MCU。为了这个目的,我们选择了基于ARM的SAM DA微控制器,它是相同的32位但基于ARM(在工业上比PIC32更流行)。 现在,对于PIC32,我们使用MPLAB,而对于ARM cortex-M0,我们将使用Atmel Studio。我们将在两个平台中使用C语言。我担心的是,我们将使用两个(来自同一公司的)32位微控制器,但它们的体系结构不同。这将要求我们学习两种不同的设备,并会增加“学习曲线” +交付时间。但是另一方面,我也认为,既然我们将在两种情况下都使用C语言,那么ARM的学习曲线就不应该被人听到,也值得探索该处理器。 我的主要问题是,当我们使用C语言编程时,该体系结构有多大的差异,因为它提供了micrcontroller内部的抽象。而什么是MPLAP和爱特梅尔Studio中的主要区别,考虑到C语言编程。

3
不起眼的PIC单片机无法做到的dsPIC可以做什么?
到目前为止,我还没有使用过DSP芯片。我所知道的是,它们的体系结构使得它们可以相当快地执行计算,通常在一个时钟周期内,它们在指令集中具有乘法累加指令,并且具有DMA,因此CPU不必浪费宝贵的时间来移动数据。周围。我认为还有更多内容,但这是一些基本要点。 我可以看到Microchip的DSP芯片是dsPIC。我们不能仅使用还内置有乘法器的PIC18或PIC32来进行DSP处理吗?dsPIC与普通PIC有何不同? 我的主要问题是,为什么我们需要一个单独的,独特的DSP芯片,而不在所有微控制器上都集成高精度浮点单元计算功能?当然,利用我们现在的处理技术,这应该不会占用太多空间。 另外,我怎么知道我需要在项目中使用DSP芯片而不是普通的微控制器>
10 pic  dsp 

2
将可变字符打印到UART不起作用,常数可以正常工作
我在PIC18F27K40单片机上的XC8有一个很奇怪的问题。在PIC16F1778上它可以工作。我定义了: void uart_putch(unsigned char byte) { while (!PIR3bits.TX1IF); TX1REG = byte; } 在我的main循环中,当我致电时uart_putch('a');,它工作正常。但是,当我定义const char c = 'a';并调用时uart_putch(c);,它不起作用。它打印出一些内容,尽管不是a-我认为它们是0x00字符,是我从中得到的hexdump -x /dev/ttyUSB0。这不是我计算机上串行端口的问题;我看了一下示波器,信号却不同(左起作用,右没有): 代码很简单: void main(void) { init(); // Sets up ports and UART control registers while (1) { uart_putch('a'); // or c } } 我认为与之相关的任何字符串函数(puts,printf等)也不起作用,因此在这个问题中,我用字符做了一个最小的工作示例。 使用变量时生成的程序集c具有: _c: db low(061h) global __end_of_c _main: ; …

3
SPI总线连接-循环还是不循环?
我对SPI总线的物理连接有疑问。 我有一个SPI主设备(一个PIC32器件)和多个从设备(在本例中为PIC16器件)。我只写信给从机,协议负责何时执行从属协议,所以没有MISO或SS信号可担心,我只是将数据和时钟线与所有从机并行。总线的总长度不超过几英尺(例如60厘米),我正在以8MHz运行SCK。 现在,从设备(实际上是其他板上的接口节点)的物理位置使得SPI总线直接回到主机,这样就可以将每个环路的两端分别连接到MOSI和SCK。 下图显示了我的意思-我说的是红色虚线连接-问题是:执行此操作是否是一件好事? 我的电源和地线也经历了类似的旅程,这显然是有用的,因为它最大程度地减小了由从站引起的电压降,因此非常有用。但是,我不知道对这些信号线进行相同的操作是好是坏。相反,我应该允许某种类型的端接-接地电阻(?)-还是串联电阻以抑制反射,或者什么? 可以说,无论是否有连接点,我都尝试过,并且在功能上没有任何区别,也没有变化,但是也许它长于60cm或快于8Mhz,我有问题吗?因此,我正在寻找有关该操作的建议,以防万一发生任何变化。 尽管对于8Mhz的60cm SPI总线,这个问题特别令人困扰,但对于其他情况,是否有任何一般原则?也许I2c总线上的上拉电阻应该放置不同? 任何适合的阅读材料的链接也将受到欢迎-我没有发现任何涵盖此特定问题的内容。

3
FSInit()-“ CE_BAD_PARTITION” [关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使其成为电气工程堆栈交换的主题。 9个月前关闭。 我正在使用PIC18F26K80和XC8编译器。我正在尝试初始化SD卡并创建文件。我已经简单地格式化了Windows上的SD卡,使其具有“ FAT32”文件系统和512字节的“分配单元大小”。SD卡的容量为2GB。我正在使用MLA旧版中的MDD库。我的主要内容如下: FSFILE * file; char sendBuffer[22] = "This is test string 1"; //************************************************** // main function //************************************************** int main() { initIO(); LATBbits.LATB0 = 0; // Initialise SPI and SD-card while ( !MDD_MediaDetect() ); // Initialize the device while ( !FSInit() ); // Initialize #ifdef ALLOW_WRITES …
9 pic  spi  sd  fat 

1
似乎无法写入SPI Flash
好吧,我已经坚持了一段时间,目前大概需要2-3周。我只是不确定自己在做什么错。我正在尝试对此spi flash部分进行写操作,现在我只是在运行例程来擦除,写和读以尝试隔离它,但到目前为止还算不上什么。当然,我已经解决了很多错误。 无论如何,我都将WP线绑在板上,并且将时钟频率降低到200khz,然后运行擦除例程,它看起来像这样: 首先,我仅检查ID以进行调试,即9F命令,然后使用06命令设置WREN,将C7整个芯片擦除,然后使用05检查状态位,这很明显。这东西的芯片擦除时间只有35ms。 现在,我重新加载代码并尝试写: 首先,我将WREN设置为06,检查状态以确保WREN设置为05,然后将页面编程命令02发送到地址0x000000。您可以看到,我正在将Deadcafe写为前几位。同样在此处未显示的是写入完成(一页或256字节)后,我发送了0x04命令来禁用WREN。我观察到了这一点,并且确实将页面缓冲区的最后四个字节设置为0xAA,0x55​​、0xAA,0x55​​,并且在CS变高之前我就看到了它们。 现在,停止重新加载代码并尝试运行读取周期: 发送0x03作为读取命令,发送0x000000作为地址,然后...从设备返回所有0xFF。 我可以看到设备响应我的读取ID并设置了WREN命令,因此我知道它可以听到我的声音并且可以响应。我目前不知道我在做什么错。我想我将重新阅读数据表,并尝试一些尝试,但是如果有人有任何见解,我将不胜感激。这将是又一个令人沮丧的周末,正在研究这个问题。
9 pic  spi  flash 


2
通过FPGA进行PIC编程
我想知道是否有一种通过FPGA卡首次编程PIC(以Flash写入)的方法。 PIC已经焊接到FPGA了,我无法将其移除。PIC上不存在引导程序。因此,我需要使用引导加载程序以USART / SPI / I2C模式对其进行编程,以便它可以从FPGA接收数据。 我知道通常我必须拆焊,将其连接到PICKit之类的硬件程序员,并使用MPLAB之类的计算机上的软件对其进行编程,但是我负担不起。 我可以使用MPLAB(一个.hex文件)生成引导加载程序,但是如何将其传输到FPGA,然后通过FPGA引脚传输到PIC? 使用的PIC是Microchip PIC12F1822。

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.