乐鑫技术交流
直播中

陈丽

7年用户 1496经验值
私信 关注
[问答]

esp8266使用DDRB PORTB或DDRD PORTD的代码不起作用是为什么?如何解决?

你好。
对将 arduino pro micro 的代码改编为 esp8266 的问题感兴趣。
据我了解,esp8266 不支持使用端口,它根本就没有。
使用 DDRB PORTB 或 DDRD PORTD 的代码不起作用,包括。给出编译器错误。
代码:全选   uint8_t pd = PIND & B10100; // pins 2 and 4 direct reading
   ((pd == B10100) || (pd == B00000)) ? encoderPos++ : encoderPos--;

总的来说,当然,有趣的是,ESP8266 是一个相当强大的模块,带有 80 MHz CPU 和板载 Wi-Fi,但它不能处理与速度较慢的 arduino UNO 或 PRO MICRO - 16 MHz 且没有 Wi-Fi 相同的代码.
就如何成为给出建议。
或者代码没有解决问题,需要在硬件上把ESP8266和UNO结合起来?
...
还有一个问题 - 也许有人遇到了 N5110_SPI 库?https://github.com/cbm80amiga/N5110_SPI我将 RST/CE/DC 的引脚连接到 ESP8266 的数字引脚中。并将 DIN/CLK 的引脚连接到硬件 SPI 引脚。诺基亚 5110 的显示屏不显示图像。



告诉我一些关于如何成为的建议,或者是否只有一种解决方案 - 从 atmega 328p 和 ESP8266 上取一块板?

               


                        

回帖(1)

手托初梦

2023-12-29 11:00:50
您所说的是正确的,ESP8266是不支持使用端口的。它擅长使用GPIO。DDRB,PORTB,DDRD和PORTD是Arduino AVR Microcontroller的寄存器。在ESP8266上,您需要使用GPIO寄存器来控制引脚。

要解决您的问题,请考虑以下步骤:

1. 将引脚从端口B / D切换到GPIO。查找ESP8266上的GPIO引脚图,并将引脚重新连接到所需的GPIO引脚上。请注意,有时需要更改代码中引脚号的定义。

2. 更改代码以使用适当的ESP8266 GPIO寄存器。您需要找到对应于DDR,PORT和PIN寄存器的寄存器。在ESP8266上,这些寄存器被称为GPIOx_MUX_REG,GPIOx_OUT_REG和GPIOx_IN_REG,其中x是GPIO号。

3. 在更改代码后,重新编译并上传到ESP8266。

请注意,ESP8266芯片是相当强大的,但是与Arduino AVR Microcontrollers相比,它的GPIO速度较慢。因此,在GPIO输入读取和输出设置的情况下,您需要自己进行测试和调整。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分