Технический форум по робототехнике.
avr123.nm.ru писал(а):дак в вашем МК есть "железный" TWI ?
avr123.nm.ru писал(а):конечно, ведь автор может как угодно назвать файлы.
Приципите пожалуйста ваши i2c.c и i2c.h
avr123.nm.ru писал(а):ну как я и говорил - это библиоьеки twi - они не могут сделать интерфейс i2c на ножках IO кроме тех что закремплены за аппаратным TWI.
поэтому логично их назвать twi.
а библиотеки для i2с на МК без аппаратного TWI могут создавать интерфейс практически на любый ножках IO.
=DeaD= писал(а):Принял еще одно важное, как я считаю, для успеха проекта решение - нужно выкинуть из проекта всю софтовую часть на ПК, иначе буду вынужден влезать во все подряд среды разработки и делать там библиотеки. А это пока "некогда" - иначе сдохнуть можно
Ограничусь поиском и выкладыванием ссылок на примеры как во разных средах разработки достучаться к COM-порту.
Виталий писал(а):Я конечно не знаю, но мне кажется, что для проекта необходимы будут 2 вещи:
1. Четкое, ясное представление о протоколах взаимодействия, их спецификации.
2. Программная документация описывающая интерфейсы модулей и логику их работы.
3. Пример реализации под какой-либо средой.
Виталий писал(а):Программная документация на модуль описывающая логику его работы и внешние интерфейсы в корне отличается от примера реализации.
Первое может не содержать в себе ни строки кода...
Виталий писал(а):2. Программная документация описывающая интерфейсы модулей и логику их работы.
Виталий писал(а):3. Пример реализации под какой-либо средой.
AnsiString doRequest(AnsiString request, TCommPort* com){
AnsiString r=request+"\n";
char *cmd=r.c_str();
com->PutString(cmd);
char c;
AnsiString res="";
long int countdown=200000000;
int finish=0;
while(finish<2){
while(--countdown && (com->InBuffUsed==0));
if(countdown==0){
return "XFFTimeout!";
};
c=com->GetChar();
if(c=='R' || c=='X'){
finish=1;
};
if(finish==1 && c>=' '){ res=res+c; };
if(c=='\n' && finish==1){
finish=2;
};
};
return res;
};
doRequest("QFF000801",CommPort1);
doRequest("QFF002801",CommPort1);
doRequest("QFF000900",CommPort1);
doRequest("QFF002901",CommPort1);
doRequest("QFF000A00",CommPort1);
doRequest("QFF002A01",CommPort1);
doRequest("QFF000B00",CommPort1);
doRequest("QFF002B01",CommPort1);
if(CheckBox2->Checked){
doRequest("QFF000801",CommPort1);
}else{
doRequest("QFF000800",CommPort1);
};
AnsiString r=doRequest("QFF018C",CommPort1);
if(r=="R01"){
CheckBox6->Checked=TRUE;
}else{
CheckBox6->Checked=FALSE;
};