标签: pic

PIC 18F上的PORT和LATCH之间的差异

我已经阅读了数据表和谷歌,但我仍然不明白.

在我的例子中,我在INPUT模式下设置PIC18F26K20的PIN RC6:

TRISCbits.TRISC6 = 1;

然后我用PORT和LATCH读取值,我有不同的价值!

v1 = LATCbits.LATC6;

v2 = PORTCbits.RC6;

v1给出0,其中v2给出1.

这是正常的吗?在这种情况下,我们必须使用PORT,在这种情况下LATCH?

port pic pic18

25
推荐指数
3
解决办法
7万
查看次数

@登录C变量声明

我发现PIC微控制器的这个头文件名为pic1250.h,我无法理解其中使用的一些语法.

该文件的来源是:

/*
 *  Header file for the Microchip 
 *  PIC 12c508 chip 
 *  PIC 12c509 chip
 *  Baseline Microcontrollers
 */

static volatile unsigned char   RTCC    @ 0x01;
static volatile unsigned char   TMR0    @ 0x01;
static volatile unsigned char   PCL @ 0x02;
static volatile unsigned char   STATUS  @ 0x03;
static          unsigned char   FSR @ 0x04;
static volatile unsigned char   OSCCAL  @ 0x05;
static volatile unsigned char   GPIO    @ 0x06;

static          unsigned char control   OPTION  @ 0x00;
static volatile unsigned char …
Run Code Online (Sandbox Code Playgroud)

c embedded header-files pic

25
推荐指数
4
解决办法
2616
查看次数

PIC(或类似产品)编程入门

如何开始编程PIC(或类似产品)?

最好是在C.什么是一些很好的初学者工具包,教程,书籍等?也许一些小机器人项目的想法.

c microcontroller pic

16
推荐指数
2
解决办法
2606
查看次数

视觉工作室2010中的pic32项目

有没有人设法配置VS2010来构建和调试PIC32单片机上的嵌入式项目?那里有没有教程?

使用WinGDB,我可以连接到gdb服务器以逐步执行vs2010中的代码(已经测试了这个编译和调试到linux目标).

微芯片开发工具似乎是基于gcc的修改副本,缺少gdb,但是有第三方mips编译器工具链可用于gdb.据我所知,微芯片调试接口是专有的,在此设置中无法使用,但PIC32支持JTAG调试,我有一个amoctec jtagkey 2,openocd支持.

我目前对方法的想法是:

  • 建立在Windows下的mips gcc
  • 程序芯片与Pickit3命令行工具
  • 使用openocd为目标设备提供gdb服务器
  • 使用winGDB从visual studio 2010连接到gdb服务器

microchip pic visual-studio-2010

15
推荐指数
1
解决办法
1563
查看次数

免费的PIC C编译器

我正在为PIC寻找一个免费的,可能是开源的C编译器.我可能没有C,但我想得到两个选择.

那里有各种编译器,但由于我之前从未进行过PIC开发,我正在寻找用户体验和建议.我的目标是PIC16F88x系列

pic

14
推荐指数
3
解决办法
5万
查看次数

MPLAB的免费替代方案(PIC开发)

我最近开始使用MPLAB,但对于使用Eclipse和VS IDE的人来说,它非常有限.您知道任何免费的IDE或如何配置Ecplise或Netbeans到PIC开发吗?

谢谢大家

ide embedded microcontroller pic mplab

14
推荐指数
3
解决办法
2万
查看次数

为什么uint16_t在这里有所作为?

volatile uint16_t r;
unsigned char poly = 0x07;
unsigned char c = 0;

r = (c << 8) ^ poly;
Run Code Online (Sandbox Code Playgroud)

当在Linux上用gcc编译代码时,r7.
当Microchip C18编译相同的代码时,r0.
为什么?

如果我将其更改为:

volatile uint16_t r;
uint16_t poly = 0x07;
uint16_t c = 0;

r = (c << 8) ^ poly;
Run Code Online (Sandbox Code Playgroud)

r也变成7了C18.

C18手册中有关于整数提升的部分,但我认为这与我的问题无关.无论如何,这里是:

ISO要求所有算术都以int精度或更高精度执行.默认情况下,MPLAB C18将以最大操作数的大小执行算术运算,即使两个操作数都小于int.可以通过-Oi命令行选项来设置ISO强制行为.

c microcontroller integer pic

13
推荐指数
1
解决办法
1309
查看次数

32位x86代码是否需要针对共享库文件进行特殊的PIC编译?

如果要将目标文件作为共享库(.so)加载,则编译代码到目标文件需要与位置无关,因为在不同进程中加载​​共享对象文件的基本虚拟地址可能不同.

现在,当我尝试在32位x86计算机上加载.so没有-fpicGCC选项编译和链接的文件时,我没有遇到错误,而在64位x86计算机上它失败了.

我发现的随机网站说我不需要-fpic在32位上,因为-fpic根据X86 32位ABI 编译而没有巧合的代码也是以与位置无关的方式使用的.但我仍然发现软件在32位版本中附带了不同版本的库:一个用于PIC,另一个用于非PIC.例如,intel编译器随附,libirc.a并且libirc_pic.a后者被编译为与位置无关的模式(如果想要将该.a文件链接到.so文件中).

我想知道使用-fpic和不使用它的确切区别是32位代码,以及为什么有些软件包(如intel编译器)仍然附带了不同版本的库?

c linux shared-libraries elf pic

13
推荐指数
2
解决办法
1106
查看次数

在Microchip C18中,为什么插入NOP会导致更大的代码?

我在ISR中有一些代码.代码是为了完整性而给出的,问题只是关于注释掉的__asm_块.

如果没有__asm_块,则会将其编译为82条指令.使用__asm_块,结果是107条指令.为什么差别很大?

这是C代码:

if (PIR1bits.SSPIF)
{
    spi_rec_buffer.read_cursor = 0;
    spi_rec_buffer.write_cursor = 0;

    LATAbits.LATA4 ^= 1;
//      _asm nop nop _endasm
    LATAbits.LATA4 ^= 1;

    while (!PORTAbits.NOT_SS && spi_rec_buffer.write_cursor < spi_rec_buffer.size)
    {
        spi_rec_buffer.data[spi_rec_buffer.write_cursor] = SSPBUF;
        SSPBUF = spi_out_msg_buffer.data[spi_out_msg_buffer.read_cursor];
        PIR1bits.SSPIF = 0;
        spi_rec_buffer.write_cursor++;
        spi_out_msg_buffer.read_cursor++;
        if (spi_out_msg_buffer.read_cursor == spi_out_msg_buffer.write_cursor)
            LATAbits.LATA4 = 0;
        LATBbits.LATB1 = 1;
        while (!PORTAbits.NOT_SS && !PIR1bits.SSPIF);
        LATBbits.LATB1 = 0;
    }

    spi_message_locked = true;
    spi_message_received = true;

}
Run Code Online (Sandbox Code Playgroud)

没有NOP:

BTFSS     0x9e,0x3,0x0      if (PIR1bits.SSPIF)
BRA       0x2ba
                            {
MOVLB     0xf                   spi_rec_buffer.read_cursor = 0;
CLRF …
Run Code Online (Sandbox Code Playgroud)

c microcontroller pic pic18

11
推荐指数
1
解决办法
2388
查看次数

我需要什么微控制器(和其他组件)来创建定时器设备?

作为一个让自己摆脱困境的爱好项目,我想构建一个小程序员计时器设备.它基本上会接受一个程序,它是一个时间列表,然后从每次倒计时.

我想使用C或Java微控制器.我过去曾使用BASIC制作一个小型自主机器人,所以这次我想要一些不同的东西.

你会推荐什么微控制器和显示器?我希望保持简单,所以程序将通过计算机加载到内存中(串口正常,但USB会使它更容易)

embedded microcontroller pic countdown

10
推荐指数
3
解决办法
1771
查看次数