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

 
 
21 страниц V  « < 17 18 19 20 21 >  
Reply to this topicStart new topic
> Изменение текста программы при смене компилятора и чипа
toweroff
сообщение Dec 3 2011, 07:42
Сообщение #271


Гуру
******

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



Цитата(RW6MKA @ Dec 3 2011, 10:06) *
А это что rolleyes.gif ? Подробней для новичка.

1UL - это явное указание типа единицы - unsigned long
хотя... это зависит от используемого Вами процессора. Если он 32-разрядный, то в подобных случаях явное приведение единицы к 32-разрядному типу есть гуд, потому как можно глюков нахватать, сам сталкивался
Но Палыч правильно говорит - "операции поразрядного ИЛИ" (|), там не надо
нужно применить операцию "логического И" - &&

Да и очередность операций это хорошо, но я стараюсь всегда явно указывать очередность скобками - на душе спокойнее, что не ошибусь и чего-то не упущу
Код
while ( (!(PIND & (1UL << Button_R))) && (StatusPovorot != Rstop) )
Go to the top of the page
 
+Quote Post
Палыч
сообщение Dec 3 2011, 08:22
Сообщение #272


Гуру
******

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



Цитата(RW6MKA @ Dec 2 2011, 13:59) *
Можно ли вот этот код...заменить на ...
и будет ли перед записью происходить проверка на совпадение данных если вот это...заменить на...

Функции eeprom_update_xxx отличаются от функций eeprom_write_xxx тем, что перед записью проверяют содержимое.
Поэтому, ответ на оба вопроса - да.
Go to the top of the page
 
+Quote Post
RW6MKA
сообщение Dec 3 2011, 09:15
Сообщение #273


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

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



Остался один насущьный вопрос))) Почему в реальном железе счёт импульсов скачет через позицию или более?(т.е. в два-три раза быстрее, при этом сигнал с энкодера нормальный) Где ещё поставить задержки из учёта скорости поворота 1об/мин? Вот проект в студии Прикрепленный файл  povorot_valcoder_setup.rar ( 23.88 килобайт ) Кол-во скачиваний: 49
и схема
Прикрепленное изображение
Go to the top of the page
 
+Quote Post
314
сообщение Dec 3 2011, 10:27
Сообщение #274


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

Группа: Участник
Сообщений: 139
Регистрация: 17-08-07
Пользователь №: 29 855



В датчике ЛА7 на ТЛ2 (4093, 40106) в смысле с триггером Шмитта на входе заменить не хотите? Еще напрашивается добавить конденсатор 1нф параллельно R21 в датчике. Фильтр на дата выводе лучше переделать, поставив на выходе микросхемы просто резистор 1к наверху линии и такой же внизу. После него, параллельно входу контроллера конденсатор на - питания и диоды-стекляшки (кд521, 1N4148) на +/- питания. Внизу линию можно притянуть к - питания резистором 10к. Где-то так.
Go to the top of the page
 
+Quote Post
toweroff
сообщение Dec 3 2011, 10:36
Сообщение #275


Гуру
******

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



Как-то стремно передавать ИМПУЛЬСЫ, тем более счетные, по длинной линии... имхо
Go to the top of the page
 
+Quote Post
314
сообщение Dec 3 2011, 10:52
Сообщение #276


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

Группа: Участник
Сообщений: 139
Регистрация: 17-08-07
Пользователь №: 29 855



Говорят, что когда передавали первую фотографию обратной стороны Луны, то время передачи одного пикселя было 2 часа, а тут всего каких-то 50м расстояние. Все зависит от соотношения сигнал/шум и скорости передачи, как ширины полосы этого сигнала.
Go to the top of the page
 
+Quote Post
RW6MKA
сообщение Dec 3 2011, 12:19
Сообщение #277


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

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



Цитата(314 @ Dec 3 2011, 14:27) *
В датчике ЛА7 на ТЛ2 (4093, 40106) в смысле с триггером Шмитта на входе заменить не хотите? Еще напрашивается добавить конденсатор 1нф параллельно R21 в датчике. Фильтр на дата выводе лучше переделать, поставив на выходе микросхемы просто резистор 1к наверху линии и такой же внизу. После него, параллельно входу контроллера конденсатор на - питания и диоды-стекляшки (кд521, 1N4148) на +/- питания. Внизу линию можно притянуть к - питания резистором 10к. Где-то так.

Не, лезть по такой погоде к датчику чтот не климатит))) Внизу фильтр с применением дросселя и кондёров нужен для отсечки ВЧ токов которые при работе на передачу наводятся на проводе, а вот притянуть к - 10к сопротивлением я пробовал - результат тот же. Диоды я не понял для чего ставить. Да, как бы не пришлось возвращаться к токовому интерфейсу и измерению времени заряда конденсатора(((Вот только соединять оси переменника и редуктора очень уж проблемная вещь. Но с другой стороны sigmaN прав, такой интерфейс удобнее и можно данные в EEPROM не заносить поскольку всегда понятна позиция датчика.
Прикрепленное изображение

Вот ещё код Прикрепленный файл  povorot_valcoder_setup.rar ( 32.7 килобайт ) Кол-во скачиваний: 47
может кто глянет, что я не так в USE_UART_DEBUG с UART делаю? smile3046.gif

Сообщение отредактировал RW6MKA - Dec 3 2011, 15:45
Go to the top of the page
 
+Quote Post
314
сообщение Dec 3 2011, 18:12
Сообщение #278


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

Группа: Участник
Сообщений: 139
Регистрация: 17-08-07
Пользователь №: 29 855



просто lc-фильтр может звенеть на фронтах импульса, поэтому лучше применить rc-цепочку или добавить демпферный резистор последовательно с индуктивностью. Да и ЛА7 с такой нагрузкой на выходе может подвозбуждаться. А диоды нужны для защиты входа котроллера от импульсных напряжений (типа разряды всякие), просто сливают лишнюю энергию в питание.
Go to the top of the page
 
+Quote Post
sigmaN
сообщение Dec 3 2011, 23:45
Сообщение #279


I WANT TO BELIEVE
******

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



Цитата
может кто глянет, что я не так в USE_UART_DEBUG с UART делаю?
Ну я не компилил(не на чем щас), но а что не так то?
Вы про вот это нагромождение?
Код
#ifdef USE_UART_DEBUG
                #ifdef UART_DEBUG_IMPULS
                    {
                        char digits[10];                        
                        itoa(Impuls, &digits[0], 10);
                        uart_puts_P("Impuls: ");
                        uart_puts(&digits[0]);
                        #ifdef UART_DEBUG_PRERYV
                            uart_puts_P(" | ");
                        #else
                            uart_puts_P("\r\n");
                        #endif
                        
                        #ifdef UART_DEBUG_PRERYV
                            itoa(Preryv, &digits[0], 10);
                            uart_puts_P("Preryv: ");
                            uart_puts(&digits[0]);
                            uart_puts_P("shtuk\r\n");
                        #endif
                    }
                #endif
            #endif
Вы поясните что вы хотите получить и что получаете в итоге? А то так не очень понятно что именно у вас не получается.
Оно мне тоже не очень нравится ) начать можно с того, что можно убрать проверку ifdef USE_UART_DEBUG и сразу написать ifdef UART_DEBUG_IMPULS, потому что ранее дефайны стоят так, что UART_DEBUG_IMPULS без USE_UART_DEBUG задефайнен быть не может. Ну и дальше подумайте там что куда можно перегруппировать чтобы было и понятнее и проще...


--------------------
The truth is out there...
Go to the top of the page
 
+Quote Post
RW6MKA
сообщение Dec 4 2011, 05:36
Сообщение #280


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

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



Цитата(sigmaN @ Dec 4 2011, 03:45) *
Ну я не компилил(не на чем щас), но а что не так то?

Всё, разобрался. По запарке забыл нужные инклуды и тупо пытался скомпилить ну а компилятор понятно безбожно ругался)))

Цитата(314 @ Dec 3 2011, 22:12)
просто lc-фильтр может звенеть на фронтах импульса, поэтому лучше применить rc-цепочку или добавить демпферный резистор последовательно с индуктивностью. Да и ЛА7 с такой нагрузкой на выходе может подвозбуждаться. А диоды нужны для защиты входа котроллера от импульсных напряжений (типа разряды всякие), просто сливают лишнюю энергию в питание.

Вообщем примерно так должно получиться?
Прикрепленное изображение

Ну в принципе эффекта никакого. Индикация скачет попрежнему. Сейчас подключу USART и гляну на мониторе что там с прерываниями и счётом импульсов.
Go to the top of the page
 
+Quote Post
RW6MKA
сообщение Dec 5 2011, 07:11
Сообщение #281


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

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



Вот результаты мониторинга(((Прикрепленный файл  1.txt ( 1.32 килобайт ) Кол-во скачиваний: 117
(это в сокращенном виде конечно) Не пойму почему прерывание считает по два ну и соответственно количество импульсов идёт через один. А не может такого быть, что пока идёт обработка прерывания "в очередь" устанавливается ещё одно? Прерывание наступило, флаг сбрасывается, но он случайно не устанавливается сразу на место(до начала обработки прерывания)?
Go to the top of the page
 
+Quote Post
sigmaN
сообщение Dec 5 2011, 08:47
Сообщение #282


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
сообщение Dec 5 2011, 09:34
Сообщение #283


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

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



Внимательно проработайте подключение сигнала DATA. Если "горячий" проводник по вашей схеме до процессора просматривается более или менее нормально.То связь корпуса 561ЛА7 с корпусом процессора как то виртуальна или отсутствует. Оптрон здесь просится. так как земли развязаны.
Go to the top of the page
 
+Quote Post
RW6MKA
сообщение Dec 5 2011, 09:38
Сообщение #284


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

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



Цитата(sigmaN @ Dec 5 2011, 12:47) *
По-моему если проц уже заскочил в обработчик, то пока он оттуда не вылезет - все другие прерывания(с таким-же номером) будут просто тихонько проигнорированы. Как-бы именно поэтому обработчик прерывания всегда стараются сделать как можно быстрее.

Тогда откуда счёт через одну позицию я вообще не пойму. Скорость вращения достаточно мала. Задержки в обработчике я ставил от 100мс до 900мс и разницы как бы не заметил. Что делать? smile3046.gif
Go to the top of the page
 
+Quote Post
Палыч
сообщение Dec 5 2011, 12:29
Сообщение #285


Гуру
******

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



Цитата(sigmaN @ Dec 5 2011, 12:47) *
По-моему если проц уже заскочил в обработчик, то пока он оттуда не вылезет - все другие прерывания(с таким-же номером) будут просто тихонько проигнорированы.
Не-а... Одно, всё-таки проскочит...
По условию прерывания будет взведён флаг прерывания, и, после выхода из процедуры обработки этого прерывания, будет сгенерировано ещё одно... Поэтому, перед выходом из процедуры обработки прерывания, наверное, нужно сбросить флаг прерывания (сбрасывается записью во флаг единицы ! ).
Go to the top of the page
 
+Quote Post

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

 


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


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