Уроки на Си.
Модератор: koolhatcker
-
- Смотрящий
- Сообщения: 1504
- Зарегистрирован: 30 авг 2009, 00:00
- Откуда: Омск
- Контактная информация:
рассуждения по написанию "одной строки"
исходные данные - процедура обработки прерывания isr(void){}, которая по сигналу "Step"
должна проверить состояние линии "Dir" и при Dir=1 увеличить значение переменной
cur_step, а при Dir=0 - уменьшить(сигнал "Dir" - это (PORTB & 2) ).
итак при Dir=1 (...или (PORTB & 2)=2) cur_step=cur_step+1,
а при Dir=0 (...или (PORTB & 2)=0) cur_step=cur_step-1
заметим, что при (PORTB & 2)=2 нам нужна "+1", а при (PORTB & 2)=0 - "-1"
поэтому пишем (cur_step+(PORTB & 2)-1). Ну а теперь осталось ограничиться
размером таблицы, т.е. значением индекса от 0 до 3 (0,1,2,3) :
cur_step=(cur_step+(PORTB & 2)-1) & 3;
или так, что чуть лучше:
cur_step=(--cur_step+(PORTB & 2)) & 3;
все .... и вроде ничего непонятного тут нет
исходные данные - процедура обработки прерывания isr(void){}, которая по сигналу "Step"
должна проверить состояние линии "Dir" и при Dir=1 увеличить значение переменной
cur_step, а при Dir=0 - уменьшить(сигнал "Dir" - это (PORTB & 2) ).
итак при Dir=1 (...или (PORTB & 2)=2) cur_step=cur_step+1,
а при Dir=0 (...или (PORTB & 2)=0) cur_step=cur_step-1
заметим, что при (PORTB & 2)=2 нам нужна "+1", а при (PORTB & 2)=0 - "-1"
поэтому пишем (cur_step+(PORTB & 2)-1). Ну а теперь осталось ограничиться
размером таблицы, т.е. значением индекса от 0 до 3 (0,1,2,3) :
cur_step=(cur_step+(PORTB & 2)-1) & 3;
или так, что чуть лучше:
cur_step=(--cur_step+(PORTB & 2)) & 3;
все .... и вроде ничего непонятного тут нет
Не в тему:
Цель - заставить людей ДУМАТЬ и искать ОПТИМАЛЬНЫЕ решения (.. и не ждать ХАЛЯВЫ)
Цель - заставить людей ДУМАТЬ и искать ОПТИМАЛЬНЫЕ решения (.. и не ждать ХАЛЯВЫ)
-
- Смотрящий
- Сообщения: 1504
- Зарегистрирован: 30 авг 2009, 00:00
- Откуда: Омск
- Контактная информация:
И получим выигрыш в объёме кода на 3 байта в ROM, но проигрыш на 2 байта в RAM по сравнению с текстом статьи. И всё это ради того, чтобы уместить всё в одну строку, но при этом сделать листинг абсолютно нечитаемым для новичка?или так, что чуть лучше:
Уместить всё в одну строчку - далеко не всегда оптимальное решение. Как по быстродействию, так и по читаемости. Ещё раз напоминаю: статья - для новичков. Поэтому прошу в дальнейшем смотреть на происходящее в этой теме именно с этой позиции и критерием лучше/хуже считать в первую очередь читаемость и понимание общего алгоритма.Цель - заставить людей ДУМАТЬ и искать ОПТИМАЛЬНЫЕ решения
Не в тему:
P.S. Сообщения с выяснением отношений удалил. Выясняйте в личке. А тут - только по существу. Кто не поймёт - не обижайтесь .
P.S. Сообщения с выяснением отношений удалил. Выясняйте в личке. А тут - только по существу. Кто не поймёт - не обижайтесь .
Автономный контроллер станка с ЧПУ: http://it-en.ru/cnc
koolhatcker, а продолжение к статье http://it-en.ru/cnc/doc/1.html будет? Интересна реализация ШИМ на мк.
-
- Смотрящий
- Сообщения: 1504
- Зарегистрирован: 30 авг 2009, 00:00
- Откуда: Омск
- Контактная информация:
Ну если хотите именно ШИМ, то давайте внедрим ШИМ.
P.S. Это ШИМ? Или не совсем?:). Попытка симуляции работы ДШИ200-2, питание 24В. Синее - опорное, зелёное - затвор ключа, красное - напряжение на датчике тока.
P.S. Это ШИМ? Или не совсем?:). Попытка симуляции работы ДШИ200-2, питание 24В. Синее - опорное, зелёное - затвор ключа, красное - напряжение на датчике тока.
Автономный контроллер станка с ЧПУ: http://it-en.ru/cnc
-
- Смотрящий
- Сообщения: 1504
- Зарегистрирован: 30 авг 2009, 00:00
- Откуда: Омск
- Контактная информация:
Ну раз все молчат, то вот вам пища для разговоров...
http://it-en.ru/cnc/doc/2.html
http://it-en.ru/cnc/doc/2.html
Автономный контроллер станка с ЧПУ: http://it-en.ru/cnc
-
- Смотрящий
- Сообщения: 1504
- Зарегистрирован: 30 авг 2009, 00:00
- Откуда: Омск
- Контактная информация:
И опять все молчат...
Ждут 3-й части с полушагом и режимом удержания, т.е. исходников для готового драйвера под полушаг?:). Чую зря я тут распинаюсь...
Ждут 3-й части с полушагом и режимом удержания, т.е. исходников для готового драйвера под полушаг?:). Чую зря я тут распинаюсь...
Автономный контроллер станка с ЧПУ: http://it-en.ru/cnc
Всё очень доступно изложенно Спасибо! Думал всё намного сложнееkoolhatcker писал(а):Ну раз все молчат, то вот вам пища для разговоров...
http://it-en.ru/cnc/doc/2.html
Есть пара вопросов:
1. Когда (периодически или после какого-либо события) приходят прерывания с компараторов?
2. Зачем использовать ножку МК для формирования опорного напряжения? Источник питания МК не годится?
-
- Смотрящий
- Сообщения: 1504
- Зарегистрирован: 30 авг 2009, 00:00
- Откуда: Омск
- Контактная информация:
Это подробно описано в документации на МК:).1. Когда (периодически или после какого-либо события) приходят прерывания с компараторов?
При изменении уровня сигнала на выходе любого компаратора устанавливается флаг прерывания от компараторов CMIF. Далее в подпрограмме обработки прерываний пользователь может проверить флаги C1OUT и C2OUT и выяснить какой именно компаратор вызвал прерывание. В рассмотренном случае как только напряжение с датчика тока превысит опорное, то тут же (типовое время задержки 150nS) будет установлен флаг CMIF и возникнет прерывание.
Источник питания МК вполне годится. Обратите внимание на схему - эта ножка МК является выходом имеющего в PIC16F628 аппаратного модуля ШИМ. Поэтому если в дальнейшем в драйвер захочется ввести режим снижения тока двигателя при простое, то на эту ножку можно выдавать например не уровень лог.1, а ШИМ сигнал со скважностью 50%, что позволит снизить ток в режиме удержания:).Зачем использовать ножку МК для формирования опорного напряжения? Источник питания МК не годится?
Автономный контроллер станка с ЧПУ: http://it-en.ru/cnc
-
- Смотрящий
- Сообщения: 7565
- Зарегистрирован: 28 авг 2009, 00:00
- Имя: Юрий
- Откуда: Украина. Межевая.
koolhatcker, если я в твоём первом описании таблицу шагов тупо заменяю на полушаг, и указываю что элементов таблицы стало 8, будет работать?
И там есть вот такое:
PORTB = 0x00; //Выводим в порт В нули
TRISB = 0x03; //Весь порт В кроме 2-х младших разрядов - на вывод
Строки не надо поменять местами? А то(на мой взгляд) сначала выводим данные в порт, а потом производим его настройку(ввод или вывод).
И там есть вот такое:
PORTB = 0x00; //Выводим в порт В нули
TRISB = 0x03; //Весь порт В кроме 2-х младших разрядов - на вывод
Строки не надо поменять местами? А то(на мой взгляд) сначала выводим данные в порт, а потом производим его настройку(ввод или вывод).
Глаза боятся, а руки делают!
Хостинг по CNC http://cncfiles.su/
Хостинг по CNC http://cncfiles.su/
-
- Смотрящий
- Сообщения: 1504
- Зарегистрирован: 30 авг 2009, 00:00
- Откуда: Омск
- Контактная информация:
Код: Выделить всё
указываю что элементов таблицы стало 8, будет работать?
Надо. Сначала - направление, потом - значение.Строки не надо поменять местами?
Автономный контроллер станка с ЧПУ: http://it-en.ru/cnc
-
- Смотрящий
- Сообщения: 7565
- Зарегистрирован: 28 авг 2009, 00:00
- Имя: Юрий
- Откуда: Украина. Межевая.
Да нивжизнь:). Униполяр, хоть все полевики сразу открой... По крайняку не вижу причины гореть:)Сгорит скорее всего
Ага, прошляпил. И больше причин нет, так? И тогда вполне естественно добавить опрос ноги, типа "выбор режима - шаг/полушаг". Я так понимаю,это надо всунуть в программу в самом начале, после настроек портов?там где указатель меняется
Ага, так это надо и какие-то указатели на таблицы, и... Короче недорос:). Пока:).
Глаза боятся, а руки делают!
Хостинг по CNC http://cncfiles.su/
Хостинг по CNC http://cncfiles.su/
-
- Смотрящий
- Сообщения: 1504
- Зарегистрирован: 30 авг 2009, 00:00
- Откуда: Омск
- Контактная информация:
Ну попробуй:).По крайняку не вижу причины гореть
На первый взгляд вроде как нет(при абсолютной идентичности обмоток). Пробовать нужно, чтобы точно сказать.И больше причин нет, так?
Мужики, только честно, кто-нибудь полным шагом пользуется?:) Мало того что на нём из-за резонанса движок не разогнать, так ещё и звук не тот ."выбор режима - шаг/полушаг"
Автономный контроллер станка с ЧПУ: http://it-en.ru/cnc
-
- Смотрящий
- Сообщения: 7565
- Зарегистрирован: 28 авг 2009, 00:00
- Имя: Юрий
- Откуда: Украина. Межевая.
Ради прикола попробовал...Раньше не использовал, и впредь не собираюсь:). Во гремит-то! Тем более что по Х осталось монолитное соединение винта и движка. С муфтой вроде помягче, но даже не сравнитиь:(.кто-нибудь полным шагом пользуется?
Глаза боятся, а руки делают!
Хостинг по CNC http://cncfiles.su/
Хостинг по CNC http://cncfiles.su/
Через какой промежуток времени, при отсутствии STEP сигнала, ШД переводят в режим ожидания?life писал(а):...Самое простое что приходит на ум, так это перезапускать степом таймер, при отсутствии степ таймер переполняется и по прерыванию уходим на удержание...
Какой % от номинального тока рекомендуется пропускать при удержании?
Или это всё индивидуально?
-
- Смотрящий
- Сообщения: 1504
- Зарегистрирован: 30 авг 2009, 00:00
- Откуда: Омск
- Контактная информация:
Через промежуток времени превышающий минимальную частоту сигнала Step.Через какой промежуток времени, при отсутствии STEP сигнала, ШД переводят в режим ожидания?
Ток удержания должен быть таким, чтобы вал двигателя надёжно фиксировался.Какой % от номинального тока рекомендуется пропускать при удержании?
Не в тему:
А вобще эти вопросы никакого отношения к программированию не имеют, поэтому завязываем с офтопиком. Подобные вопросы впредь прошу задавать в соответствующих темах форума.
Автономный контроллер станка с ЧПУ: http://it-en.ru/cnc
- Pyku_He_oTTyda
- Станкостроитель
- Сообщения: 13
- Зарегистрирован: 07 сен 2009, 00:00
Приветствую всех!
Вероятно, уже пролетала эта ссылка
www.chipenable.ru
если нет, то очень рекомендую! Более лучшего изложения я не встречал в сети.
Вероятно, уже пролетала эта ссылка
www.chipenable.ru
если нет, то очень рекомендую! Более лучшего изложения я не встречал в сети.
Классный учебник -спасибо !!!Dj_smart писал(а):Вот тут Скачать файл "prog_avr_pic.rar"(9.1 мб)
А по диску... Смотри оглавление в книге, и что интересует выложу.
-
- Смотрящий
- Сообщения: 1504
- Зарегистрирован: 30 авг 2009, 00:00
- Откуда: Омск
- Контактная информация:
Ну вот и свершилась проверка теории на практике.
Вроде даже работает.
http://it-en.ru/cnc/driver/Simple%20driver%20628.html
Для обсуждения вопросов работы данного устройства создал тему тут: http://www.cncmasterkit.ru/modules.php? ... 0053#10053
Вроде даже работает.
http://it-en.ru/cnc/driver/Simple%20driver%20628.html
Для обсуждения вопросов работы данного устройства создал тему тут: http://www.cncmasterkit.ru/modules.php? ... 0053#10053
Автономный контроллер станка с ЧПУ: http://it-en.ru/cnc
Re: Уроки на Си.
спасибо! изучил, все вроде понятно почему контроль степа делаем по спадающему фронту? а так же хотелось продолжения хотябы в виде теории по быстрому, медленному, смешанному спаду токов! когда и в какие моменты лучше ими пользоватся? до какого уровня можно поднять частоту ШИМ?
Если частота ШИМ 20кгц это получается 50мкс, если сигнал степ превышает это значение тогда будет пропуск шагов?
Спасибо за статью.
Если частота ШИМ 20кгц это получается 50мкс, если сигнал степ превышает это значение тогда будет пропуск шагов?
Спасибо за статью.
-
- Смотрящий
- Сообщения: 1504
- Зарегистрирован: 30 авг 2009, 00:00
- Откуда: Омск
- Контактная информация:
Re: Уроки на Си.
Потому, что вход Step подтянут к +5В и активный уровень для него - низкий.neyvert писал(а):почему контроль степа делаем по спадающему фронту?
К данному "железу" это неприменимо. Рекомендую ознакомиться с документацией на интегральные микрошаговые драйверы - там всё это расписано.neyvert писал(а):теории по быстрому, медленному, смешанному спаду токов!
Насколько позволит МК при данной тактовой.neyvert писал(а):до какого уровня можно поднять частоту ШИМ?
Нет, пропуска не будет. Время обработки изменения уровня на входе Step около 5uS. Частота ШИМ с частотой Step связана косвенно, а не непосредственно .neyvert писал(а):если сигнал степ превышает это значение тогда будет пропуск шагов?
Автономный контроллер станка с ЧПУ: http://it-en.ru/cnc
-
- Станкостроитель
- Сообщения: 18
- Зарегистрирован: 10 дек 2015, 05:08
- Имя: Александр
- Откуда: Томск
Re:
koolhatcker писал(а):Выложил пока сюда: http://it-en.ru/cnc/doc/1.html
Ссылки не рабочие. Материал, наверно давно пропал? Интересно было бы почитать !koolhatcker писал(а):Ну раз все молчат, то вот вам пища для разговоров...
http://it-en.ru/cnc/doc/2.html
-
- Станкостроитель
- Сообщения: 442
- Зарегистрирован: 26 май 2011, 00:00
- Имя: Алексей
- Откуда: Дальний восток Шимановск
Re: Уроки на Си.
Можно как то попросить материал или перезалить куда нибудь? Хотел на зиму занятие себе организовать)))Baykonur писал(а):koolhatcker писал(а):
Выложил пока сюда: http://it-en.ru/cnc/doc/1.html
koolhatcker писал(а):
Ну раз все молчат, то вот вам пища для разговоров...
http://it-en.ru/cnc/doc/2.html
Не в тему:
в добавок к аэрографу
-
- Станкостроитель
- Сообщения: 381
- Зарегистрирован: 04 дек 2009, 01:00
- Имя: Виктор
- Откуда: Московская обл.
Re: Уроки на Си.
В 9-м радио драйвер ШД на меге48, есть исходники на асме с коментами, на зиму должно хватить)))
-
- Станкостроитель
- Сообщения: 442
- Зарегистрирован: 26 май 2011, 00:00
- Имя: Алексей
- Откуда: Дальний восток Шимановск
Re: Уроки на Си.
спасибо!
-
- Станкостроитель
- Сообщения: 18
- Зарегистрирован: 10 дек 2015, 05:08
- Имя: Александр
- Откуда: Томск
Re: Уроки на Си.
Спасибо, конечно! Но тема всё таки "Уроки на Си" На Сях попроще маленько, тут проблемы возникают при настройке периферии, и хотелось бы видеть примеры программирования шагового со стабилизацией тока - в 1, 1/2, микрошаге. К асму всё равно потом подходить придётся, на нём всё чётче, конечно, но потом...BMB писал(а):В 9-м радио драйвер ШД на меге48, есть исходники на асме с коментами, на зиму должно хватить)))
Пока нарыл книгу Программирование на языке C для AVRи PIC микроконтроллеров Ю.А.Шпак 2011-600M и полезный сайтик - easyelectronics.
Сам пока подсел на Атмегу.