Страница 2 из 2

Re: адаптер 1-wire на max232

Добавлено: Пт фев 27, 2015 00:52:19
student2012
Господа коты прошу сильно не пинать по поводу выбора темы но уже голова кипит не могу найти инфы подскажите есть программатор AVR STK500 там стоит макс232 скажите если к ней подключить выходы от PL2003 будет работать или от пл маленькие выходные напряжения(почему спрашиваю при сборке программатора заклеил корпус наглухо ломать неохота) а с компортом беда надо перейти на юсб

Re: адаптер 1-wire на max232

Добавлено: Пт фев 27, 2015 15:14:43
YS
В USB-COM программаторах проблема не в напряжениях, а в разном физическом принципе реализации.

Если надо USB-программатор для AVR, сделайте такой программатор, например.

Re: адаптер 1-wire на max232

Добавлено: Ср мар 25, 2015 09:52:32
vinni_puh
Всем добрый день!

С недавнего времени до ужасу как приспичило)) короче учусь работать с устройствами 1wire, специально ради этого в С полез, безумно интересно, планов громадье, но дело не в этом)).

Разбираюсь вот с чтением серийного номера, и решил использовать наиболее простую в электрическом смысле схему -
http://we.easyelectronics.ru/electro-an ... ompom.html
Ранее о ней упоминали, дело там завязано на переключение скорости UART.
Писать я пытаюсь на С, в Линуксе, под VMWARE, UART у меня на FT232, проброшен туннелем до Линукс, и там он живет как
/dev/ttyUSB0.

Пока я как новичек, надежно добился 2-х результатов - уверенно получаю ответ на RESET, и путем нескольких вложенных циклов произвожу резкое переключение скоростей порта просто чтобы удостоверится что он переключается, и данные не искажаются, микруха не "захлебывается". Это последнее - просто для себя, к серийному номеру отношение не имеет.))

Подскажите пожалуйста правильные дальнейшие действия! Впервые влез в это, помогите разобраться!

Исходя из статьи, основное общение с таблеткой надо производить на скорости 115200, при этом я так понял, байт-команда передается целым блоком, а ответ - требует побитовое подтверждение получения? Или как?
В статье читаем - "1" - это 0хFF, "0" - 0x00. Значит, если я хочу передать допустим, 0х33 (110011) - это как правильно сделать?
Наверное, дополнить до 00110011, и передать справа налево так:
0хFF
0хFF
0x00
0x00
0хFF
0хFF
0x00
0x00
Могу я отправить этот байт блоком, не будет ли таблетка присылать подтверждение доставки?
Если я правильно понял, буду делать.)

Вслед, должен последовать ответ, который обнаруживается как искажение передаваемых данных, я так понимаю? Т.е если я передаю FF, а эхом приходит FE(rx и tx ведь соединены), значит таблетка передала "1", если FF - значит "0". Т.е я должен последовательно 64 раза послать FF, и смотреть что получится? Если так, один только вопрос - какую дать временную зедержку между отправкой 0х33 и попыткой чтения номера?

Заранее благодарю за ответ!

Re: адаптер 1-wire на max232

Добавлено: Ср мар 25, 2015 19:12:06
Мурик
Для компа давно есть готовые компоненты для работы с 1-Wire, в т. ч. и для Linux.
Посмотрите статью в журнале Радио №1 2015.
Компонент приложения с исходниками. ftp://ftp.radio.ru/pub/2015/01/OWire.zip

Re: адаптер 1-wire на max232

Добавлено: Ср мар 25, 2015 20:24:14
vinni_puh
Респект!!!

Вот это - вещь! Впервые вообще, из всего, что качал и пробовал - заработало с той схемой подключения, как в вышеупомянутой статье, серийник считал. ОК, спасибо, будем дальше осваивать. Вышеупомянутую т.н "говноляпскую") схему с этого момента считаю надежно работающей...

Re: адаптер 1-wire на max232

Добавлено: Вт мар 31, 2015 09:58:00
vinni_puh
Господа котейники!

Короче - то, о чем я спрашивал вначале, оказалось верно на 100%, и заработало. Таким образом, мой "адаптор" COM-1wire состоит всего лишь из 1 диода и 1 резистора.

Отрыл в инете готовый кусок кода для подсчета СРС8, он в итоге пригодился, тоже на 100% работоспособен, может кому пригодится.
-------------------------------------------------------------------
unsigned char crc8(unsigned char *kod)
{
unsigned char n,crc,temp,bayt;
crc=0;
for(n=0;n<7;n++)
{
bayt=kod[n];
for(temp=8;temp--;)
{
if((crc^bayt)&0x01)
crc = (crc>>1)^0x8c;
else crc>>=1;
bayt>>=1;
}
}
return crc;
}
-------------------------------------------------------------------