Пятница, 19.04.2024, 22:36
Вы вошли как Гость | Группа "Гости"Приветствую Вас Гость | RSS
Главная | RC-Switch 2.0 - Новый функционал - Страница 2 - Форум | Мой профиль | Регистрация | Выход | Вход
Обитель RC-инженера
Форма входа
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 2 из 3
  • «
  • 1
  • 2
  • 3
  • »
Модератор форума: ВитГо  
Форум » Разработка электронных устройств » Разрабатываю ! » RC-Switch 2.0 - Новый функционал
RC-Switch 2.0 - Новый функционал
uwrteyДата: Суббота, 04.05.2013, 00:02 | Сообщение # 16
Генерал-майор
Группа: Администраторы
Сообщений: 3270
Репутация: 11
Статус: Offline
Цитата
Вопрос в том, как определять "что на ноге"... и сколько времени это займёт...

это два вопроса smile
1) Первый ответ
нужную ногу настроить на вход
Ldi R16, 0b11101111 ( четвертая нога порта Б настроена на вход )
out DDRB, R16
затем читаем что на этой ноге
in r16, PortB ( читаем весь порт )
andi R16, 0b00010000 ( оставляем данные только в четвертом бите )
cpi r16, 0b00010000 ( сравниваем с числом )
breq log_1 ; если лог 1
rjmp log_0 ; если лог 0

2) второй ответ
незнаю dry , сколько-то займет, а сколько не знаю
дак и нормальный таймер то-же сколько то занимает и скорее всего может показывать разные значения...


не успеваю за своими мыслями......

Сообщение отредактировал uwrtey - Суббота, 04.05.2013, 00:06
 
PlohishДата: Суббота, 04.05.2013, 00:12 | Сообщение # 17
Сержант
Группа: Проверенные
Сообщений: 24
Репутация: 0
Статус: Offline
когда я говорил "как определить" я имел ввиду способ, а не конкретный код, хотя и за него спасибо, но я в ассемблере ни бум бум... я и Си знаю только по наитию, пару команд... smile
я говорил про способ определения, ну да это ладно...

Таймер, я так понимаю вещь работающая независимо от основного кода, а следовательно он считать будет на порядок точнее того что вы предлагаете...
однако попробовать нужно smile
 
uwrteyДата: Суббота, 04.05.2013, 00:16 | Сообщение # 18
Генерал-майор
Группа: Администраторы
Сообщений: 3270
Репутация: 11
Статус: Offline
все верно smile

да я и сам не бум бум, где то что то прочитал.
Но в основном всему ВитГо научил, где что нужно пальцем показал, разжевал и в рот положил.
Спасибо ему smile


не успеваю за своими мыслями......

Сообщение отредактировал uwrtey - Суббота, 04.05.2013, 00:18
 
PlohishДата: Суббота, 04.05.2013, 12:03 | Сообщение # 19
Сержант
Группа: Проверенные
Сообщений: 24
Репутация: 0
Статус: Offline
идею uwrtey реализовал, вроде работает, однако как скажется на ней например внешняя температура, нипанятна smile
 
uwrteyДата: Суббота, 04.05.2013, 13:13 | Сообщение # 20
Генерал-майор
Группа: Администраторы
Сообщений: 3270
Репутация: 11
Статус: Offline
up Молодец.

А про какую внешнюю температуру речь ?


не успеваю за своими мыслями......
 
ВитГоДата: Суббота, 04.05.2013, 13:22 | Сообщение # 21
Полковник
Группа: Администраторы
Сообщений: 2422
Репутация: 20
Статус: Offline
на счет таймера:

имхо, разделить работу с таймером на 2 части:
1. работаем на захват - у нас это импульс с интервалом от 1 до 2 мс..
2. оставшиеся 18 мс - работаем как таймер для отмера длительности импульса для ШИМ (причем с учетом полученного значения из [1])

в принципе ничего сложного..

если 90% мощности ШИМ (общий цикл 20 мс, из них 2 мс - это замер - то есть 10% пустое время) будет не достаточно - то перед замером устанавливаем выход ШИМ в "1" (ненамного сложнее алгоритм кстати !)

получается как бы полупрограммный ШИМ (но процессор все равно ничего больше не делает)...


Виталий (аka ВитГо)
 
ВитГоДата: Суббота, 04.05.2013, 13:26 | Сообщение # 22
Полковник
Группа: Администраторы
Сообщений: 2422
Репутация: 20
Статус: Offline
Цитата (Plohish)
Таймер, я так понимаю вещь работающая независимо от основного кода, а следовательно он считать будет на порядок точнее того что вы предлагаете...


таймер это фактически микросхема счетчика - поэтому точность максимальная.. - это намного лучше чем считать программно..

хотя опять таки - если тинька больше ничем не занимается - то ради бога - можете делать и программный подсчет, если это будет на асме - то длительность задержки легко считается так как время исполнения каждой асм команды известна...
для си конечно будет чуть сложнее, но в этом случае можно применить inline ассемблер в си... либо посмотреть в какой код преобразовывается код задержки на си компилятором в асм...


Виталий (аka ВитГо)
 
PlohishДата: Суббота, 04.05.2013, 14:34 | Сообщение # 23
Сержант
Группа: Проверенные
Сообщений: 24
Репутация: 0
Статус: Offline
Цитата (uwrtey)
А про какую внешнюю температуру речь ?


окружающего воздуха... плюс 35 - минус 15 ....
 
uwrteyДата: Суббота, 04.05.2013, 21:19 | Сообщение # 24
Генерал-майор
Группа: Администраторы
Сообщений: 3270
Репутация: 11
Статус: Offline
Цитата (Plohish)
вроде работает, однако как скажется на ней например внешняя температура, нипанятна

ни когда не задавался этим вопросом surprised , надеюсь ни как smile

Нужно еще попробовать то, что советует ВитГо ( полу программный ШИМ ) - Правда я не понял, как его организовать ... wacko


не успеваю за своими мыслями......

Сообщение отредактировал uwrtey - Суббота, 04.05.2013, 21:20
 
PlohishДата: Суббота, 04.05.2013, 21:24 | Сообщение # 25
Сержант
Группа: Проверенные
Сообщений: 24
Репутация: 0
Статус: Offline
он имел ввиду немножко не то...

он предлагает на время замера длительности, это порядка 20 миллисекунд на выводе который поджигает светодиод ШИМом отключать ШИМ и тупо включать "единицу", потом снова возвращать ШИМ

не знаю как это отразится на свечении диода, особенно когда ШИМ в самом "начале", когда свечение слабое...


Сообщение отредактировал Plohish - Суббота, 04.05.2013, 21:27
 
uwrteyДата: Суббота, 04.05.2013, 21:31 | Сообщение # 26
Генерал-майор
Группа: Администраторы
Сообщений: 3270
Репутация: 11
Статус: Offline
интересно... smile
нужно пробовать, что бы проверить...


не успеваю за своими мыслями......

Сообщение отредактировал uwrtey - Суббота, 04.05.2013, 21:32
 
PlohishДата: Суббота, 04.05.2013, 21:42 | Сообщение # 27
Сержант
Группа: Проверенные
Сообщений: 24
Репутация: 0
Статус: Offline
после реализации вашей идеи, мне это кажется уже слишком геморно smile
а при условии того что результат непонятен, так вообще...

но для развития мозгов поковырять как нить можно...

а вы так и не дошли до реализации плавного зажигания на асме?
 
ВитГоДата: Суббота, 04.05.2013, 21:44 | Сообщение # 28
Полковник
Группа: Администраторы
Сообщений: 2422
Репутация: 20
Статус: Offline
Цитата (Plohish)
отключать ШИМ и тупо включать "единицу", потом снова возвращать ШИМ


либо тупо включать ноль !

это нужно делать в зависимости от длительности - если менее 80% то держать выключено (ноль) на выходе ШИМ во время захвата, а если больше 80% то держать лог.1

в общем ничего сложного..

единственно что для светодиода возможно частота в 50 гц будет маловата :-(


Виталий (аka ВитГо)
 
uwrteyДата: Воскресенье, 05.05.2013, 13:19 | Сообщение # 29
Генерал-майор
Группа: Администраторы
Сообщений: 3270
Репутация: 11
Статус: Offline
Цитата (Plohish)
а вы так и не дошли до реализации плавного зажигания на асме?

нет, я пока не занимался этим... времени не хватает. Закончу пропорциональное управление для вертолета и попробую.
Я думаю что стоит прислушаться к ВитГо, его вариант "покруче" будет.

Цитата
после реализации вашей идеи, мне это кажется уже слишком геморно smile
а при условии того что результат непонятен, так вообще...


пускай геморно, лишь бы это кому то нужно было...
а результат непонятен в силу того, что у нас с Вами маловато знаний и опыта... smile
______________________________________________________________________

Цитата (ВитГо)
единственно что для светодиода возможно частота в 50 гц будет маловата :-(

наверно RC-цепочка поможет в таком случае. smile

Добавлено (05.05.2013, 13:19)
---------------------------------------------
Plohish, мне хочется посмотреть на то что у вас получилось, хоть я и не понимаю СИ smile


не успеваю за своими мыслями......

Сообщение отредактировал uwrtey - Суббота, 04.05.2013, 22:02
 
PlohishДата: Вторник, 07.05.2013, 17:10 | Сообщение # 30
Сержант
Группа: Проверенные
Сообщений: 24
Репутация: 0
Статус: Offline
стрёмно мне как то smile

наверняка написано всё по лоховски ...

есть небольшая загвоздка, когда я писал этот код в CodeVisionAVR и дебажил в AVR Studio 4, количество циклов по подсчёту переменной было одно, а когда всё это засунул в протеус, там стало совсем по другому!
и в реальном железе точно так же как и в протеусе... видимо протеус обрабатывает уже asm и там всё не так... но с другой стороны методом подбора нашёл нужные цифры, всё работает!

Код


#include <tiny13.h>

// Declare your global variables here

int tmp=0,front=0;

// Pin change interrupt service routine
interrupt [PC_INT0] void pin_change_isr(void)
{
if (PINB.1 == 1)
      {
      front = 1;
      tmp = 0;
      }
else
      {      
      if (tmp < 1150) tmp = 1150;
      if (tmp > 1915) tmp = 1915;
      OCR0A = (tmp-1150)/3;
      front = 0;
      }
}

void main(void)
{
// Declare your local variables here

// Crystal Oscillator division factor: 1
#pragma optsize-
CLKPR=(1<<CLKPCE);
CLKPR=(0<<CLKPCE) | (0<<CLKPS3) | (0<<CLKPS2) | (0<<CLKPS1) | (0<<CLKPS0);
#ifdef _OPTIMIZE_SIZE_
#pragma optsize+
#endif

// Port B initialization
PORTB=0b11111111;
DDRB=0b00000001;
PORTB.0 = 0;

// External Interrupt(s) initialization
        GIMSK = 0b00100000;
        PCMSK = 0b00000010;  // Прерывание по перепаду     
          
// Таймер     
    TCCR0A = 0b10000001;  // управление выходом, ШИМ
    TCCR0B = 0x01;  // делителя нет   

// Global enable interrupts   )
#asm("sei")

while (1)
{
        if (front == 1) tmp++;    
}

}


Сообщение отредактировал Plohish - Вторник, 07.05.2013, 17:14
 
Форум » Разработка электронных устройств » Разрабатываю ! » RC-Switch 2.0 - Новый функционал
  • Страница 2 из 3
  • «
  • 1
  • 2
  • 3
  • »
Поиск:


Copyright MyCorp © 2024
Сделать бесплатный сайт с uCoz