В МАП можно 1) Прочитать любую ячейку EEPROM по адресам 0 – 1023 (в том числе страницей по 16 байт) 2) Прочитать некоторые динамические данные, которые хранятся в памяти начиная с адреса 1024 (в том числе страницей по 16 байт). Список данных в памяти тестовой прошивке. 3) Записать байт в EEPROM по адресам 5 – 1023 4) Послать команду. Команда передается как запись байта по адресам a0a1a2=0-4 (реально только по адресу 0, другие как резерв на будущее). Список команд в тестовой прошивке. Протокол следующий : Посылка от PC идет с эхом (т.е. на каждый символ читаем эхо) – для исключения переполнения. Также при приеме символов от МАП надо обратно послать эхом этот-же символ. Если нет посылки в течении 5с МАП считает, что компьютер отключили. Все символами, Xi – цифры в шестнадцатиричном виде, все буквы заглавные:ABCDEF. 1) Чтение данных (по адресу a0a1a2 ) PCRDa0a1a2s0s1\r\n и ждем ответа – читаем от МАП МАП отвечает: MOkd0d1s0s1\r\n (подтверждение чтения и возврат данных d0d1 по адресу a0a1a2) или MErd0d1s0s1\r\n (МАП прислал ошибку, с кодом ошибки d0d1) 2) Чтение страницы данных (по адресу a0a1a2 ) – размер страницы 16 байт PCPRa0a1a2s0s1\r\n и ждем ответа MOkd0d1…16шт....d30d31s0s1\r\n (подтверждение чтения и возврат данных d0d1…d30d31 начиная с адреса a0a1a2) или MErd0d1s0s1\r\n (МАП прислал ошибку, с кодом ошибки d0d1) 3) Запись данных (по адресу a0a1a2 , данные d0d1, контрольная сумма s0s1) PCWRa0a1a2d0d1s0s1\r\n и ждем ответа MOk\r\n (подтверждение записи) или MErd0d1s0s1\r\n (МАП прислал ошибку d0d1) Контрольная сумма s - есть сумма по модулю 256 (т.е сумма в unsigned char игнорируя переполнения) всех цифр адреса ai в кодах символов (S(‘0’)=0x30 и т.д.) и непосредственно значение данных d0d1 как значение unsigned char и дополненная до 256. (т.е например PCWRa0a1a2d0d1s0s1\r\n : s0s1= (unsigned char)(255 – (S(a0)+S(a1)+S(a2)+d0d1))+1 или PCRDa0a1a2s0s1\r\n : s0s1=(unsigned char) (255 – (S(a0)+S(a1)+S(a2)))+1 или MOkd0d1s0s1\r\n : s0s1=(255 – d0d1)+1 или MOkd0d1…16шт....d30d31s0s1\r\n : s0s1=(255 – (d0d1+…+d30d31)+1 если теперь просуммировать все элементы по модулю 256 вместе с s0s1 – должен получится 0 . Пример – надо прочитать данные из EEPROM по адресу 0х59 1) Формируем посылку PCRD059F2\r\n (s0s1= (unsigned char)(255 – (0+5+9))+1=242=0xF2) Посылаем P читаем P …… Посылаем \n читаем \n 2) Теперь читаем с МАП (допустим (что, скорее всего) МАП пришлет данные, а не ошибку, т.е MOk7DEC\r\n , по адресу 0х59 в EEROM лежит EE_UAccNorm=125=0x7D) Читаем M посылаем М ………. Читаем \n посылаем \n