реклама на сайте
подробности

 
 
21 страниц V  « < 15 16 17 18 19 > »   
Reply to this topicStart new topic
> Изменение текста программы при смене компилятора и чипа
RW6MKA
сообщение Apr 7 2011, 11:45
Сообщение #241


Частый гость
**

Группа: Участник
Сообщений: 163
Регистрация: 25-10-10
Из: Ростовская обл.
Пользователь №: 60 401



Да, наверно я немного не так выразился.Используется оптический энкодер, по коду всё считает, но в железе идёт проскок в индикации на 10-15 позиций. Похоже на дребезг, но установка задержек результатов не даёт(( И может подскажите, что я упускаю при инициализации прерываний по изменению состояния выводов(не INTn)
Код
GIMSK = (1 << PCIE); //инициализация внешнего прерывания по изменению состояния
PCMSK = (1 << PCINT1); //вывода PB1 который сконвигурирован на вывод
......................
ISR(PCINT_vect) {//обработчик прерывания по изменению состояния на выводе
      ...............
}

Вроде весь даташит перелопатил, всё перепробовал, а компилятор ругается.
Go to the top of the page
 
+Quote Post
sigmaN
сообщение Apr 8 2011, 05:58
Сообщение #242


I WANT TO BELIEVE
******

Группа: Свой
Сообщений: 2 617
Регистрация: 9-03-08
Пользователь №: 35 751



что конкретно говорит компилятор?

нет, ну если задержка вставлена в нужном месте - должна помогать по идее.

корденсатор не помогает?


--------------------
The truth is out there...
Go to the top of the page
 
+Quote Post
MaslovVG
сообщение Apr 8 2011, 06:38
Сообщение #243


Профессионал
*****

Группа: Свой
Сообщений: 1 210
Регистрация: 24-01-05
Из: Россия Волгодонск
Пользователь №: 2 134



А аппаратно прерывание на каждом из фронтов входных сигналов (обоих)?
Go to the top of the page
 
+Quote Post
RW6MKA
сообщение Apr 9 2011, 08:25
Сообщение #244


Частый гость
**

Группа: Участник
Сообщений: 163
Регистрация: 25-10-10
Из: Ростовская обл.
Пользователь №: 60 401



Цитата(sigmaN @ Apr 8 2011, 09:58) *
что конкретно говорит компилятор?

нет, ну если задержка вставлена в нужном месте - должна помогать по идее.

корденсатор не помогает?

Компилятор поглючил и успокоился, всё компилится без проблем. Но вот дребезг лечится не до конца,нет-нет и скакнет на 1-2 позиции.Может мне в обработчике сбрасывать флаг следующего прерывания если он установится? Вот обработчик прерываний
Код
ISR(PCINT_vect) {
        
        if (!(PINB & 1 << InValcoder)) {  //если смена 1 на 0 то этот импульс не считаем
                _delay_ms(300);
                return;
        } else {

                if (!(PIND & 1 << Button_R)) {  //если нажата кнопка S1
                        _delay_ms(300);
                        Impuls++;  //счётчик импульсов увеличиваем на 1                        
                }
                if (!(PIND & 1 << Button_L)) {   //если нажата кнопка S2
                        _delay_ms(300);
                        Impuls--;  //счётчик импульсов уменьшаем на 1              
                }
        }
}

Если помните схему, там по входу два кондёра и дроссель(сопротивления я убрал), я думаю этого достаточно.

Цитата(MaslovVG @ Apr 8 2011, 10:38) *
А аппаратно прерывание на каждом из фронтов входных сигналов (обоих)?

Не понял, это как, объясните новичку. Кстати энкодер с одинарной оптопарой т.к. знать направление вращения мне не надо.

И вопросик по Протеусу. Не пойму как заставить читать его eeprom?

Сообщение отредактировал RW6MKA - Apr 10 2011, 05:17
Go to the top of the page
 
+Quote Post
RW6MKA
сообщение Apr 12 2011, 03:50
Сообщение #245


Частый гость
**

Группа: Участник
Сообщений: 163
Регистрация: 25-10-10
Из: Ростовская обл.
Пользователь №: 60 401



Все вопросы снимаются. Всё выличилось заменой схемы валкодера. Он давал целую серию импульсов при медленном прохождении диска.
Go to the top of the page
 
+Quote Post
RW6MKA
сообщение Nov 25 2011, 14:29
Сообщение #246


Частый гость
**

Группа: Участник
Сообщений: 163
Регистрация: 25-10-10
Из: Ростовская обл.
Пользователь №: 60 401



Всем доброго времени. Вот созрел такой вопрос. Во время работы блока управления поворотом выключается эл-во. Как тинька2313 может при новом включении блока определить, что питание последний раз выключилось нештатно и соответственно данные могут быть ошибочными?
Go to the top of the page
 
+Quote Post
Палыч
сообщение Nov 25 2011, 15:42
Сообщение #247


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(RW6MKA @ Nov 25 2011, 18:29) *
Как тинька2313 может при новом включении блока определить, что питание последний раз выключилось нештатно и соответственно данные могут быть ошибочными?
В Вашем приборе предусмотрено "штатное выключение"? И МК имеет информацию о том, что прибор "штатно" отключают? Тогда, примерно, так же как это сделано в Windows: в начале своей штатной работы МК в определённую ячейку EEPROM записывает некое значение, а перед штатным отключением - стирает. Если при подаче питания на МК в ячейке EEPROM что-то записано - прибор был отключен не штатно.
Go to the top of the page
 
+Quote Post
RW6MKA
сообщение Nov 26 2011, 12:07
Сообщение #248


Частый гость
**

Группа: Участник
Сообщений: 163
Регистрация: 25-10-10
Из: Ростовская обл.
Пользователь №: 60 401



Нет, штатного выключения прибора нет, но когда питание выключается в момент простоя, то данные о последнем направлении записаны в EEPROM и при последующем включении они просто оттуда считываются. При выключении питания в момент вращения, данные о новом положении ещё не записаны в EEPROM и при последующем включении считываются данные о предыдущем, а не фактическом положении антенны. Но мы то можем забыть что "...эти козлы опять свет вырубили в самый нужный момент" ))). Вот и необходимо чтобы прибор нам напомнил об этом печальном факте.
Go to the top of the page
 
+Quote Post
Палыч
сообщение Nov 26 2011, 12:21
Сообщение #249


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(RW6MKA @ Nov 26 2011, 16:07) *
Нет, штатного выключения прибора нет
Как же тогда Ваш прибор определит: 1) это Вы выдернули вилку из розетки, потому что прибор нужно выключить и идти отдыхать или 2) "эти козлы" вырубили электричество?
Go to the top of the page
 
+Quote Post
RW6MKA
сообщение Nov 26 2011, 12:36
Сообщение #250


Частый гость
**

Группа: Участник
Сообщений: 163
Регистрация: 25-10-10
Из: Ростовская обл.
Пользователь №: 60 401



Цитата(Палыч @ Nov 26 2011, 16:21) *
Как же тогда Ваш прибор определит: 1) это Вы выдернули вилку из розетки, потому что прибор нужно выключить и идти отдыхать или 2) "эти козлы" вырубили электричество?


Стоп, так это ж мой вопрос! Как это сделать?(я так думаю нужно чтобы во время вращения в EEPROM сохранялась какая нибудь метка, а при остановке она удалялась) Да, и попутно тогда ещё вопросик. Как сделать чтобы запись в EEPROM происходила каждый раз в новую ячейку ( в целях увеличения циклов записи в EEPROM)?
Go to the top of the page
 
+Quote Post
Палыч
сообщение Nov 26 2011, 14:05
Сообщение #251


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(RW6MKA @ Nov 26 2011, 16:36) *
Стоп, так это ж мой вопрос!
Конечно, он - к Вам вернулся, поскольку Вы не удосужились сообщить хоть какую-нибудь информацию о Вашем приборе... Предлагаете телепатировать? Подазреваю, что выключение питания в момент движения антенны Вы считаете "нештатным", а в остальных случаях - "штатным". Или - нет? Тут только Вы сами должны определить: что же Вам нужно то?
Ну, а далее: алгоритм расписан выше: через ячейку EEPROM - штатно/нештатно...
По поводу увеличения циклов записи: 100 тыс циклов Вам мало? Каков назначенный срок службы Вашего устройства до капитального ремонта? Как часто будет переписываться ячейка? По поводу сохранения ресурса EEPROM на этом форуме обсуждения были не раз. Воспользуйтесь поиском.
Go to the top of the page
 
+Quote Post
sigmaN
сообщение Nov 28 2011, 11:51
Сообщение #252


I WANT TO BELIEVE
******

Группа: Свой
Сообщений: 2 617
Регистрация: 9-03-08
Пользователь №: 35 751



Приветствую ))
А индикатор положения у нас сейачс уже не резистор, а энкодер с мышки, да?
Просто если всё ещё резистор - то проблема решается очень просто: при включении прибора он считывает последнее значение из EEPROM и вертит антену до совпадения её положения с этим значением.
Ну а если не резистор, то крутить до упора, а потом возвращаться на известное кол-во шагов...
Потому что как ни крути, а вариант с постоянной записью во время вращения всё равно не даёт 100% гарантии запоминания истинного положения + EEPROM заездить так можно значительно быстрее.
Да и если вдруг антена изменила своё положение, пока прибор был выключен - при включении вся ваша индикация собъётся.


--------------------
The truth is out there...
Go to the top of the page
 
+Quote Post
toweroff
сообщение Nov 28 2011, 16:42
Сообщение #253


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Интересно...
У меня вот мотоподвес спутниковой тарелки. Единственное, что "знает" мотор "с завода" - это позиция "0"
Все остальные прошиваются
Так вот если его тупо волтузить по дуге в поисках спутника, а потом ткнуть "идти на позицию" или "идти на спутник", то он четко едет кратчайшим путем, то есть никак не связано перемещение с проездом через "0" или проезду к какой-то крайней позиции
Надо посмотреть, что там в кишках у мотора, один битый валяется, но как-то до него руки не доходили
Go to the top of the page
 
+Quote Post
RW6MKA
сообщение Nov 29 2011, 14:03
Сообщение #254


Частый гость
**

Группа: Участник
Сообщений: 163
Регистрация: 25-10-10
Из: Ростовская обл.
Пользователь №: 60 401



Цитата(sigmaN @ Nov 28 2011, 15:51) *
Приветствую ))
А индикатор положения у нас сейачс уже не резистор, а энкодер с мышки, да?
Просто если всё ещё резистор - то проблема решается очень просто: при включении прибора он считывает последнее значение из EEPROM и вертит антену до совпадения её положения с этим значением.
Ну а если не резистор, то крутить до упора, а потом возвращаться на известное кол-во шагов...
Потому что как ни крути, а вариант с постоянной записью во время вращения всё равно не даёт 100% гарантии запоминания истинного положения + EEPROM заездить так можно значительно быстрее.
Да и если вдруг антена изменила своё положение, пока прибор был выключен - при включении вся ваша индикация собъётся.

Да, идикатором сейчас энкодер. Выставить в правильное положение не проблема, но при этом нужно что бы при включении что то напомнило что было отключение эл-гии. Вот простая напоминалка при включении и нужна (хотя это я представляю уже как исполнить) Вот поочерёдная запись ячеек EEPROM интересует. Я так понимаю нужно при записи всё время к адресу добавлять 1?
Go to the top of the page
 
+Quote Post
sigmaN
сообщение Nov 29 2011, 20:06
Сообщение #255


I WANT TO BELIEVE
******

Группа: Свой
Сообщений: 2 617
Регистрация: 9-03-08
Пользователь №: 35 751



toweroff, я так понимаю у вас стоит что-то вроде переменного резистора и таким образом моторчик в любой момент времени знает своё абсолютное положение относительно нуля. И это не зависит от питания! Крутим двигатель руками, резистор просто меняет своё сопротивление и в любой момент можно подать питание и узнать в каком положении сейчас вал.

Но если же в качестве индикатора положения используется датчик относительного перемещения(а именно так оно и есть у автора), то тут и приходится при включении питания искать 0. Потому что энкодер ничего кроме информации о том на соклько "щелчков" и в какую сторону переместился вал - дать не может.
Собственно по этой причине и нужно после включения отматываться до нуля и уже от него считать нужное кол-во щелчков.
Любые другие алгоритмы управления в той или иной степени обречены на провал(при разных обстоятельствах). К этому можно прийти путём не сложных логических рассуждений wink.gif

Но топикстартер всё равно сделает по-своему, записывая положение в ЕЕПРОМ каждую миллисекунду прямо во время вращения вала и будет изобретать как же эту самую ЕЕПРОМ не протереть за пол года работы девайса ) А ещё скажет, что перемещение антенны, пока девайс выключен - крайне маловероятно и это не аргумент.
Но через те самые пол года эксплуатации таки накопится ошибка и индикация положения начнет портачить.
Тогда и начнем следующую доработку ))


--------------------
The truth is out there...
Go to the top of the page
 
+Quote Post

21 страниц V  « < 15 16 17 18 19 > » 
Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 12th August 2025 - 21:36
Рейтинг@Mail.ru


Страница сгенерированна за 0.01529 секунд с 7
ELECTRONIX ©2004-2016