Вопросы начинающего Ардуинщика...
Очень хочется разобраться, но туплю по-страшному. Именно в программировании на Си (Ардуино IDE). Ещё два месяца тому назад я понятия не имел с данным синтаксисом. В наличии китайская Ардуино UNO (на CH340G). Кое-что ужЕ понимаю. На Спекке очень давно писал на Басике и Ассме, но без фанатизма. Сейчас есть цель написать поддержку автономного программатора для отечественного микроконтроллера 1986ВЕ91Т на базе Ардуино. Связь через UART (Rx-Tx с преобразователем UART TTL <-> RS-422), чтение с SD. Железо всё ужЕ разработал и собрал - всё работает. Фото будет чуть позже. Нужен человек (люди), способный спокойно подсказать по алгоритму и синтаксису.
Сейчас дошло время до процедуры начальной синхронизации с МК. Там по даташиту и исходникам для ПЦ (тоже на Си++ ) всё довольно "протсто":
1. Цикле заслали в порт 512 байт с кодом 0х00 (512 нулей). На ПЦ это делается дважды.
2. МК должен ответить тремя (3) байтами - 0d, 0a, 3e - это успешная синхронизация. На ПЦ просто проверяют, что пришло 3 байта и НЕ парсят их.
3. Если ответил иное - ошибка.
На ПЦ это выглядит так:
Код:
txdbuf[0] = 0x0;
for(i=0;i<512;i++)
com.WriteBlock(txdbuf,1);
if (!com.ReadBlock(rxdbuf,3))
{
for(i=0;i<512;i++)
com.WriteBlock(txdbuf,1);
if (!com.ReadBlock(rxdbuf,3))
{
str = "ошибка синхронизации!";
InsertStrToList();
com.Close();
return;
}
}
m_list.DeleteString(m_list.GetCount()-1);
str = "Синхронизация...ОК!";
Я родил вот это, но оно всегда пишет (у меня вывод на LCD 16X2) "Succes!".
Код:
void SYNC_1986(){ //функция синхронизации с 1986ВЕ91
lcd.clear();
lcd.setCursor(1,0);
lcd.print("Try to Sync...");
lcd.setCursor(5,1); //подготовим позицию для печати результата ("Failed!" / "Succes!")
while(Serial.available()) Serial.read(); //вот это работает - очищает буфер UART'перед работой!!!
for (int i=0; i < 512; i++){
Serial.write(0); //выдали в порт 512 байт 0х00
}
if (!Serial.available() == 3){ //приняли 3 байта от контроллера?
lcd.print("Failed!"); }
else {
lcd.print("Succes!");
}
}
Добавил фото программатора (внутри Ардуино УНО с обвесом).
https://b.radikal.ru/b22/2002/5e/54fa91729da2t.jpg
https://b.radikal.ru/b26/2002/4e/35c0bf81cf1at.jpg
https://d.radikal.ru/d25/2002/d2/724c8398b019t.jpg
https://d.radikal.ru/d06/2002/d1/87d8d5392b62t.jpg
https://c.radikal.ru/c18/2002/f1/09adcbfbc3dat.jpg
https://d.radikal.ru/d12/2002/00/c48d6509deabt.jpg
https://a.radikal.ru/a26/2002/a7/f3f3bdf40e80t.jpg
https://a.radikal.ru/a10/2002/78/3d261c415e6at.jpg