พบปัญหาว่า บอร์ดESP8266(รุ่นบอร๋ดดำ)บู้ตไม่ขึ้น หลังจากที่Uploadผ่าน USB TTL โดยที่ Serial Baud rate = 115200, RST ปล่อยลอย และ GPIO0 ลง GND(เช่นโค้ด Blink ใน example ของ Arduino IDE) พบว่าใน Serial monitor ขึ้น Fatal exception (28)
อยากทราบว่าสาเหตุเกิดจากอะไร? จะแก้ไขอย่างไรครับ?
===========
ARDUINO IDE
===========
Running stub...
Stub running...
Configuring flash size...
Auto-detected Flash size: 1MB
Compressed 264896 bytes to 193428...
Writing at 0x00000000... (8 %)
Writing at 0x00004000... (16 %)
Writing at 0x00008000... (25 %)
Writing at 0x0000c000... (33 %)
Writing at 0x00010000... (41 %)
Writing at 0x00014000... (50 %)
Writing at 0x00018000... (58 %)
Writing at 0x0001c000... (66 %)
Writing at 0x00020000... (75 %)
Writing at 0x00024000... (83 %)
Writing at 0x00028000... (91 %)
Writing at 0x0002c000... (100 %)
Wrote 264896 bytes (193428 compressed) at 0x00000000 in 17.2 seconds (effective 123.4 kbit/s)...
Hash of data verified.
Leaving...
Soft resetting...
==============
Serial Monitor
==============
Fatal exception (28):
epc1=0x4000228b, epc2=0x00000000, epc3=0x00000000, excvaddr=0x000000b5, depc=0x00000000
Fatal exception (28):
epc1=0x4000228b,
============
Board config
============
Board = Generic ESP8266 Module
Builtin Led = 2
Upload Speed = 11520
CPU frequency = 80 MHz
Crystal Frequency = 26 MHz
Flash size = 1MB(FS:64KB OTA:470KB)
Flash Mode = DIO
Flash Frequency 40 MHz
Reset Method = no dtr (aka ck)
Debug port = Disable
Debug level = None
iwIP Variant = v2 Lowe Memory
VTable = Flash
ตามข้อมูลอัพโหลดได้สำเร็จ 100% บอร์ดไม่มีปัญหา
เช็คว่าขา CH_PD ต่อกับขา VCC และเช็คโค้ด ลองใช้โค้ดง่าย ๆ เช่นไฟกระพริบทดสอบครับ
"หลังจากที่Uploadผ่าน USB TTL โดยที่ Serial Baud rate = 115200, RST ปล่อยลอย และ GPIO0 ลง GND"
1. เอาขา GND ที่ต่อกับ GPIO0 ออก เพื่อออกจากโหมด Flash เป็นโหมดทำงาน
2. เช็คว่าขา CH_PD ต่อกับขา VCC และเช็คโค้ด ลองใช้โค้ดง่าย ๆ เช่นไฟกระพริบทดสอบ
3. ถ้าอัพโหลดได้สำเร็จ 100% มีไฟกระพริบ แสดงว่าบอร์ดทำงานได้ถูกต้องครับ
ตอนuploadเสร็จ จริงแล้วก่อนจะทำการ Hardware reset (RST ลง GND) ก็ได้ปลดให้ GPIO0 ลอยแล้ว แต่ปัญหา Fatal exception (28) ก็ยังอยู่
มีคนอื่นบอกว่า error code epc1=0x4000228b อาจจะเป็นปัญหาเกี่ยวกับ Flash memory บางคนว่า Erase แล้วหาย แต่ผมลองเปลี่ยน ฺBoard Configuration ในส่วนของ Flash Mode ที่จากเดิมเป็น DIO ให้เป็น DOUT ปรากฎว่า บอร์ดสามารถทำงานได้เป็นปกติแล้ว
แต่ยังมีข้อสงสัยอยู่ว่า ผมใช้ code ทดสอบไฟกระพริบ โดยให้ควบคุม buildin LED และ LED ที่ต่ออยู่กับขา GPIO2 ต่ามโค้ดข้างล่าง
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
pinMode(2, OUTPUT);
}
void loop() {
digitalWrite(LED_BUILTIN, HIGH);
digitalWrite(2, HIGH);
delay(1000);
digitalWrite(LED_BUILTIN, LOW);
digitalWrite(2, LOW);
delay(1000);
}
ผลลัพธ์คือ LED ที่ต่อกับ GPIO2 กระพริบ แต่ buildin LED ไฟติดค้าง
code ที่สั่งงาน buildin LED ถูกต้องหรือเปล่าครับ? หรือต้องทำอย่างไรเพิ่ม?
โค้ดผิด เช็คตามนี้ครับ https://github.com/esp8266/Arduino/issues/3165