Прямой эфир

0
транзистор для разряда конденсатора
Есть же разрядный МОП-ключ, зачем еще один?
термостабилизации источников
Для простого измерителя это пижонство, ИМХО.
построение опорника
В конце 1 части, в секции PS, это исправлено.
0
Почему не поставить транзистор для разряда конденсатора, свободные ножки процессора есть.
И неплохо бы о термостабилизации источников тока подумать.
Про построение опорника говорили уже.
0
Rn о знает как сделать комбинированое устройство HID+MSD?
  • avatar
  • selevo
  • 29 июня 2020, 09:00
0
Эм… я не знаю зачем ты это делал и что туда прошивал. Я ни разу это не делал и впервые про это слышу. AVR-JTAG тоже работал без всяких там перепрошивок, что тот что по uart, что тот что через эмуляцию ICE2 на битбанге.

Не, оно не опенсорцное было, в том то и вся боль.
  • avatar
  • DIHALT
  • 28 июня 2020, 23:58
0
Хз. Я помню что прошивал еепром под CoLink и что мне не понравилось. И что работал либо CoLink, либо AVR-JTAG, пока еепром не перешьешь новыми ID'ами.
Ну, а раз проект сдох, то и поддержка новых версий ОС тоже отпала, а в винде старше 7ки все плагины и драйвера кокосовские перестали работать.
Вроде оно было опенсорсное и можно было доработать самому.
  • avatar
  • Vga
  • 23 июня 2020, 17:32
0
Ничего там не надо было в еепроме править. Еепром на фтди была просто потому, что была. Мало ли кто захочет поэкспериментировать с еепром на фтди и посмотреть что будет.

Смена отладочных шилдов никак не затрагивала ее вообще и никаких там 100500клонов колинка не появлялось. А сам CoLink отлично работал, очень быстро, четко и безглючно. Поддерживал многие контроллеры, а убить его вообще было нереально, в отличии от вечно дохнущих СТЛинков. Из минусов только ног требовал под отладку больше т.к. не умел swd.

Главная проблема же стала в том, что в один момент сам проект CoCoox перестал существовать. То ли их купил кто, то ли случилось чего. Но сайт просто ушел даун со всеми потрохами и больше не встал.

Все их наработки, а их было огромное количество IDE, RTOS, свой аналог куба, отладчики тоже единоразово сдохли. Вообще не понимаю как так? Даже следов не осталось. Словно в их штабквартиру попала авиабомба и убила вообще всех.

Ну, а раз проект сдох, то и поддержка новых версий ОС тоже отпала, а в винде старше 7ки все плагины и драйвера кокосовские перестали работать. Соответственно я и стал в нагрузку к кокосовскому отладчику класть еще и стлинк. Не вместо, а бонусом.
  • avatar
  • DIHALT
  • 23 июня 2020, 00:14
0
Есть, отчего ж нет.
  • avatar
  • Vga
  • 18 июня 2020, 14:32
0
Есть ли еще интерес к поставленному Вами вопросу?) На днях собрал кандидатский минимум на плате (проц, питание, зарядка и контроллер с мелкой шелухой), правда пришлось заменить STM на GD32…
спойлер: тестовый запуск показал ~70ма на mp3 320/44100/16/стерео
0
А на Си будет?
  • avatar
  • selevo
  • 05 июня 2020, 17:15
0
Немного добавил в статью по комментариям, спасибо всем прокомментировавшим.
0
все жду когда же будет V-USB sound card
Или ссылку если есть такой уже.
Спасибо.
  • avatar
  • selevo
  • 21 мая 2020, 13:53
0
Да, есть такое… ИРПС описаны в стандарте ИРПС/IFFS (ОСТ 11305.916-84). За рубежом интерфейс “Токовая петля” называется “Current Loop”. Специфицирован он в стандартах IEC 62056-21 / DIN 66258.
Справедливости ради mypractic.ru/urok-52-interfejs-irps-cifrovaya-tokovaya-petlya-princip-dejstviya-parametry-sxemnaya-realizaciya.html
Уровень логической 1 Ток 15 … 25 мА (для ИРПС 20 мА)
Ток 30 … 50 мА (для ИРПС 40 мА)
Уровень логического 0 Ток 0 … 3 мА (для ИРПС 20 мА)
Ток 5 … 10 мА (для ИРПС 40 мА)
Так что можно управлять открытым коллектором для ИРПС 20 мА
+1
В токовой петле как раз открытый коллектор и применяется. 4-20 ма не единственный стандарт. Токовая петля не обязательно аналоговая. Главное отличие наличие обратной связи для стабилизации тока лог. «1» и «0».
  • avatar
  • velzor
  • 10 мая 2020, 22:02
0
Добрый вечер. Надежда была, но все попытки остались тщетны. Всё больше думаю о какой-то проблеме с передачей адреса. Хотя по одному датчики опрашиваются адресно нормально — поэтому конфуз.
0
Доброго времени суток. Вечером обязательно попробую — длительный переезд на дачу. Спасибо большое
0
и, да, это «разница» с тем, что было в репозитарии. Репозитарий стОит обновлять ;)
  • avatar
  • vlbuel
  • 01 мая 2020, 00:17
0
Вот смотрите.
Исполняется if ((temp_state == 1)&&(to_convert < now)) — вы говорите «шинному автомату», что надо считать измереную температуру с датчика[0]. Он только начинает это делать (а скорее всего, даже не успевает начать), тут же исполняется «if (temp_state==2)» — и «шинному автомату» говорится, что надо считать измеренную температуру с датчика [1].
TransGetTemp — он же возвращает управелние не после того, как «дело сделано», и сразу — как только дал указание. И в результате на шину НЕ послано «датчик 0, дай температуру», а сразу посылается «датчик 1, дай температуру»… Многопоточность, оно такое.

Попробуйте так:

Попробуйте поправить так:
dk@dkw:/tmp$ diff -C 5 onewirehw.cpp onewirehw.fixrd.cpp 
*** onewirehw.cpp	2020-05-01 00:01:23.052005399 +0300
--- onewirehw.fixed.cpp	2020-05-01 00:01:10.752220026 +0300
***************
*** 321,330 ****
--- 321,331 ----
      {
        hw->buff[0] = 0x55;
        memcpydk(addr, hw->buff+1, 8);
        hw->buff[9] = 0xbe;
        hw->StartTransaction(10,9);
+       to_convert = OHW_CYCLES + 1200*ONEWIRECYCLESINMS; 
      }
  	
  void Troller::StartConvert()
      {
        hw->buff[0] = OW_SKIP_ROM;
***************
*** 414,424 ****
  		{
  			temp_state = 2;
  			TransGetTemp(Slaves_IDs[0]);
  			return;
  		}
! 		if (temp_state==2) 
  		{
  			temp_state = 3;
  			
  			temps[0] = Convert_temp(hw->buff);
  			TransGetTemp(Slaves_IDs[1]);
--- 415,425 ----
  		{
  			temp_state = 2;
  			TransGetTemp(Slaves_IDs[0]);
  			return;
  		}
! 		if ((temp_state==2)&&(to_convert < now)) 
  		{
  			temp_state = 3;
  			
  			temps[0] = Convert_temp(hw->buff);
  			TransGetTemp(Slaves_IDs[1]);


оно перед тем, как посылать команду на «датчик 1, дай температуру» ждет, пока исполнится «датчик 0, дай температуру».

Это очень непривычно, но оно так работает.

PS: на самом деле, оно не совсем корректно, тайминг завышен, и надо бы в автомат 1wire делать «finished», но так, по идее, доожно работать в реальных кейзах ;)
  • avatar
  • vlbuel
  • 01 мая 2020, 00:14
0
Владимир, добрый вечер. В принципе, я как только не пробовал переписывать автомат ns, даже отдельно заставлял конвертиться и считываться
//delay(10);
		if (!hw || !hw->IsReady()) return;
		
		if (temp_state == 0) 
		{
			temp_state = 1;
			StartConvertAdress(Slaves_IDs[0]);
			return;
		}  
		if ((temp_state == 1)&&(to_convert < now)) 
		{
			temp_state = 2;
			TransGetTemp(Slaves_IDs[0]);
			return;
		}
		if (temp_state==2) 
		{
			temp_state = 3;
			temps[0] = Convert_temp(hw->buff);
			StartConvertAdress(Slaves_IDs[1]);
			return;
		}
		if ((temp_state==3)&&(to_convert < now)) 
		{
			temp_state = 4;
			TransGetTemp(Slaves_IDs[1]);
			return;
		}
		if (temp_state==4)
		{
			temp_state = 0;
			temps[1] = Convert_temp(hw->buff);
			return;
		}

переставлял местами адреса — меняются местами датчики — считывается второй, а не считывается первый. Возможно, я так подумал, загадка кроется в ROM устройтсв.
У меня следующие:{40, 185, 105, 84, 10, 0, 0, 209} и {40, 255, 127, 169, 208, 22, 5, 16}
Не считывается второй. Вижу у него в ROM число 255, 8 единиц- у вас таких нет. Может, теряется первый или последний бит при передаче?!
  • avatar
  • adrvyho
  • 30 апреля 2020, 23:14
0
автора, фен + подогрев нижний.
  • avatar
  • amaora
  • 30 апреля 2020, 22:00
0
Вообще, смущает меня в ns как идет переход между temp_state: в состоянии 1, когда подходит время «считать показания», мы даем команду «считать датчик 0». Тут же перескакиваем в состояние 2, и даем команду считать уже датчик 1. Мне кажется, что как и в StartConvert надо установить время, когда уже можно будет давать следующую команду на шину (да в той же to_convert), и делать «if (temp_state == 2 && to_convert < now)».
Учитывая, насколько быстро происходит перещелкивание, скорее всего исполняется команда только для slave_id[1].

Ну и проблема с питанием тоже может быть (но уже после исправления вышеописанного), и если будет иметь место — стОит расширить машину состояний, чтобы измерять \ читать по очереди.
  • avatar
  • vlbuel
  • 30 апреля 2020, 00:46