Например TDA7294

Форум РадиоКот • Просмотр темы - Помогите понять проект написанный в AlgorithmBuilder
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Чт апр 18, 2024 13:13:42

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 41 ]    , 2,  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: Помогите понять проект написанный в AlgorithmBuilder
СообщениеДобавлено: Вт май 17, 2022 16:31:59 
Первый раз сказал Мяу!

Зарегистрирован: Ср фев 23, 2022 15:40:56
Сообщений: 23
Рейтинг сообщения: 0
это датчик приближения, что ли?

да, это он самый. вариант в живую. проверил осциллографом как работает ИК диод и ИК приемник. Он действительно реагирует на простую генерацию 37500 кГц. Формирует короткую пачку ипульсов а потом все время низкий уровень сигнала пока сигнал не прервать и не возобновить. Не понимаю пока как это можно эксплуатировать. Пока пишу программу.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите понять проект написанный в AlgorithmBuilder
СообщениеДобавлено: Вт май 17, 2022 16:42:53 
Это не хвост, это антенна

Карма: 4
Рейтинг сообщений: 141
Зарегистрирован: Ср июн 25, 2008 15:19:44
Сообщений: 1384
Рейтинг сообщения: 0
Я делал подобное. Скажу честно, тот проект заглох. По нескольким причинам. Главная, нехватка времени. Проект: передатчик, приемник. То есть, не на одном мк, а в каждом устройстве МК. Система оказалась капризной. Засветка обычным светом. Паразитная засветка, то есть переотраженка. Тупо подавать частоту не вышло. Система зависала. На тот момент я остановился на пачках импульсов. Дальше не занимался.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите понять проект написанный в AlgorithmBuilder
СообщениеДобавлено: Вт май 17, 2022 18:06:51 
Это не хвост, это антенна

Карма: 15
Рейтинг сообщений: 177
Зарегистрирован: Пт дек 10, 2021 12:48:46
Сообщений: 1326
Откуда: Тюмень
Рейтинг сообщения: 0
Проверил что схема правда работает. Осталось добиться работы с сигналом своим.

Вот это уже другое дело.

Для попробовать можно записать сигнал от ИК пульта (записать в датчик код любой кнопки от дистанционки)… и посмотреть как будет работать. Кстати на нажатие записанной кнопки пульта, датчик будет реагировать с большего расстояния. То есть, данный датчик удобно использовать как бесконтактный выключатель чего либо (к примеру освещения)… тем самым можно включать и отключать свет с пульта.


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: Помогите понять проект написанный в AlgorithmBuilder
СообщениеДобавлено: Вт май 17, 2022 18:36:39 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 97
Рейтинг сообщений: 2058
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18030
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
не надо ничего записывать от пульта! датчик демодулирует несущую и выдает низкий уровень огибающей. для датчика приближения надо промодулировать, допустим, пачку из 10 импульсов типа 1мс импульс, 2мс пауза (непринципиально вообще), сигнал с датчика завести на пин с прерыванием (у тиньки все такие), и по прерываниям считать импульсы. алгоритм такой:
1. обнулили счетчик
2. выдали пачку
3. посмотрели в счетчик: если там число импульсов в пачке, значит, есть преграда, от которой сигнал отражался. если число другое - это помеха. если там ничего - нет преграды.

как-то так

Добавлено after 2 minutes 37 seconds:
само собой, надо исключить в принципе прямое попадание луча от светодиода на датчик. в частности, то, что показано на фото, никуда не годится в этом отношении

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Организация питания на основе надежных литиевых аккумуляторов EVE и микросхем азиатского производства

Качественное и безопасное устройство, работающее от аккумулятора, должно учитывать его физические и химические свойства, профили заряда и разряда, их изменение во времени и под влиянием различных условий, таких как температура и ток нагрузки. Мы расскажем о литий-ионных аккумуляторных батареях EVE и нескольких решениях от различных китайских компаний, рекомендуемых для разработок приложений с использованием этих АКБ. Представленные в статье китайские аналоги помогут заменить продукцию западных брендов с оптимизацией цены без потери качества.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Помогите понять проект написанный в AlgorithmBuilder
СообщениеДобавлено: Вт май 17, 2022 18:55:55 
Это не хвост, это антенна

Карма: 15
Рейтинг сообщений: 177
Зарегистрирован: Пт дек 10, 2021 12:48:46
Сообщений: 1326
Откуда: Тюмень
Рейтинг сообщения: 0
не надо ничего записывать от пульта! датчик демодулирует несущую и выдает низкий уровень огибающей. для датчика приближения надо промодулировать

Мы говорили о конкретном датчике... и я описал его дополнительные возможности этого конкретного данного датчика:
http://www.getchip.net/posts/094-datchi ... -attiny13/
А Вы о каком?


Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Помогите понять проект написанный в AlgorithmBuilder
СообщениеДобавлено: Вт май 17, 2022 19:22:47 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 97
Рейтинг сообщений: 2058
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18030
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
я о датчике приближения, который мастерит топикстартер

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите понять проект написанный в AlgorithmBuilder
СообщениеДобавлено: Вт май 17, 2022 22:26:21 
Это не хвост, это антенна

Карма: 15
Рейтинг сообщений: 177
Зарегистрирован: Пт дек 10, 2021 12:48:46
Сообщений: 1326
Откуда: Тюмень
Рейтинг сообщения: 0
Он как раз о нём и писал…
Вложение:
1.png [49.78 KiB]
Скачиваний: 44

там в архиве его исходник на АВ этого датчика... смотрите по моей ссылке...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите понять проект написанный в AlgorithmBuilder
СообщениеДобавлено: Ср май 18, 2022 10:49:42 
Первый раз сказал Мяу!

Зарегистрирован: Ср фев 23, 2022 15:40:56
Сообщений: 23
Рейтинг сообщения: 0
Я делал подобное. Скажу честно, тот проект заглох. По нескольким причинам. Главная, нехватка времени. Проект: передатчик, приемник. То есть, не на одном мк, а в каждом устройстве МК. Система оказалась капризной. Засветка обычным светом. Паразитная засветка, то есть переотраженка. Тупо подавать частоту не вышло. Система зависала. На тот момент я остановился на пачках импульсов. Дальше не занимался.

Буду думать над защитой от чрезмерных засветок. Пока мощности ИК диода мало но для тестов хватит. Путем тыка осциллографом определил расстояние в 30 см примерно. А, на пульт в телефоне реагирует то же хорошо (в телефоне есть ИК передатчик).

Добавлено after 6 minutes 47 seconds:
не надо ничего записывать от пульта! датчик демодулирует несущую и выдает низкий уровень огибающей. для датчика приближения надо промодулировать

Мы говорили о конкретном датчике... и я описал его дополнительные возможности этого конкретного данного датчика:
http://www.getchip.net/posts/094-datchi ... -attiny13/
А Вы о каком?

Я взял идею как раз отсюда. Ссылки были указаны в начале. Мне не понятны принципы работы с программой алгоритм билдер, я хочу на Си переписать. У меня исходник с этого сайта не компилируется, пишет какую то ошибку но из за наложения текста на текст не прочитать. Опорный сигнал я настроил, мне теперь бы понять как обработать сигнал с датчика, много читал но торможу. Ps исходников наСи я не видел, ассемблер я не понимаю. Если кто то разбирается как там что работает я бы был очень рад :)

Добавлено after 5 minutes 14 seconds:
не надо ничего записывать от пульта! датчик демодулирует несущую и выдает низкий уровень огибающей. для датчика приближения надо промодулировать, допустим, пачку из 10 импульсов типа 1мс импульс, 2мс пауза (непринципиально вообще), сигнал с датчика завести на пин с прерыванием (у тиньки все такие), и по прерываниям считать импульсы. алгоритм такой:
1. обнулили счетчик
2. выдали пачку
3. посмотрели в счетчик: если там число импульсов в пачке, значит, есть преграда, от которой сигнал отражался. если число другое - это помеха. если там ничего - нет преграды.


Добавлено after 2 minutes 37 seconds:
само собой, надо исключить в принципе прямое попадание луча от светодиода на датчик. в частности, то, что показано на фото, никуда не годится в этом отношении


Я вас понял. По алгоритму 1 2 3 теперь мне стало более понятно что делать. PS на фото не смотрите, это испытатльный образец. Будет у него корпус нормальный, разделение приемной и передающей части перегородкой. Защитное ИК проницаемое "стекло" и свой источник питания. Тут еще нет многих элементов. Моя цель сейчас это отладка и перепись кода с графичского билдера в Си. PPSS надел трубку на ИК диод за кадром.

Добавлено after 1 hour 26 minutes 59 seconds:
не надо ничего записывать от пульта! датчик демодулирует несущую и выдает низкий уровень огибающей. для датчика приближения надо промодулировать, допустим, пачку из 10 импульсов типа 1мс импульс, 2мс пауза (непринципиально вообще), сигнал с датчика завести на пин с прерыванием (у тиньки все такие), и по прерываниям считать импульсы. алгоритм такой:
1. обнулили счетчик
2. выдали пачку
3. посмотрели в счетчик: если там число импульсов в пачке...

Добавлено after 2 minutes 37 seconds:
само собой, надо исключить в принципе прямое попадание луча от светодиода на датчик. в частности, то, что показано на фото, никуда не годится в этом отношении

И так, я знаю что пачки должны быть по 30 импульсов и 10мс паузы (смотрел даташит на TSOP31238 или 1738).
Пока провел испытания максимально по тупому. Так же прилагаю текущий код. (слегка замусарено)
Изображение Изображение

Спойлер
Код:
#define F_CPU 9600000UL
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>

ISR (INT0_vect)
{
      //_delay_ms(500);
      PORTB|=(1<<PB2);
      //_delay_ms(500);
   
}


int main(void)
{
   

   DDRB|=(1<<PB0); //setting port to out
   DDRB &=~(1<<PB1);
   //DDRB &=~(1<<PB3);
   DDRB|=(1<<PB2);


   PORTB &=~(1<<PB0);
   PORTB |=(1<<PB1);
   //configure PWM mode (38 kHz) 9600000/125/2 = 38400 Hz
   TCCR0A |= (1<<WGM01) | (1<<COM0A0); //CTC with toggle
   TCCR0B |= (1<<CS00); // Start timer with no prescaler
   OCR0A = 125;  // timer reaches 125 and toggles OC0A/PB0 pin
   //----------
   //PORTB|=(1<<PB3);
   //configure ext int mode
   //MCUCR |=(1<<ISC01)|(1<<ISC00); upping front
   //MCUCR |=(1<<ISC01); falling front
   //MCUCR |=(1<<ISC00); any logical toggle
   //if MCUCR == 0 default 1 to 0 toggle

   GIMSK|=(1<<INT0); // external interrupts INT0 - pin PB1
   sei(); //allow global interrupts
   //----------


   while(1)
   {
   PORTB &=~(1<<PB2);


   }
}

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите понять проект написанный в AlgorithmBuilder
СообщениеДобавлено: Ср май 18, 2022 10:57:55 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 97
Рейтинг сообщений: 2058
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18030
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
я же вам рекомендовал ознакомиться с моей статьёй и приложенным к ней кодом, где вопросы модуляции сигнала рассмотрены и продемонстрированы.
если кратко - несущий сигнал 37кГц надо формировать аппаратно, без прерываний, как у вас, - настроили таймер на генерацию меандра на пине, и радуйтесь. а модуляция сигнала осуществляется включением и выключением таймера, примерно так:
Код:
// TIMER_MODE - константа, задающая режим работы таймера


// функция выдачи модулированного импульса 1 мс
void pulse(void){
  TCCR0 = TIMER_MODE; // включили генерацию
  _delay_ms(1); // задержка 1 мс
  TCCR0 = 0; // выключили генерацию
  // тут для страховки установить 0 на нужном пине
}

// функция выдачи пачки импульсов из N штук
void pulse_block(uint8_t N){
  for(;N; N--){
    pulse();
    _delay_ms(1);
  }
}

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите понять проект написанный в AlgorithmBuilder
СообщениеДобавлено: Ср май 18, 2022 14:16:51 
Это не хвост, это антенна

Карма: 15
Рейтинг сообщений: 177
Зарегистрирован: Пт дек 10, 2021 12:48:46
Сообщений: 1326
Откуда: Тюмень
Рейтинг сообщения: 0
У меня исходник с этого сайта не компилируется, пишет какую то ошибку

Видимо у Вас не те настройки установлены во вкладке компилятора… Опции/Опции проекта/Компилятор… установите как на картинке и компилятор не будет ругаться… :)
Вложение:
1.png [17.45 KiB]
Скачиваний: 37

Или если хотите, то я могу Вам скомпилировать тот вариант или с какими ни будь изменениями… ещё есть немаловажный момент, на который не обращают внимание – это фьюзы… хотя Вы наверняка прошиваете МК не с помощью АВ, но всё же… установите фьюзами контроль питания (если будете использовать изучение клавиши пульта), иначе EEPROM будет затираться при отключении питания.
Цитата:
Опорный сигнал я настроил, мне теперь бы понять как обработать сигнал с датчика, много читал но торможу.

Ну если Вам это чем-то поможет, я могу описать все процедуры в прерывании по INT, своими словами. Правда я не профессионал и мои дилетантские термины могут означать не то, что принято у программистов. Уж как то так. Так что, описывать? :write:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите понять проект написанный в AlgorithmBuilder
СообщениеДобавлено: Ср май 18, 2022 14:45:35 
Это не хвост, это антенна

Карма: 4
Рейтинг сообщений: 141
Зарегистрирован: Ср июн 25, 2008 15:19:44
Сообщений: 1384
Рейтинг сообщения: 0
Мой следующий шаг должен был быть следующим: я не помню, на какой частоте работал тот tsop. Не суть. Сделать какие нибудь осмысленные пачки импульсов, на случай сбоев игнорировать настраиваемое количество попыток посылок. Если число попыток превышено, значит сработка. Но, заказчик на тот момент отказался, его поджимало время. И я забросил проект. Кстати, можно посмотреть проект, на чем все остановилось. Посмотрим, будет ли время. Выше написанное, для информации. В чем были мои затруднения.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите понять проект написанный в AlgorithmBuilder
СообщениеДобавлено: Ср май 18, 2022 15:11:47 
Первый раз сказал Мяу!

Зарегистрирован: Ср фев 23, 2022 15:40:56
Сообщений: 23
Рейтинг сообщения: 0
[uquote="PE4ENbKA_173",url="/forum/viewtopic.php?p=4233470#p4233470"]У меня исходник с этого сайта не компилируется, пишет какую то ошибку

Цитата:
Видимо у Вас не те настройки установлены во вкладке компилятора…

Настройки компилятора моего AB
Изображение
В них чего то не хватает.
Об ошибке у меня в АВ
Изображение
Цитата:
установите фьюзами контроль питания (если будете использовать изучение клавиши пульта)

Кнопки пульта я пока записывать не буду, хочу сделать датчик приближения как у автора.
Мои фьюзы, я устанавливаю через аврдуду, мне в ней удобнее и понятнее. Плюс китайский программатор работает нормально.
Изображение
Цитата:
Или если хотите, то я могу Вам скомпилировать тот вариант или с какими ни будь изменениями…

Если можно скомпилируйте вариант где как в примере PB0 выход "ШИМ", РВ1 это вход с TSOP, светодиод зажигается мгновенно на входе РВ2 при отражении сигнала и сделать то же самое для РВ3 только к нему я буду реле или транзистор подключать. Остальные выходы останутся не задействованы. В принципе это все изменения которые я хотел. И если можно потом еще проект закиньте. Посмотрю чем отличается и может пойму что то с АВ, попробую скомпилировать если не вылезет ошибка.
Цитата:
Ну если Вам это чем-то поможет, я могу описать все процедуры в прерывании по INT, своими словами.

Про процедуры в прерывании расскажите)

Добавлено after 11 minutes 35 seconds:
я же вам рекомендовал ознакомиться с моей статьёй и приложенным к ней кодом, где вопросы модуляции сигнала рассмотрены и продемонстрированы.
если кратко - несущий сигнал 37кГц надо формировать аппаратно, без прерываний, как у вас, - настроили таймер на генерацию меандра на пине, и радуйтесь. а модуляция сигнала осуществляется включением и выключением таймера, примерно так:
Спойлер
Код:
// TIMER_MODE - константа, задающая режим работы таймера


// функция выдачи модулированного импульса 1 мс
void pulse(void){
  TCCR0 = TIMER_MODE; // включили генерацию
  _delay_ms(1); // задержка 1 мс
  TCCR0 = 0; // выключили генерацию
  // тут для страховки установить 0 на нужном пине
}

// функция выдачи пачки импульсов из N штук
void pulse_block(uint8_t N){
  for(;N; N--){
    pulse();
    _delay_ms(1);
  }
}


Кажется я начал понимать. Мне теперь осталось понять, вот пошлю я пачку 30 импульсов. А сколько потом прийдет импульсов с демодулятора... Я с начала хотел записать какой то осмысленный сигнал в передачу, что бы было например число 0х50 и потом смотреть получил я это ил и нет. Кстати а будет работать в том вид как у вас? У меня же есть прерывание при входном сигнале, это разв не собъет тайминги модуляции?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите понять проект написанный в AlgorithmBuilder
СообщениеДобавлено: Ср май 18, 2022 15:15:26 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 97
Рейтинг сообщений: 2058
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18030
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
прерывание собьет тайминги модуляции, это вы верно подметили. только надо учитывать, что прерывание у вас отработает за пару микросекунд, а модуляция длится примерно в 500 раз дольше. поэтому никакой катастрофы не произойдет

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите понять проект написанный в AlgorithmBuilder
СообщениеДобавлено: Ср май 18, 2022 17:36:28 
Это не хвост, это антенна

Карма: 15
Рейтинг сообщений: 177
Зарегистрирован: Пт дек 10, 2021 12:48:46
Сообщений: 1326
Откуда: Тюмень
Рейтинг сообщения: 0
Настройки компилятора моего AB

У Вас АВ какого года? Установите в место своего этот…
https://disk.yandex.ru/d/6X1pB8Rl3Flbr
Он последней версии.
Цитата:
Об ошибке у меня в АВ

Что касается того исходника, то вот как он открывается у меня…
Изображение
Видимо Вы что-то хотели с этой процедурой сделать и не получилось… и она приняла такой вид как у Вас на скрине?
Вот описание той процедуры…
То есть когда счётчик импульсов (Pulse_Count) равен единице, то переходим на выполнение подпрограммы под названием _Res_TSOP_Count (подпрограмма запуска замера импульсов по новой).
Цитата:
Мои фьюзы, я устанавливаю через аврдуду

Да, с фюзами у Вас всё впорядке. Пусть такими и останутся. Хотя можно было бы выбрать контроль 4,3 В в место 1,8 В как у Вас. Но то такое… не принципиально.
Цитата:
Если можно скомпилируйте вариант где как в примере PB0 выход "ШИМ"

Не понял, это о каком варианте? Поподробнее можно?
Цитата:
светодиод зажигается мгновенно на входе РВ2 при отражении сигнала

Выход «Статус» (РВ2) согласно данной схеме:
Изображение
практически отрабатывает мгновенно… есть конечно некая задержка, но она обусловлена задержками самого TSOP (как я полагаю), а вот отключение выхода «Статус» имеет практическое значение… сделано это для уверенного состояния выходного сигнала выхода «Триггер» (РВ0). Могу немного скорректировать, для попробовать...
Вот прошивка с небольшой коррекцией…
Вложение:
main.hex [1.53 KiB]
Скачиваний: 73

Пробуйте и отпишитесь.
Цитата:
и сделать то же самое для РВ3 только к нему я буду реле или транзистор подключать.

Это вывод предназначен управлять ИК светодиодом… может Вы хотели управлять реле с выхода РВ4? Это вход у автора задействован для отключения работы ИК светодиода. Подробно поясните данный момент.
Цитата:
Остальные выходы останутся не задействованы.

Так остальных по сути и нет, кроме вывода RESET, но он нужен для перепрограммирования МК.
Цитата:
Про процедуры в прерывании расскажите)

Хорошо.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите понять проект написанный в AlgorithmBuilder
СообщениеДобавлено: Ср май 18, 2022 18:20:55 
Это не хвост, это антенна

Карма: 4
Рейтинг сообщений: 141
Зарегистрирован: Ср июн 25, 2008 15:19:44
Сообщений: 1384
Рейтинг сообщения: 0
Печенька, сишный код поймёте? Могу дать тот свой проект. Разбираться будете сами.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите понять проект написанный в AlgorithmBuilder
СообщениеДобавлено: Ср май 18, 2022 21:06:13 
Это не хвост, это антенна

Карма: 15
Рейтинг сообщений: 177
Зарегистрирован: Пт дек 10, 2021 12:48:46
Сообщений: 1326
Откуда: Тюмень
Рейтинг сообщения: 5
Про процедуры в прерывании расскажите)

Изображение
Описание процедур от внешнего прерывания:
1 Подпрограмма макроса Reg_Push это сохранение трёх регистров в стек (R16; R17; и SREG). Это обусловлено именно нюансами АВ и в Си в данном случае думаю она не нужна (но это решать Вам).
2 Pulse_Count – это однобайтная переменная счётчика импульсов (у автора рабочий регистр R21 объявлен этой переменной). (Pulse_Count >= 34) – Если значение этой переменной больше или равно 34 (десятичное значение), то переходим по стрелке вниз на подпрограмму Reg_Pop (пунк 8 ).
Если переменная Pulse_Count меньше 34, то выполняем следующую процедуру пункт 3.
3 В данном алгоритме это Pulse_Count++, что означает увеличение на единицу данной переменной.
4 Следующая процедура это (Pulse_Count = 1). Если переменная равна единице, то это первый импульс, а значит необходимо выполнить подпрограмму под названием _Res_TSOP_Count.
5 Подпрограмма _Res_TSOP_Count.
Процедура TSOP_Count -> r17 – Это переменная под названием TSOP_Count (Счётчик TSOP), у автора рабочий регистр R20 объявлен этой переменной. Так вот, значение данной переменной копируется в рабочий регистр R17.
Процедура ^TSOP_Count – означает очищение значений данного регистра.
Затем выход из подпрограммы на пункт 6.
4 Если переменная Pulse_Count не равна единице, то переходим на следующую процедуру – пункт 6.
6 Следующая процедура это (Pulse_Count = 33). Если переменная равна 33, то уходим по стрелке на вершину «Последний замер» (это пунктом 8 ). Если переменная меньше 33, то продолжаем замер (пункт 7).
7 Пункт 5 – замер периодов.
Выполняем подпрограмму _Res_TSOP_Count (пункт 5).
Процедура r17 = 60 – это рабочий регистр R17 сравнивается с десятичным значением 60. То есть предварительно в R17 было скопировано значение переменной TSOP_Count в подпрограмме _Res_TSOP_Count (пункт 5). Так вот, если регистр R17 меньше 60, то в переменную Rec_Probing_Seq записывается в старший бит 1, а если регистр R17 равен 60 или больше, то в переменную Rec_Probing_Seq записывается в старший бит 0. Это происходит в пункте 7в.
Процедура >Rec_Probing_Seq>> - это логический сдвиг вправо переменной с переносом. Переменная Rec_Probing_Seq является четырёхбайтная, и расположил автор её в рабочих регистрах R26; R27; R28; R29. Затем переход на пункт 11.
8 «Последний замер»
Выполнить подпрограмму _Res_TSOP_Count (пункта 5).
Процедура r17 = 60 – уже описана выше.
Процедура >Rec_Probing_Seq>> - уже описана выше.
Процедура (Stud -= 1) – данная процедура нужна лишь когда необходимо читать иную последовательность сигнала с пульта и сохранять её в EEPROM. Но так как Вам это не нужно, то эту и две следующие процедуры можно исключить. Таким образом, переходим к процедуре пункта 9


9 Процедура (Rec_Probing_Seq = EE_Probing_Seq)_Add_Status - эта процедура сравнивает принятые импульсы переменной Rec_Probing_Seq с ранее записанными импульсами в переменной EE_Probing_Seq, которая находится в памяти EEPROM. И если принятый код совпадает с кодом из EEPROM, то выполняется подпрограмма под названием _Add_Status (пункт 10). Если коды не совпадают, то выполняется пункт 11.
10 Подпрограмма _Add_Status.
10а Процедура (Status < 3)Status + 2 – если переменная под названием Status меньше десятичного значения 3, то к значению данной переменной прибавляется десятичное значение 2. У автора рабочий регистр R30 объявлен этой переменной.
10б Процедура (Status -= 2) - если переменная не равна двум, то уходим по стрелке на пункт 10д. Если переменная равна двум, то выполняется пункт 10в.
10в Процедура (PinB2 = 0)1 -> PinB.0 - если бит входного регистра вывода РВ2 равен нулю, то в регистр PinB.0 (вывода РВ0) записывается значение 1. Не все контроллеры позволяют проделывать такую манипуляцию с входным регистром… но у этого МК это позволяет управлять выходом в триггером режиме. Потому как раз вывод РВ0 назван «Триггер». Если на выходе вывода РВ2 уже имеется единица, то просто переходим к пункту 10с, без манипуляций с выводом РВ0.
10с Процедура 1 -> PortB2 - записывается единица в бит порта РВ2, для получения данного логического сигнала на этом выводе. Далее выполняется пункт 10д.
10д Процедура ret – выход из подпрограммы.
11 Подпрограмма макроса Reg_Pop. Макрос подпрограммы Reg_Pop – как Вы наверняка догадались, возврат ранее сохранённых регистров из стека (R16; R17; и SREG).
12 И далее выход из прерывания (reti) с разрешением глобальных прерываний (I = 1).

Если возникнут вопросы – задавайте. Попробую ответить, если это в моей компетенции. Кстати в АВ есть справка в формате PDF на русском языке... всё подробно там описано...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите понять проект написанный в AlgorithmBuilder
СообщениеДобавлено: Чт май 19, 2022 04:44:10 
Друг Кота
Аватар пользователя

Карма: 46
Рейтинг сообщений: 2030
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Сообщений: 6618
Откуда: Сердце Пармы
Рейтинг сообщения: 2
Медали: 1
Получил миской по аватаре (1)
поправлю: reg_push(pop) это не для АБ, а для контроллера надо (так делают вообще в ассеаблере) в С тоже это делается (и там дкже больше регистров обычно в стек уталкивается), но делается это тайком от программиста...

_________________
Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите понять проект написанный в AlgorithmBuilder
СообщениеДобавлено: Чт май 19, 2022 09:24:43 
Первый раз сказал Мяу!

Зарегистрирован: Ср фев 23, 2022 15:40:56
Сообщений: 23
Рейтинг сообщения: 0
мне повезло. кто ищет тот найдет. и я нашел готовый проект именно то что нужно. проверил и адаптировал под себя. прекрасно работает!
Спойлер

У этого замечательного человека куча полезного.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите понять проект написанный в AlgorithmBuilder
СообщениеДобавлено: Чт май 19, 2022 09:48:56 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 97
Рейтинг сообщений: 2058
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18030
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
остальным участникам топика повезло меньше - зря старались

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите понять проект написанный в AlgorithmBuilder
СообщениеДобавлено: Чт май 19, 2022 14:43:29 
Первый раз сказал Мяу!

Зарегистрирован: Ср фев 23, 2022 15:40:56
Сообщений: 23
Рейтинг сообщения: 0
Спойлер
Про процедуры в прерывании расскажите)

Изображение
Описание процедур от внешнего прерывания:
1 Подпрограмма макроса Reg_Push это сохранение трёх регистров в стек (R16; R17; и SREG). Это обусловлено именно нюансами АВ и в Си в данном случае думаю она не нужна (но это решать Вам).
2 Pulse_Count – это однобайтная переменная счётчика импульсов (у автора рабочий регистр R21 объявлен этой переменной). (Pulse_Count >= 34) – Если значение этой переменной больше или равно 34 (десятичное значение), то переходим по стрелке вниз на подпрограмму Reg_Pop (пунк 8 ).
Если переменная Pulse_Count меньше 34, то выполняем следующую процедуру пункт 3.
3 В данном алгоритме это Pulse_Count++, что означает увеличение на единицу данной переменной.
4 Следующая процедура это (Pulse_Count = 1). Если переменная равна единице, то это первый импульс, а значит необходимо выполнить подпрограмму под названием _Res_TSOP_Count.
5 Подпрограмма _Res_TSOP_Count.
Процедура TSOP_Count -> r17 – Это переменная под названием TSOP_Count (Счётчик TSOP), у автора рабочий регистр R20 объявлен этой переменной. Так вот, значение данной переменной копируется в рабочий регистр R17.
Процедура ^TSOP_Count – означает очищение значений данного регистра.
Затем выход из подпрограммы на пункт 6.
4 Если переменная Pulse_Count не равна единице, то переходим на следующую процедуру – пункт 6.
6 Следующая процедура это (Pulse_Count = 33). Если переменная равна 33, то уходим по стрелке на вершину «Последний замер» (это пунктом 8 ). Если переменная меньше 33, то продолжаем замер (пункт 7).
7 Пункт 5 – замер периодов.
Выполняем подпрограмму _Res_TSOP_Count (пункт 5).
Процедура r17 = 60 – это рабочий регистр R17 сравнивается с десятичным значением 60. То есть предварительно в R17 было скопировано значение переменной TSOP_Count в подпрограмме _Res_TSOP_Count (пункт 5). Так вот, если регистр R17 меньше 60, то в переменную Rec_Probing_Seq записывается в старший бит 1, а если регистр R17 равен 60 или больше, то в переменную Rec_Probing_Seq записывается в старший бит 0. Это происходит в пункте 7в.
Процедура >Rec_Probing_Seq>> - это логический сдвиг вправо переменной с переносом. Переменная Rec_Probing_Seq является четырёхбайтная, и расположил автор её в рабочих регистрах R26; R27; R28; R29. Затем переход на пункт 11.
8 «Последний замер»
Выполнить подпрограмму _Res_TSOP_Count (пункта 5).
Процедура r17 = 60 – уже описана выше.
Процедура >Rec_Probing_Seq>> - уже описана выше.
Процедура (Stud -= 1) – данная процедура нужна лишь когда необходимо читать иную последовательность сигнала с пульта и сохранять её в EEPROM. Но так как Вам это не нужно, то эту и две следующие процедуры можно исключить. Таким образом, переходим к процедуре пункта 9


9 Процедура (Rec_Probing_Seq = EE_Probing_Seq)_Add_Status - эта процедура сравнивает принятые импульсы переменной Rec_Probing_Seq с ранее записанными импульсами в переменной EE_Probing_Seq, которая находится в памяти EEPROM. И если принятый код совпадает с кодом из EEPROM, то выполняется подпрограмма под названием _Add_Status (пункт 10). Если коды не совпадают, то выполняется пункт 11.
10 Подпрограмма _Add_Status.
10а Процедура (Status < 3)Status + 2 – если переменная под названием Status меньше десятичного значения 3, то к значению данной переменной прибавляется десятичное значение 2. У автора рабочий регистр R30 объявлен этой переменной.
10б Процедура (Status -= 2) - если переменная не равна двум, то уходим по стрелке на пункт 10д. Если переменная равна двум, то выполняется пункт 10в.
10в Процедура (PinB2 = 0)1 -> PinB.0 - если бит входного регистра вывода РВ2 равен нулю, то в регистр PinB.0 (вывода РВ0) записывается значение 1. Не все контроллеры позволяют проделывать такую манипуляцию с входным регистром… но у этого МК это позволяет управлять выходом в триггером режиме. Потому как раз вывод РВ0 назван «Триггер». Если на выходе вывода РВ2 уже имеется единица, то просто переходим к пункту 10с, без манипуляций с выводом РВ0.
10с Процедура 1 -> PortB2 - записывается единица в бит порта РВ2, для получения данного логического сигнала на этом выводе. Далее выполняется пункт 10д.
10д Процедура ret – выход из подпрограммы.
11 Подпрограмма макроса Reg_Pop. Макрос подпрограммы Reg_Pop – как Вы наверняка догадались, возврат ранее сохранённых регистров из стека (R16; R17; и SREG).
12 И далее выход из прерывания (reti) с разрешением глобальных прерываний (I = 1).

Цитата:
Если возникнут вопросы – задавайте. Попробую ответить, если это в моей компетенции. Кстати в АВ есть справка в формате PDF на русском языке... всё подробно там описано...

Очень подробно, спасибо так стало понятнее. А я тут нашел готовую программу) там кинул сообщение с видосом. Когда закончу переделывать программу то поделюсь тут со всеми. Может кому пригодится.

Добавлено after 14 minutes 16 seconds:
остальным участникам топика повезло меньше - зря старались

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

Добавлено after 3 hours 42 minutes 41 second:
И так вот он проект, под мои нужды. ВХОД для ИК TSOP это PB1, ВЫХОД сигнала - PB0. Выходы под внешние устройства, диод или реле PB3, 2.
Актуальная схема Изображение.
Вопрос, если я добавляю хадержку перед включением PB3 почему перестает работать всё?
Спойлер
Код:
if (stat)
         {
            PORTB|=(1<<OUT); // включаем
//            _delay_ms(10); вот эта задержка
            PORTB|=(1<<REL_OUT);
         } else
         {
            PORTB&=~(1<<OUT); // отключаем
//            _delay_ms(10); и эта
            PORTB&=~(1<<REL_OUT);
         }


Добавлено after 13 minutes 19 seconds:
Печенька, сишный код поймёте? Могу дать тот свой проект. Разбираться будете сами.

Да, буду только за. Я на си и шарю только, ассемблер не очень.


Вложения:
Комментарий к файлу: проект AtmelStudio7.0
Attiny13-iksens4.zip [28.02 KiB]
Скачиваний: 71
Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 41 ]    , 2,  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: Google [Bot] и гости: 26


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y