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

 
 
21 страниц V  « < 12 13 14 15 16 > »   
Reply to this topicStart new topic
> Изменение текста программы при смене компилятора и чипа
RW6MKA
сообщение Feb 9 2011, 15:01
Сообщение #196


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

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



Индикация на WALKING_LED_TEST работает нормально. Смена светодиодов проходит по порядку, без скачков или двойной индикации. Сбоев в индикации нет, гонял часа два, аж голова закружилась)) в UART отображается disp_led_turn_on(i++) и sensor_position: ххх. Так что я думаю здесь глюков нет.

Go to the top of the page
 
+Quote Post
sigmaN
сообщение Feb 9 2011, 19:53
Сообщение #197


I WANT TO BELIEVE
******

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



Вот это самое главное. Сейчас вставлю пару костылей в основной код и дело пойдет как надо.

А глюк протеуса таки подтвержден! При симуляции даже WALKING_LED_TEST глючит с индикацией и проскакивают прерывания компаратора( со временем начинает выводитт только disp_led_turn_on(i++) без sensor_position: ххх )

Так что вывод один: в топку протеус.
Из симуляторов можно более-менее нормально использовать только симуляторы ядра(в студии например или аналогичные для других процов).


--------------------
The truth is out there...
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение Feb 9 2011, 20:15
Сообщение #198


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

Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339



Цитата(sigmaN @ Feb 9 2011, 22:53) *
...проскакивают прерывания компаратора....

А Вы его запретили в начале программы , он по умолчанию включен всегда после сброса


--------------------
Закон Мерфи:

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post
sigmaN
сообщение Feb 9 2011, 21:34
Сообщение #199


I WANT TO BELIEVE
******

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



Цитата
А Вы его запретили в начале программы , он по умолчанию включен всегда после сброса
включен сам компаратор, но не прерывание. и у нас в железе всё работает, а в протеусе проскакивает )

вот новая, надеюсь окончательно рабочая версия
если в железе при включении таки будут проскакивать неправдоподобно малые значения - увеличить SENSOR_FILTER_TIME_CONSTANT в файле hwconf.h
накидывайте по 10ms не ошибетесь....
Прикрепленные файлы
Прикрепленный файл  Povorot_sigmaN_9feb2011_.rar ( 37.99 килобайт ) Кол-во скачиваний: 9
 


--------------------
The truth is out there...
Go to the top of the page
 
+Quote Post
RW6MKA
сообщение Feb 11 2011, 11:59
Сообщение #200


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

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



Ну, к сожалению это не последняя версия кода)) Вот что получилось Прикрепленный файл  proba3.wmv ( 3.63 мегабайт ) Кол-во скачиваний: 170


Сообщение отредактировал RW6MKA - Feb 11 2011, 12:41
Go to the top of the page
 
+Quote Post
sigmaN
сообщение Feb 11 2011, 12:34
Сообщение #201


I WANT TO BELIEVE
******

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



Ну всё. Вот эта - точно последняя.
Прикрепленные файлы
Прикрепленный файл  Povorot_sigmaN_11feb2011_.rar ( 39.17 килобайт ) Кол-во скачиваний: 9
 


--------------------
The truth is out there...
Go to the top of the page
 
+Quote Post
RW6MKA
сообщение Feb 11 2011, 13:09
Сообщение #202


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

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



Да, индикация исправилась, идёт плавно. Напрягает только одно. Если пределы тиков выставлены не точно, то индикация не задействует все 48 светодиодов. Да, ещё проскакивают иногда крупные отрицательные значения тиков и это приводит к срабатыванию концевиков. Тут меня мысль посетила. Есть свободный пин, на него посадить кнопку setup при нажатии которой в течении 3-5с кнопки управления переходят в режим записи конечного правого и левого положения соответственно.(т.е. нажимаем кнопку вращения вправо доводим датчик до нужного момента и кратковременно нажимаем setup, вкл поворот влево и вращаем датчик до крайнего левого положения и опять setup) Данные записывать в eeprom и при запуске кода они извлекаются и заносятся на свои места в коде. Ну как идея?
Да, забыл файлик.Прикрепленный файл  CAPTURE1.TXT ( 54.07 килобайт ) Кол-во скачиваний: 117


Сообщение отредактировал RW6MKA - Feb 11 2011, 13:34
Go to the top of the page
 
+Quote Post
sigmaN
сообщение Feb 11 2011, 13:36
Сообщение #203


I WANT TO BELIEVE
******

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



Минусы? Опять минусы? blink.gif Не было же уже их в WALKING_LED_TEST! Откуда они там берутся то. Я в шоке )))
Эхх, железо бы сюда! Как же неудобно отлаживать вот так удалённо ))

Код
Если пределы тиков выставлены не точно, то индикация не задействует все 48

Ну естественно ))) а как же оно может быть иначе то. Обязательно надо откалибровать датчик и поставить туда правдоподобные значения.

А к чему вся эта возня с пином setup и eeprom, если изделие не серийное - я не понимаю. Прогнал программу с выводом на UART, записал значения на бумажку, вписал в файл, скомпилил и дело в шляпе, как говорится ))

А если вот так прямо сейчас WALKING_LED_TEST сделать - минусов есть?
Блин, вот тут у меня уже и идеи даже кончились насчёт этих минусов то.. . и в протеусе я их уже не наблюдаю..... да и так им там взяться не откуда вроде.....
Щас ещё подумаю... что-то ведь упустил значит, раз они таки есть... но было бы не так странно, если бы они и на WALKING_LED_TEST были...

added:
вот сейчас файлик увидел. всё не так уж плохо на самом деле )))) уже почти рабочий девайс.
но где-то глюк сидит - это факт...

added2:отлично! поймал минус в протеусе. разберемся.


--------------------
The truth is out there...
Go to the top of the page
 
+Quote Post
sigmaN
сообщение Feb 11 2011, 21:14
Сообщение #204


I WANT TO BELIEVE
******

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



Отказался я от извращенного метода программного увеличения разрешения 8ми битного таймера и переделал всё по уму )
В общем, сейчас доступно время с ~миллисекундной точностью(на таймере 0) для всяких таймаутов и прочих нужд, а 16ти битный таймер 1 полностью задействован под сенсор и работает вроде очень даже хорошо и стабильно... но опять таки, это в протеусе )) а как будет в реале - не понятно.

Ещё добавил таймаут на вращение в одну сторону. Это поможет в случае сбоя сенсора или иных проблем, препятствующих определению позиции антенны...
В hwconf.h есть ROTATION_TIMEOUT, я поставил туда 3 секунды... подгоните под реальное значение.
Всё-таки не хочется, чтобы кабель намотало на мачту cool.gif


Уже даже не буду говорить, что это последний вариант кода )
Прикрепленные файлы
Прикрепленный файл  Povorot_sigmaN_12feb2011_.rar ( 39.59 килобайт ) Кол-во скачиваний: 9
 


--------------------
The truth is out there...
Go to the top of the page
 
+Quote Post
RW6MKA
сообщение Feb 12 2011, 07:45
Сообщение #205


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

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



Цитата
Уже даже не буду говорить, что это последний вариант кода )
А зря, это видимо он и есть)) Погонял минут 10 - ни одного сбоя. Вот файлик Прикрепленный файл  CAPTURE1.TXT ( 45.34 килобайт ) Кол-во скачиваний: 132

Цитата
В hwconf.h есть ROTATION_TIMEOUT, я поставил туда 3 секунды... подгоните под реальное значение.
А возможна ли реализация 3-4минут?(именно за это время делается 1 оборот)
Цитата
А к чему вся эта возня с пином setup и eeprom, если изделие не серийное - я не понимаю.
Так, а вообще зачем тогда вся эта возня с усовершенствованием кода?)) Мой то вариант рабочий и "полегче" будет(всего 64% памяти)? Да потому что так правильнее, лучше и удобнее. Без этого конструкция какая то незавершенная получается.
Цитата
Прогнал программу с выводом на UART, записал значения на бумажку, вписал в файл, скомпилил и дело в шляпе, как говорится ))
Пройдёт год-другой и датчик полюбому менять придётся(на высоте 15м)) ) но через это время проблемы насущные практически напрочь сотрут инфо в башке о всей этой возне с терминалами, и придётся мучительно морщить лоб, лихорадочно вспоминая чё да как))

И ещё вопросик. Из кода я понял как реализовать вывод инфо через UART, а вот как вводить данные через него? Где бы почитать об этом?
Go to the top of the page
 
+Quote Post
sigmaN
сообщение Feb 12 2011, 12:33
Сообщение #206


I WANT TO BELIEVE
******

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



Цитата
А возможна ли реализация 3-4минут?(именно за это время делается 1 оборот)
Да легко! Сейчас переменную 32бита сделаю и будет 2^32 = 4294967296ms == 49.7 суток ))))

Цитата
Так, а вообще зачем тогда вся эта возня с усовершенствованием кода?)) Мой то вариант рабочий и "полегче" будет(всего 64% памяти)? Да потому что так правильнее, лучше и удобнее. Без этого конструкция какая то незавершенная получается.
Я сам давно никаких поделок не делал...соскучился немного за контроллерами и вам хотел показать чем программа на Си отличается от быдлокода на нём-же. А то вот так люди то быдлокодят и не знают даже к чему и стремиться то )) Места там ещё навалом.
Мало того, что сам драйвер UART места отхавал, так ещё и все эти букавки место занимают...
А вообще, я думаю, там даже и вместе с UARTом полезет работа с EEPROM...
Плюс ещё надо с опциями сборки проекта поиграться... ещё процентиков выгадать можно по любому...

Цитата
И ещё вопросик. Из кода я понял как реализовать вывод инфо через UART, а вот как вводить данные через него? Где бы почитать об этом?
В файле uart.c или uart.h да, скорее в .h будет больше каментов sm.gif я не шучу.

Добавил таймаут 3:30, но можно и 49 суток туда загнать - не вопрос )
Вот ещё раз хочу обратить Ваше внимание на то, как легко вносятся изменения в более-менее правильную программу.
Всегда стремитесь к этому. Если понимаете, что внести изменения в код будет сложно - сразу переделывайте )
Прикрепленные файлы
Прикрепленный файл  Povorot_sigmaN_12feb2011_v2.rar ( 39.97 килобайт ) Кол-во скачиваний: 11
 


--------------------
The truth is out there...
Go to the top of the page
 
+Quote Post
RW6MKA
сообщение Feb 13 2011, 16:45
Сообщение #207


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

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



Тут вот ещё вопросики возникли blush.gif
Цитата
Мало того, что сам драйвер UART места отхавал, так ещё и все эти букавки место занимают...
Почему при включении USE_UART_DEBUG так резко увеличивается занимаемое место в памяти?или файл uart.h полностью принимает участие в компиляции? Что то я этот момент с инклудами до конца не понимаю.
Код
//this will save 16 bytes of Program memory
void main(void) __attribute__((OS_task, noreturn));
это откуда? и как работает?
Go to the top of the page
 
+Quote Post
sigmaN
сообщение Feb 13 2011, 18:47
Сообщение #208


I WANT TO BELIEVE
******

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



Цитата
Почему при включении USE_UART_DEBUG так резко увеличивается занимаемое место в памяти?или файл uart.h полностью принимает участие в компиляции?

Ну вообще-то не uart.h, а uart.c содержит исполняемый код, который занимает место )
Кроме того, как я уже говорил, занимают место строки. Строки sensor position: UART OK, STOP LEFT и т.д. каждая буква - один байт.
Вот и считайте... Плюс, конечно же сам драйвер, как я и говорил... Но если строки выкинуть - экономия будет неплохая.
Немного переписать надо, чтобы UART_DEBUG включал именно отладку, а допустим USE_UART просто включал драйвер уарта.. тогда можно будет легко понять кто сколько занимает. Но ещё такой момент: нужно вызвать нужные функции хоть один раз. Иначе компилятор поймет, что мы инклудим файл, а функции не используем и он выбросит весь неиспользуемый код при оптимизации.

Цитата
это откуда? и как работает?
Это атрибуты gcc. смысл в том, что мы таким образом сообщаем компилятору, что из функции выходить никто не собирается. и ещё OS_task там тоже какую-то инициализацию в начале функции убирает(опять таки из расчёта, что из функции выходить никто не будет и входить в неё тоже будут только один раз)...
Можно нагуглить очень легко всё это. И проверить можно - действительно экономит 16 байт )


--------------------
The truth is out there...
Go to the top of the page
 
+Quote Post
RW6MKA
сообщение Feb 13 2011, 19:07
Сообщение #209


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

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



Цитата
Кроме того, как я уже говорил, занимают место строки. Строки sensor position: UART OK, STOP LEFT и т.д. каждая буква - один байт.
Вот и считайте... Плюс, конечно же сам драйвер, как я и говорил... Но если строки выкинуть - экономия будет неплохая.
Т.е. при передачи чисел в компьютер потратится 4-5 байтов?ну конечно в зависимости от нужных чисел.
Да, вот ещё может подскажите, в какой среде лучше создать окно интерфейса под винду? А то я только в дельфи немного практиковался, а там паскаль((

Сообщение отредактировал RW6MKA - Feb 13 2011, 19:13
Go to the top of the page
 
+Quote Post
sigmaN
сообщение Feb 13 2011, 20:32
Сообщение #210


I WANT TO BELIEVE
******

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



Ну если знакомы с Delphi - проще всего будет C++ Builder версию 6 наверное лучше всего найти... не надо этих 2005 и прочих наворотов...

Цитата
Т.е. при передачи чисел в компьютер потратится 4-5 байтов?
Не понял вопроса. Если я вывожу строку UART is OK\r\n я занимаю во флешке 12байт для хранения этой самой строки. А вообще даже не 12, а 13 ибо ещё ноль в конце строки сохраняется.
Что значит передача чисел в компьютер мне пока не понятно.... Если число в оперативной памяти(переменная) и мы хотим передать её по UART - то для начала значение переменной(скажем 175) из одного байта(допустим переменная была байтовая) превращается в строку. Для этого используется буфер в оперативной памяти и он должен быть не менее 4 байт, чтобы вместить символы 1 7 и 5 + нуль в конце строки. Таким образом это работает.
Если же я просто хочу вывести UART is OK, то глупо для этого использовать оперативку, мы ложим эти строки во флеш.


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

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

 


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


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