Arduino + LCD 128x64 - Виснет при загрузке скетча.
- Войдите на сайт для отправки комментариев
Чт, 18/09/2014 - 15:38
Доброго времени суток!
Решил сделать небольшой велокомпьютер на Arduino и столкнулся со следующей проблемой:
Arduino зависает на 90% при загрузке скетча. Очень похоже на нехватку памяти, так как при закоментировании любых функций, скетч загружается. Но компилятор при этом выдает, что размер скетча 9 270 байт (из 258 048 байт максимум). Видимо я не совсем понимаю работу Arduino. Подскажите, пожалуйста, что я делаю не так?
P.S. При всем этом, прекрасно загружается и работает Demo от GLCD объемом 16Кб.
#include <glcd.h> static uint8_t Display[] PROGMEM = {128, 64, 0x00, 0x2C, 0x2A, 0x1A, 0x00, 0x3E, 0x0A, 0x04, 0x00, 0x3E, 0x22, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x3E, 0x08, 0x3E, 0x00, 0x3E, 0x0A, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFA, 0x06, 0x06, 0x06, 0x06, 0xFA, 0xFC, 0x00, 0x00, 0xFC, 0xFA, 0x06, 0x06, 0x06, 0x06, 0xFA, 0xFC, 0x00, 0x00, 0x00, 0xBC, 0x42, 0x42, 0x42, 0xBC, 0x00, 0xBC, 0x42, 0x42, 0x42, 0xBC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFA, 0x06, 0x06, 0x06, 0x06, 0xFA, 0xFC, 0x00, 0x00, 0xFC, 0xFA, 0x06, 0x06, 0x06, 0x06, 0xFA, 0xFC, 0x00, 0x00, 0xFC, 0xFA, 0x06, 0x06, 0x06, 0x06, 0xFA, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF7, 0xEB, 0x1C, 0x1C, 0x1C, 0x1C, 0xEB, 0xF7, 0x00, 0x00, 0xF7, 0xEB, 0x1C, 0x1C, 0x1C, 0x1C, 0xEB, 0xF7, 0x00, 0x10, 0x00, 0x07, 0x08, 0x08, 0x08, 0x07, 0x00, 0x07, 0x08, 0x08, 0x08, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF7, 0xEB, 0x1C, 0x1C, 0x1C, 0x1C, 0xEB, 0xF7, 0x00, 0x00, 0xF7, 0xEB, 0x1C, 0x1C, 0x1C, 0x1C, 0xEB, 0xF7, 0x00, 0x00, 0xF7, 0xEB, 0x1C, 0x1C, 0x1C, 0x1C, 0xEB, 0xF7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x2F, 0x30, 0x30, 0x30, 0x30, 0x2F, 0x1F, 0x00, 0x00, 0x1F, 0x2F, 0x30, 0x30, 0x30, 0x30, 0x2F, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x2F, 0x30, 0x30, 0x30, 0x30, 0x2F, 0x1F, 0x00, 0x00, 0x1F, 0x2F, 0x30, 0x30, 0x30, 0x30, 0x2F, 0x1F, 0x00, 0x00, 0x1F, 0x2F, 0x30, 0x30, 0x30, 0x30, 0x2F, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x80, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x80, 0xC0, 0x00, 0x80, 0x40, 0x80, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x80, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x80, 0xC0, 0x00, 0x80, 0x40, 0x80, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x62, 0x92, 0x92, 0x62, 0x02, 0x62, 0x92, 0x92, 0x62, 0x00, 0x03, 0x01, 0x63, 0x90, 0x91, 0x62, 0x01, 0x60, 0x93, 0x91, 0x62, 0x00, 0x02, 0xFE, 0x02, 0x02, 0x02, 0x62, 0x92, 0x92, 0x62, 0x02, 0x62, 0x92, 0x92, 0x62, 0x00, 0x03, 0x00, 0x63, 0x90, 0x93, 0x61, 0x03, 0x60, 0x92, 0x91, 0x62, 0x00, 0x02, 0x02, 0xFF, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x00, 0x63, 0x93, 0x92, 0x62, 0x00, 0x02, 0xFE, 0x02, 0x02, 0x62, 0x92, 0x90, 0x63, 0x01, 0x63, 0x90, 0x91, 0x62, 0x01, 0x60, 0x93, 0x91, 0x62, 0x00, 0x02, 0xFE, 0x02, 0x02, 0x02, 0x02, 0x62, 0x92, 0x90, 0x63, 0x00, 0x63, 0x90, 0x93, 0x61, 0x03, 0x60, 0x92, 0x91, 0x62, 0x00, 0x02, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x20, 0x20, 0x23, 0x24, 0x24, 0x23, 0x20, 0x23, 0x24, 0x24, 0x23, 0x20, 0x24, 0x20, 0x23, 0x24, 0x24, 0x23, 0x20, 0x23, 0x24, 0x24, 0x23, 0x20, 0x20, 0x3F, 0x20, 0x20, 0x20, 0x23, 0x24, 0x24, 0x23, 0x20, 0x23, 0x24, 0x24, 0x23, 0x20, 0x24, 0x20, 0x23, 0x24, 0x24, 0x23, 0x20, 0x23, 0x24, 0x24, 0x23, 0x20, 0x20, 0x20, 0xFF, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x23, 0x24, 0x24, 0x23, 0x20, 0x20, 0x3F, 0x20, 0x20, 0x23, 0x24, 0x24, 0x23, 0x20, 0x23, 0x24, 0x24, 0x23, 0x20, 0x23, 0x24, 0x24, 0x23, 0x20, 0x20, 0x3F, 0x20, 0x20, 0x20, 0x20, 0x23, 0x24, 0x24, 0x23, 0x20, 0x23, 0x24, 0x24, 0x23, 0x20, 0x23, 0x24, 0x24, 0x23, 0x20, 0x20, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x41, 0x3E, 0x00, 0x46, 0x49, 0x31, 0x00, 0x01, 0x7F, 0x01, 0x00, 0x14, 0x00, 0x00, 0x36, 0x49, 0x49, 0x36, 0x00, 0x36, 0x49, 0x49, 0x36, 0x00, 0x36, 0x49, 0x49, 0x36, 0x00, 0x36, 0x49, 0x49, 0x36, 0x00, 0x36, 0x49, 0x49, 0x36, 0x00, 0x40, 0x00, 0x36, 0x49, 0x49, 0x36, 0x00, 0x36, 0x49, 0x49, 0x36, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; static uint8_t B_0[] = {8, 24, 0xFE, 0xFD, 0x03, 0x03, 0x03, 0x03, 0xFD, 0xFE, 0xFB, 0xF1, 0x00, 0x00, 0x00, 0x00, 0xF1, 0xFB, 0x0F, 0x17, 0x18, 0x18, 0x18, 0x18, 0x17, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; static uint8_t B_1[] = {8, 24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF1, 0xFB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; static uint8_t B_2[] = {8, 24, 0x00, 0x01, 0x03, 0x03, 0x03, 0x03, 0xFD, 0xFE, 0xF8, 0xF4, 0x0E, 0x0E, 0x0E, 0x0E, 0x05, 0x03, 0x0F, 0x17, 0x18, 0x18, 0x18, 0x18, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; static uint8_t B_3[] = {8, 24, 0x00, 0x01, 0x03, 0x03, 0x03, 0x03, 0xFD, 0xFE, 0x00, 0x04, 0x0E, 0x0E, 0x0E, 0x0E, 0xF5, 0xFB, 0x00, 0x10, 0x18, 0x18, 0x18, 0x18, 0x17, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; static uint8_t B_4[] = {8, 24, 0xFE, 0xFC, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFE, 0x03, 0x05, 0x0E, 0x0E, 0x0E, 0x0E, 0xF5, 0xFB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; static uint8_t B_5[] = {8, 24, 0xFE, 0xFD, 0x03, 0x03, 0x03, 0x03, 0x01, 0x00, 0x03, 0x05, 0x0E, 0x0E, 0x0E, 0x0E, 0xF4, 0xF8, 0x00, 0x10, 0x18, 0x18, 0x18, 0x18, 0x17, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; static uint8_t B_6[] = {8, 24, 0xFE, 0xFD, 0x03, 0x03, 0x03, 0x03, 0x01, 0x00, 0xFB, 0xF5, 0x0E, 0x0E, 0x0E, 0x0E, 0xF4, 0xF8, 0x0F, 0x17, 0x18, 0x18, 0x18, 0x18, 0x17, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; static uint8_t B_7[] = {8, 24, 0x00, 0x01, 0x03, 0x03, 0x03, 0x03, 0xFD, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF1, 0xFB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; static uint8_t B_8[] = {8, 24, 0xFE, 0xFD, 0x03, 0x03, 0x03, 0x03, 0xFD, 0xFE, 0xFB, 0xF5, 0x0E, 0x0E, 0x0E, 0x0E, 0xF5, 0xFB, 0x0F, 0x17, 0x18, 0x18, 0x18, 0x18, 0x17, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; static uint8_t B_9[] = {8, 24, 0xFE, 0xFD, 0x03, 0x03, 0x03, 0x03, 0xFD, 0xFE, 0x03, 0x05, 0x0E, 0x0E, 0x0E, 0x0E, 0xF5, 0xFB, 0x00, 0x10, 0x18, 0x18, 0x18, 0x18, 0x17, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; static uint8_t S_0[] = {4, 8, 0x36, 0x41, 0x41, 0x36, }; static uint8_t M_0[] = {5, 16, 0xDE, 0x01, 0x01, 0x01, 0xDE, 0x03, 0x04, 0x04, 0x04, 0x03, }; static uint8_t M_1[] = {5, 16, 0x00, 0x00, 0x00, 0x00, 0xDF, 0x00, 0x00, 0x00, 0x00, 0x07, }; static uint8_t M_2[] = {5, 16, 0xC0, 0x21, 0x21, 0x21, 0x1E, 0x03, 0x04, 0x04, 0x04, 0x00, }; static uint8_t M_3[] = {5, 16, 0x02, 0x21, 0x21, 0x21, 0xDE, 0x02, 0x04, 0x04, 0x04, 0x03, }; static uint8_t M_4[] = {5, 16, 0x1F, 0x20, 0x20, 0x20, 0xDF, 0x00, 0x00, 0x00, 0x00, 0x07, }; static uint8_t M_5[] = {5, 16, 0x1E, 0x21, 0x21, 0x21, 0xC0, 0x00, 0x04, 0x04, 0x04, 0x03, }; static uint8_t M_6[] = {5, 16, 0xDE, 0x21, 0x21, 0x21, 0xC0, 0x03, 0x04, 0x04, 0x04, 0x03, }; static uint8_t M_7[] = {5, 16, 0x00, 0x01, 0x01, 0x01, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x07, }; static uint8_t M_8[] = {5, 16, 0xDE, 0x21, 0x21, 0x21, 0xDE, 0x03, 0x04, 0x04, 0x04, 0x03, }; static uint8_t M_9[] = {5, 16, 0x1E, 0x21, 0x21, 0x21, 0xDE, 0x00, 0x04, 0x04, 0x04, 0x03, }; void setup() { GLCD.Init(); GLCD.ClearScreen(); GLCD.DrawBitmap(Display, 0,0); //Вывод основного экрана. SpeedPrint(73.28); //Вывод скорости. } void DigitBigPrint(int digit, int x, int y) //функия отрисовки больших цифр { if (digit == 0) GLCD.DrawBitmap(B_0, x,y); if (digit == 1) GLCD.DrawBitmap(B_1, x,y); if (digit == 2) GLCD.DrawBitmap(B_2, x,y); if (digit == 3) GLCD.DrawBitmap(B_3, x,y); if (digit == 4) GLCD.DrawBitmap(B_4, x,y); if (digit == 5) GLCD.DrawBitmap(B_5, x,y); if (digit == 6) GLCD.DrawBitmap(B_6, x,y); if (digit == 7) GLCD.DrawBitmap(B_7, x,y); if (digit == 8) GLCD.DrawBitmap(B_8, x,y); if (digit == 9) GLCD.DrawBitmap(B_9, x,y); } void DigitMedPrint(int digit, int x, int y) //функия отрисовки средних цифр { if (digit == 0) GLCD.DrawBitmap(M_0, x,y); if (digit == 1) GLCD.DrawBitmap(M_1, x,y); if (digit == 2) GLCD.DrawBitmap(M_2, x,y); if (digit == 3) GLCD.DrawBitmap(M_3, x,y); if (digit == 4) GLCD.DrawBitmap(M_4, x,y); if (digit == 5) GLCD.DrawBitmap(M_5, x,y); if (digit == 6) GLCD.DrawBitmap(M_6, x,y); if (digit == 7) GLCD.DrawBitmap(M_7, x,y); if (digit == 8) GLCD.DrawBitmap(M_8, x,y); if (digit == 9) GLCD.DrawBitmap(M_9, x,y); } void DigitPrint(int type, int digit, int x, int y) //Вывод цифры по заданным координатам. { switch (type) { case 0: DigitBigPrint(digit,x,y); //Большие цифры break; case 1: DigitMedPrint(digit,x,y); //Средние цифры break; } } void SpeedPrint(float S) //функция вывода текущей скорости. { int s1, s2, s3, s4, s5; s5 = S*100; s4 = s5 - ((s5/10)*10); s3 = (s5/10) - ((s5/100)*10); s2 = (s5/100) - ((s5/1000)*10); s1 = (s5/1000) - ((s5/10000)*10); DigitPrint(1, s4, 39, 9); DigitPrint(1, s3, 33, 9); DigitPrint(0, s2, 22, 9); DigitPrint(0, s1, 12, 9); } void loop() { }
Забыл указать - Arduino Mega 2560
)) а зачем константы держать в оперативной памяти?
используй библиотеку pgmspace
#include <avr/pgmspace.h>
данные в нее загонять так
считывать так
Где будут размещены данные при закидывании их через PROGMEM? (Увы не могу найти информацию по организации памяти на Arduino.)
Исправил, но не могу понять как передать в GLCD.DrawBitmap масив. Он требует uint8_t.
данные будут хранится во флеше. они и так хранятся там, но при запуске загружаются в оперативную память. но зачем тратить опертивку если много данных которые не меняются
теперь работает или нет? в смысле загружается?
Нет.
Для теста, убрал один большой массив. Все равно не загружается.
Но если закомментировать все функции которые обращаются к заданным массивам, то все нормально загружается.
Если из программы убрать только функцию void DigitMedPrint(int digit, int x, int y), то также все загружается и работает.
когда выкладываешь код ставь галочку сворачивать код по умолчанию.
а почему неправильно пишешь?
у тебя
а я писал
да и еще. зачем делать кучу однотипных одномерных массивов? сделай двумерный))
к тому же упростит твою программу
Моя вина. Посчитал static и const за одно и то же. Но ничего не поменялось. Не загружает.
какие ошибки выдает?
на пинах 0 и 1 ничего не висит?
если нет просто замкни их открой терминал и отправь что нибудь. должно возвращаться
Замкнул, подключился через putty. В терминале пусто. При нажатии любой клавиши на Arduino мигает RX.
в ардуино иде есть свой терминал. кнопочка справа сверху. проверьте им
значит ничего не висит?
Да. Ничего не висит. Отправл через терминал. Ответ приходит.
хорошо. есть другая ардуина проверить для теста что у этой кристал не сдох?
а вообще если скетчи и больше пишутся значит пролема не в этом. попробуй скетч еще больше отправить
К сожалению, другой Arduino нет. :(
Сейчас залил скетч GLCDDemo 15 190 байт (из 258 048 байт максимум). Заливается, работает.
P.S. Но в логах пишет:
похоже чип подыхать изволил, завещание пора писать
Печально. :(
Буду пробовать выжимать из него что можно.
попробуй снова залить большой скетч. тоже выдаст или нет
Тоже самое, но количество checksum error всегда разное. Возможно влияет виртуальная машина на которой запущена среда разработки. Вечером/утром попробую на физической ПК повторить.
Проверил на физическом ПК.
Все скетчи которые у меня есть (и большие и маленькие) заливаются без ошибок (без checksum error).
Но с моим скетчем какие-то проблемы.
Вот этот загружается нормально:
А этот зависает:
Разница между ними только в массиве M[][]. В первом случае залил в него фиктивные данные, во втором правильные.
почему во втором массиве не 16 данных в строке а 15??? объявил же 16
Это моя невнимательность. Слишком много изменений и экспериментов :)
Да. Там должно быть 16. Исправил. Но на результат это не повлияло.
Но! Нашел закономерность. Arduino не навиться последовательность 0x21, 0x21, 0x21 в массиве. Исправил на 0x21, 0x21, 0x11 все забегало.
а ты в курсе что массив например на 16 элементов, а нумерация элементов от 0 до 15 а не от 1 до 16
Да. Это мы знаем.
то что ардуине не нравится хз. как могут данные влиять на загрузку. 21 или 11 в массиве. бред честно сказать
глючное железо
Видимо да, глючит. Главное что сейчас все запустилось. Будем делать на том что есть. Спасибо за помощь!
купи еще одну плату. пусть будет. а если уже железо глючит значит надо его выбрасывать, а то будешь искать черную кошку в черной комнате, особенно если ее там нет
Мне попадалась китайская 328 с глючным флешем , на каком-то размере выдавало ошибку , ща на этом м/к зашит фьюз доктор и работает- там не требуется большой размер.. Тут похоже тоже на битый флеш микроконтроллера.. причем очень близко к началу..