roboforum.ru

Технический форум по робототехнике.

пересылка данных по усарт

пересылка данных по усарт

к561ЛА7 » 29 мар 2011, 23:49

Джентльмены!

в бесконечном цикле "слейва" пишем

Код: Выделить всёРазвернуть
putchar('R');       // шлем как взадаче 6
gdvix = getchar();
if (getchar() == 'G'){
               
open0 = 100; // присваиваем число переменной open0
  };


В бесконечном цикле "мастера" пишем

Код: Выделить всёРазвернуть
gdvix = getchar();
if (getchar() == 'R'){
           
putchar('G');       //
   };   


тоесть слейв шлет R мастеру а мастер как только получил R шлет слейву G
и так по этой задумке они воде бы должны друг другу слать эти символы
со скоростью 250000 бод
начальный код настроил кодвизардом

(правда еще оба сваливаются на обработку небольшого внешнего прерывания 100 раз в секунду)

Будет ли эта схема работать? У меня почему-то она не идет
Последний раз редактировалось к561ЛА7 30 мар 2011, 00:23, всего редактировалось 1 раз.

Re: пересылка данных по усарт

Сергей » 30 мар 2011, 00:15

Поправь сообщение - добавить тег code, сделай текст читабельным и сформулируй нормально вопрос, ибо уже в который раз создаешь тему не изучив то, с чем работаешь.

Re: пересылка данных по усарт

к561ЛА7 » 30 мар 2011, 00:34

Человека, "изучившего темы", видно не по тому, как он их создает, а по тому, как он в них отвечает.

Re: пересылка данных по усарт

Raskolin » 30 мар 2011, 04:50

Судя по коду slave отправляет master символ R. Мастер принемает и записывает в переменную gdvix. И после они оба чего то ждут. Но никто друг другу ничего не отправляет. Если нужен именно такой расклад, то надо убрать строчки gdvix = getchar(); и включать сначала мастер, а потом слэйв.

Re: пересылка данных по усарт

Radist » 30 мар 2011, 05:34

Зачем мудрить? Слэйвы должны работать по запросу мастера. Запрос должен содержать адрес слэйва и контрольную сумму.

Re: пересылка данных по усарт

boez » 30 мар 2011, 12:25

Теоретически должна, но после первой ошибки передачи они оба заткнутся на getchar и будут друг друга ждать. Мастеру нужен некий таймаут, если слейв не ответил - то повторить посылку символа. То есть вместо getchar надо что-то неблокирующее использовать. Я обычно работу с уартом пишу сам, на прерываниях, так что по stdio на avr не подскажу как правильно сделать.

Re: пересылка данных по усарт

к561ЛА7 » 30 мар 2011, 15:05

задумка - то реализовать удаленное фазовое регулирование мощности
от мастера слейву. Но слейв "синхронизирован" по переходу фаза-ноль, которое может не совпадать с переходом через ноль у мастера. Поэтому слейв , вродебы, должен , по получении прерывания от перехода фаза-ноль послать запрос мастеру, а тот, получив запрос, тут же оправить ему необходимые числа, итак 100 раз всекунду
попробывал свтавитьь этот код в обработчик прерывания - не идет

Re: пересылка данных по усарт

Duhas » 31 мар 2011, 01:29

а никак нельзя мастером спамить стабильно значение фазы, а слейвом уже отрабатывать... и чорт с ним если оно вдруг на 1 период рассогласуется ?

Re: пересылка данных по усарт

Radist » 31 мар 2011, 06:10

Есть оптосимисторы с "zero-cross". Их включаешь/выключаешь когда хочешь, а срабатывают они при переходе через ноль. Используйте их и будет вам счастье. Навскидку MOC3082. Сам он маломощный, но к нему можно поставить внешний мощный симистор.

Re: пересылка данных по усарт

к561ЛА7 » 31 мар 2011, 13:32

мастером нельзя, фазы могут быть разные. И зеро кросс тоже нельзя, регулирование фазовое.

Re: пересылка данных по усарт

Radist » 31 мар 2011, 13:36

А что за объект управления? Кто является конечной нагрузкой? Этой нагрузке подавай все полупериоды, хоть и обгрызенные, но не дай бог пропустить один?

Re: пересылка данных по усарт

к561ЛА7 » 31 мар 2011, 13:42

А, понял ... навероно можно. только пока не вьехал как


cron
Rambler\'s Top100 Mail.ru counter