Регистрация | Вход

[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 2 из 2
  • «
  • 1
  • 2
Модератор форума: terrarus, ivan_fd  
Форум Picbasic.ru » Программирование МК » Mikrobasic » Помогите разобраться с программой (Не работает)
Помогите разобраться с программой
retas Дата: Сб, 05.03.2011, 11:13  |                                                                                                                Сообщение # 16
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 450
Репутация: 11   ±
Замечания:   ±
На сайте с 10.09.2007

Статус: Offline

1. На счет доп.ЛОГИКИ - оно дало бы только возможность ОДНОВРЕМЕННО следить за двумя
сигналами. МК этого в принципе не может, но пожалуй с вашим подходом (с INT и CCP) вроде
должно получиться - у меня такого опыта нет.
2. Какой либо сигнал на выходе логики, появлялся бы только при появлении хоть какого то сдвига
между имп.
3. Как то я не пойму "это я рассчитаю только смещение, а мне необходимо знать и ширину"?
ПМ, смещение и есть ширина, только выражена в тактах таймера.

4. По вами представлену алгоритму программы, выходит что вам не требуется одновременно
следить за несколькими сигналами да и что сравнивать - получили, скажем, 10 импульсов и
ширину импульса в 1мс?!
5. По ранее вами написанному "посчитать количество импульсов на оборот от начала отсчета",
так вам нужно в МК иметь четко заданную длительность равную необходимой длительности
импульса с датчика и её сравнивать с реально получаемой с датчика.

Удачи.

Сообщение отредактировал retas - Сб, 05.03.2011, 11:14
Axell Дата: Сб, 05.03.2011, 12:14  |                                                                                                                Сообщение # 17
Группа: Пользователи
Ранг:  Новенький
Сообщений: 13
Репутация: 0   ±
Замечания:   ±
На сайте с 25.02.2011

Статус: Offline

Quote (retas)
По ранее вами написанному "посчитать количество импульсов на оборот от начала отсчета", так вам нужно в МК иметь четко заданную длительность равную необходимой длительности импульса с датчика и её сравнивать с реально получаемой с датчика.

Посмотрите выше проект, там это реализовано уже...Мне не надо сравнивать в мк ничего, просто подсчитать кол-во импульсов..Какое должно быть мне уже заранее известно, просто нуно знать, правильно ли оно или нет..

Quote (retas)
Как то я не пойму "это я рассчитаю только смещение, а мне необходимо знать и ширину"? ПМ, смещение и есть ширина, только выражена в тактах таймера.

Ширина -- это длительность положительного фронта импульса..Импульсы подаются смещенными друг относительно друга..Мне нуно знать величину смещения в тактах и длительность импульса, что бы понять в какую сторону смещен -- для дальнейшей настройки..См. рисунок выше.

Quote (retas)
По вами представлену алгоритму программы, выходит что вам не требуется одновременно следить за несколькими сигналами да и что сравнивать - получили, скажем, 10 импульсов и ширину импульса в 1мс?!

В принципе так оно и есть..Просто на мк заводится три канала с импульсами и в зависимости от выбранной программы выполнять действия...

Но..Главные вопросы у меня написаны в предыдущем посте..По поводу прогаммы..

Сообщение отредактировал Axell - Сб, 05.03.2011, 12:14
ADMIN Дата: Сб, 05.03.2011, 12:36  |                                                                                                                Сообщение # 18
Администратор
Группа: Администраторы
Ранг:  Специалист
Сообщений: 1097
Репутация: 32   ±
Замечания:   ±
На сайте с 20.08.2007

Статус: Offline

На ЖКИ подходит 6 ног минимум. Второе, прерывания можно настроить в том месте, где они тебе будут нужны.
Подпрограммы оформляются так:

sub function function_name(...) as return_type
<объявление локальных переменных>
...
end sub

В теле Main подпрограмма вызовется как

function_name()

Прочитай в справке Microbasic - Program organization.

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

Axell Дата: Пт, 11.03.2011, 00:22  |                                                                                                                Сообщение # 19
Группа: Пользователи
Ранг:  Новенький
Сообщений: 13
Репутация: 0   ±
Замечания:   ±
На сайте с 25.02.2011

Статус: Offline

Подскажите плиз...
Использую модуль ССР, настрроил на захват по переднему фронту.Нуно в теле программы переключится на захват по заднему и расчитать разницу..Подскажите плиз как это сделать, а то мне не очень понятно из документации..

И исче..Я так понимаю, что захваченное значение TMR1 нуно сохранять в регистр или в область памяти,что бы потом произвести математические действия. подскажите плиз как правильно это делать(сохранять)..Я пытался сохранять в переменную(это не правильно)-- оно меняется с каждым изменением значения захвата..

Спасибо..

Прикрепления: 3795377.rar(80.5 Kb)
ADMIN Дата: Пт, 11.03.2011, 05:00  |                                                                                                                Сообщение # 20
Администратор
Группа: Администраторы
Ранг:  Специалист
Сообщений: 1097
Репутация: 32   ±
Замечания:   ±
На сайте с 20.08.2007

Статус: Offline

А где вчерашний вариант? В этом варианте получается, что значение переменной меняется с каждым изменением значения захвата потому, что оно стоит в теле программы, а не в прерывании:
Code

      while TRUE
          Delay_Ms(200)
          if PORTB.5 = 0 then
                   pulse= 0
                   TMR1H = 0
                   TMR1L = 0
                   CCPR1L = 0  'А здесь постоянно обнуляется CCPR1
                   CCPR1H = 0  
                   T1CON.0 = 0
                          

          end if

                   pulse = (TMR1H*256)+TMR1L
                   imp_2 = CCPR1L + (CCPR1H*256)
                   shirina = imp_1 - imp_2 'Здесь постоянно происходит вычитание и так до бесконечности

                   WordToStr(pulse,pulse_ex)
                   Lcd_Out(1,3, pulse_ex)

                   WordToStr(imp_2,null_ex)
                   Lcd_Out(2,3,null_ex)

                   WordToStr(shirina,shiri na_ ex)    
                   Lcd_Out(1,11,shirina_ex )

                   WordToStr(imp_1,imp_1_ex)
                   Lcd_Out(2,11,imp_1_ex )
      wend

Вариант, который я отправил вчера, содержал две строчки - CCP1CON = 0x05(включает захват по переднему фронту), и CCP1CON = 0x04(включает захват по срезу импульса). Причем этот вариант работал(там нужно было только учесть время в нахождения в прерывании).
В момент прихода импульса устанавливается флаг CCP1IF, что вызывает прерывание. В прерывании проверяем, если включен захват по переднему фронту, то значение CCPR1L и CCPR1H закидываем в переменную(это будет точка отсчета ширины импульса) и устанавливаем прерывание по срезу импульса. Потом сбрасываем флаг прерывания CCP1IF и ждем следующего прерывания по срезу. Как только мы вошли в прерывание, то вычитаем текущее значение CCPR1 и значение начала отсчета ширины импульса. Получаем ширину.Что там не понравилось?

Прикрепления: default.rar(401.5 Kb)
Axell Дата: Пт, 11.03.2011, 06:37  |                                                                                                                Сообщение # 21
Группа: Пользователи
Ранг:  Новенький
Сообщений: 13
Репутация: 0   ±
Замечания:   ±
На сайте с 25.02.2011

Статус: Offline

Quote (ADMIN)
А где вчерашний вариант?

Извините за дублирование.
Просто на момент написания этого ответа мой ясчик еще был пуст.. sad
Сча все есть и будем разбираться..
Спасибо Вам..

ЯНДЕКС Дата: 11.03.2011
Axell Дата: Пт, 11.03.2011, 20:50  |                                                                                                                Сообщение # 22
Группа: Пользователи
Ранг:  Новенький
Сообщений: 13
Репутация: 0   ±
Замечания:   ±
На сайте с 25.02.2011

Статус: Offline

Уважаемый ADMIN подскажите плиз, как в ПРОТЕУСЕ подать вот такие 2 последовательности импульсов на разные входа со смещением..А то как не кручу у меня хоть по одному фронту но совпадает..

Спасибо

Прикрепления: 0216965.jpg(54.4 Kb)
DAlexV Дата: Пт, 11.03.2011, 23:22  |                                                                                                                Сообщение # 23
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 665
Репутация: 27   ±
Замечания:   ±
На сайте с 13.05.2008

Статус: Offline

"Бог в Помощь !!!" (м.ф. Жил был пес) biggrin

Берем 2 источника прямоугольных импульсов. Частота у обоих одинаковая(какая требуется). Смещение регулируем в генераторе B (задержкой первого фронта)
схему прицепил. Успехов wink

Прикрепления: 2_Gen.dsn(54.7 Kb)


Будьте оригинальны-не повторяйте чужих ошибок ! Рыба сдохла. Теперь STM32(TS)+C#(VS).Старею :)
ADMIN Дата: Сб, 12.03.2011, 07:51  |                                                                                                                Сообщение # 24
Администратор
Группа: Администраторы
Ранг:  Специалист
Сообщений: 1097
Репутация: 32   ±
Замечания:   ±
На сайте с 20.08.2007

Статус: Offline

Применительно к PIC можно использовать 2 таймера. Один использовать для генерации одной последовательности, другой - для другой. Главное - это вычислить точное время нахождения в прерывании для точной генерации.
Axell Дата: Сб, 19.03.2011, 00:21  |                                                                                                                Сообщение # 25
Группа: Пользователи
Ранг:  Новенький
Сообщений: 13
Репутация: 0   ±
Замечания:   ±
На сайте с 25.02.2011

Статус: Offline

Подскажите плиз, почему проект в протеусе работает в идеале, а как соберу в железе то со счетом начинается свистопляска... cry Нет стабильности в измерении импульсов..Даже при измерении ширины на каждом импульсе разное значение, хотя импульсы поступают с одинаковым периодом..Правда не такие идеальные, как в Потеусе(у меня есть маленьие срезы на заднем фронте), но все же почему так...

ПыСы.Пробовал подовать на контроллер через делитель -- становилось лучше, но не идеально..

Программа нужна для проверки вот такого устройства...Только на приведенной схеме 15В, а у меня устройства на 5В...Принцип один и тот же..

И исче вопрос, как измеряется скважность..?? В доке написано так : конфигурируем на захват по пер.фронту - сохраняем, конфиг.по заднему - высчитываем, конфиг. опять по переднему- высчитываем - сдесь судя по докум. должно сохранится первое и последнее значение, а у меня первое почемуто перепиcываетя последним и ничего не получается..Почему так.?

Code

         if CCP1CON = 0x05 THEN   
            imp_1=  CCPR1L + (CCPR1H*256)                       
                 CCP1CON= 0x04                     
                 imp_2 = CCPR1L + (CCPR1H*256)            
                   ELSE
                 CCP1CON= 0x05                     
                 W = (CCPR1L + (CCPR1H*256)) - imp_2       
                 T=(CCPR1L + (CCPR1H*256)) - imp_1
                 S=T / W
                end if

Добавлено (19.03.2011, 00.21.40)
---------------------------------------------
C предыдущим вопросом разобрался... smile

Возник другой вопрос..
Как правильно вывести результат деления, который получается дробным...
Например : двоичный код (0001) / двоичный код (0010) = результат в десятичном (0.5)
Как правильно ето оформить в программе..??

Сообщение отредактировал Axell - Сб, 19.03.2011, 00:23
Men Дата: Чт, 15.03.2012, 16:31  |                                                                                                                Сообщение # 26
Группа: Проверенные
Ранг:  Новенький
Сообщений: 2
Репутация: 0   ±
Замечания:   ±
На сайте с 15.03.2012

Статус: Offline

Доброго времени!!!На просторах интернета попалась программка...скопировав ее захотелось немного поучится в освоении программирования на примере простой программки.Пытаюсь ее компилировать...а mikroBasic v7.0.0.2 не хочет ничего делать....Помогите пожалуйста....может что то не так в программе...или подскажите что нужно сделать....чтобы получить HEX ?Заранее спасибо!!!
Прикрепления: _1057PIC628.pbas(5.0 Kb)
ivan_fd Дата: Чт, 15.03.2012, 17:46  |                                                                                                                Сообщение # 27
Группа: Модераторы
Ранг:  Специалист
Сообщений: 897
Репутация: 124   ±
Замечания:   ±
На сайте с 12.01.2009

Статус: Offline

Так это не проект, а какой то набор букв. Посмотрите на примеры среды разработки, там много всего.
И скачайте свежий компилятор.
Bogdankul Дата: Пт, 03.06.2022, 17:53  |                                                                                                                Сообщение # 28
Группа: Заблокированные
Ранг:  Пытаюсь разобраться
Сообщений: 41
Репутация: -3   ±
Замечания:   ±
На сайте с 22.10.2019

Статус: Offline

Привет друзья.

Предлагаем Вашему вниманию замечательный сайт для заказа услуг стоматологии в Минске.К вашим услугам лучшие стоматологи Минска с многолетним стажем.стоматология минск,удаление зуба, отбеливание зубов,лечение зуба,удаление зуба мудрости,стоматология минск цены и стоматология платные услуги минск.
У нас работают стоматологи высшей категории, доценты и профессора — врачи с высоким уровнем профессионализма и личной ответственности, способные действовать в команде и постоянно совершенствоваться. Наша профессия — это ваша здоровая и красивая улыбка!Мы всегда на связи с вами! Мы предлагаем комплексный подход в решении стоматологических проблем.это команда единомышленников, одни из лучших специалистов в области эстетической и восстановительной стоматологии, ортопедии, ортодонтии, челюстно-лицевой хирурги и периодонтологии, эндодонтии, что позволяет достигать наилучших результатов лечения.Мы верим в построение отношений, основанных на доверии и взаимопонимании. Наши пациенты становятся нашими друзьями.
От всей души Вам всех благ!
циркониевые коронки из диоксида циркония
стоматология пломбирование зуба
зубные протезы съемные на нижние зубы
швы после удаления зуба мудрости
силиконовые протезы съемные зубные
зубы вставные металлокерамика
удаление зуба в десне
съемное протезирование на имплантах
удаление гранулемы зуба
установка имплантация зубов
безметалловая керамика каркас
платная стоматология в минске цены
проф отбеливание зубов
зуб полировка стоматологический
металлокерамическая коронка мост цена
зуб имплантация минск
скол на металлокерамической коронке
циркониевые коронки на жевательные зубы
протезирование на 6 имплантах
уход за полостью рта гигиена
хирургическая стоматология лечение
имплантация синус лифт
удаление зуба имплантация цена
внутриканальное отбеливание депульпированного зуба
зубное протезирование импланты цены
съемные зубные протезы
гигиена полости рта в минске стоимость
первая имплантация зубов
болит зуб пульпит лечение
сода после удаления зуба
зубной съемный протез коррекция
сколько отходит анестезия после лечения зуба
пломбирование корневого канала зуба
сильная анестезия для зубов
абатмент straumann индивидуальный
зуб нерв пломбировка удаление
удаление зубов под анестезией
лифтинг перед имплантацией зубов
профессиональная чистка зубов с брекетами
съемные конструкции зубных протезов
съемный зубной протез две челюсти
металлокерамическая коронка минск
безметалловая керамическая коронка диоксид циркония
керамические виниры стоимость одного зуба
отбеливание зубов реальные фото
фотоотбеливание зубов цена
временная зубная коронка
съемный зубной протез на 4 зуба
облегченные зубные протезы съемные
передних зубы после пломбирования


магнитоэлектрические измерительные приборы
Antoniouwk Дата: Вт, 21.06.2022, 16:46  |                                                                                                                Сообщение # 29
Группа: Пользователи
Ранг:  Новенький
Сообщений: 17
Репутация: 0   ±
Замечания:   ±
На сайте с 09.07.2021

Статус: Offline

Приветствую Вас друзья!
Предлагаем Вашему вниманию замечательный сайт https://dengi-do-zarplaty.ru/
Первое, что приходит в голову – это обратиться в банк. Но здесь есть нюансы. Чтобы оформить деньги в кредит в банке, понадобиться время, которого иногда нет. Или к примеру, если человек имеет плохую кредитную историю, банк однозначно не одобрит ему запрашиваемые средства. Получить желаемую сумму будет также сложно тем, кто не имеет официальной работы и постоянного дохода.Если в Ваши планы входит взять деньги в долг без банков и поручителей, в таком случае единственным выходом из ситуации будет - оформление микрозайма в МФО. Все выше перечисленные категории заемщиков, которые считаются максимально рискованными для банковского сектора, в МФО получают положительное решение по выдачи средств.


пленка под дерево для авто купить
Форум Picbasic.ru » Программирование МК » Mikrobasic » Помогите разобраться с программой (Не работает)
  • Страница 2 из 2
  • «
  • 1
  • 2
Поиск: