roboforum.ru

Технический форум по робототехнике.

eZ430-Chronos

Программирование микроконтроллеров AVR, PIC, ARM.
Разработка и изготовление печатных плат для модулей.

Re: eZ430-Chronos

Сообщение Madf » 23 июл 2012, 18:07

Дим, я что-то запутался, твои корректировки подходят к сборке от Sonny, но не имеют отношение к переписанному коду от Змея? Т.е. либо один вариант, либо другой?
Madf
 
Сообщения: 3298
Зарегистрирован: 03 янв 2012, 12:55
Откуда: Москва
прог. языки: VB6, BASCOM, ASM...

Re: eZ430-Chronos

Сообщение Dmitry__ » 23 июл 2012, 18:58

У змея костыль конкретный, не нужно оно вообще.
Меньше бы такие вставки делали, чтоб народ с пути истинного не сбивать :pardon:

Добавлено спустя 47 минут 30 секунд:
Найден баг: каждый час, секундомер скидывает одну секунду.
Ща исправлю...
Все изменения тут:
forum2/topic10252-105.html#p245262
Аватара пользователя
Dmitry__
 
Сообщения: 8033
Зарегистрирован: 13 янв 2011, 15:25
Откуда: Санкт-Петербург

Re: eZ430-Chronos

Сообщение Madf » 23 июл 2012, 20:45

Поправил.
А из этого поста: forum2/topic10252-105.html#p245224 надо править "value"?
Madf
 
Сообщения: 3298
Зарегистрирован: 03 янв 2012, 12:55
Откуда: Москва
прог. языки: VB6, BASCOM, ASM...

Re: eZ430-Chronos

Сообщение Dmitry__ » 23 июл 2012, 21:30

Не, не нужно, все в одном посте...
У меня последняя доработка тестится 2 часа, полет нормальный.
Потесть, плиз, отпишись по sony...
Я тестю так:
Запускаю секундомер по обнулению секунд часов (с маленьким упреждением, чтоб секунды шли синхронно).
По мере хода секундомера, смотрю как разбегаются секунды часов и секундомера. Тестить до остановки секундомера (20 часов).
Аватара пользователя
Dmitry__
 
Сообщения: 8033
Зарегистрирован: 13 янв 2011, 15:25
Откуда: Санкт-Петербург

Re: eZ430-Chronos

Сообщение Madf » 24 июл 2012, 00:11

Код: Выделить всёРазвернуть
    #define STOPWATCH_100HZ_TICK                    328   //!!! (32768 / 100)

Вообще алгоритм изначально Г, при таком раскладе погрешность хода практически пол секунды. Почему изначально алгоритм не построили на основе пред делители на 8 (если так хочется) - не понятно, хотя я бы делал на максимум (32768).

Добавлено спустя 2 часа 11 минут 4 секунды:
Чудеса, пытаюсь собрать проекты под 433 и 915 - вылазят какие-то ошибки и предупреждения, на 868 собирается без проблем.
На 915 вылазит такое:
Warning[Pe047]: incompatible redefinition of macro "ISM_US" D:\Sports Watch\simpliciti\Components\mrfi\smartrf\CC430\smartrf_CC430.h 109

А на 433:
Error[e104]: Failed to fit all segments into specified ranges. Problem discovered in segment CODE. Unable to place 308 block(s) (0x7606 byte(s) total) in
0x738a byte(s) of memory. The problem occurred while processing the segment placement command "-P(CODE)CODE=8000-FF7F", where at the
moment of placement the available memory ranges were "CODE:8bf6-ff7f"
Error while running Linker

Вот весь проект с корректировками новыми. :oops:
Madf
 
Сообщения: 3298
Зарегистрирован: 03 янв 2012, 12:55
Откуда: Москва
прог. языки: VB6, BASCOM, ASM...

Re: eZ430-Chronos

Сообщение Dmitry__ » 24 июл 2012, 02:13

У меня вообще не запустился иар с твоим проектом, у меня более старый иар: 5.40.3

Перекинул твои исходники в проект со своими настройками, на 433 собрался, на 915 тот же варнинг
Переключил на:
"433MHz - Limited IAR Kickstart (Other regions)"
"915MHz - Limited IAR Kickstart (USA)"
Все собралось. :pardon:

На 433, он тебе намекает, что мало памяти.

Добавлено спустя 26 минут 30 секунд:
И закомментируй в "main.c": test_mode();
нахнужен? отьедает 2 кб.
А блюробин отьедает 5 кб. У тебя есть/будет напульсник? :roll:
Аватара пользователя
Dmitry__
 
Сообщения: 8033
Зарегистрирован: 13 янв 2011, 15:25
Откуда: Санкт-Петербург

Re: eZ430-Chronos

Сообщение Madf » 24 июл 2012, 10:39

У меня "Limited IAR Kickstart" не один не собирается, только "Unrestricted IAR Workbench"-и.

Версия иар у меня последняя.

Тест - да, нужно комментировать, спасибо.

А вот с блюробином вопрос, передача обновления прошивки разве не через него идет? Если нет, то датчиков всяких у меня нет (напульсников), но терять возможность передачи данных с часов на компьютер - не хотелось (аксель, синхронизацию настроек..).
Madf
 
Сообщения: 3298
Зарегистрирован: 03 янв 2012, 12:55
Откуда: Москва
прог. языки: VB6, BASCOM, ASM...

Re: eZ430-Chronos

Сообщение Dmitry__ » 24 июл 2012, 12:39

Блюробин только для напульсника:
http://www.bm-innovations.com/index.php/ez430-chronos
Для передачи данных с часов на компьютер - simpliciti
Я же не садист :x

Секундомер тестится 18 часов, полет нормальный.
Закончу тест, загружу твой SportsWatch_FriendPatch...

Обновил первый пост, ссылки
Аватара пользователя
Dmitry__
 
Сообщения: 8033
Зарегистрирован: 13 янв 2011, 15:25
Откуда: Санкт-Петербург

Re: eZ430-Chronos

Сообщение Madf » 24 июл 2012, 13:03

Я вчера секундомер раз 5 догонял до смены долей секунд (переключался режим точности отображения), на время это никак не влияло.

Добавлено спустя 3 минуты 5 секунд:
Пока не загружай, надо же ещё закомментить тест и блюробин. ;) Вечером сделаю или сам тогда поправь, если возможность имеется.
Madf
 
Сообщения: 3298
Зарегистрирован: 03 янв 2012, 12:55
Откуда: Москва
прог. языки: VB6, BASCOM, ASM...

Re: eZ430-Chronos

Сообщение Madf » 24 июл 2012, 23:43

Так, решил пере собрать проект под меньшую IAR v5.40.1.50328 (более доступную версию).
Поменял казалось бы версию на более старую, а файл прошивки на выходе я получил меньше по размеру на 251 байт. :)
Закомментировал "тест", выиграл в версии на 868 МГц - 5138 байт. Стала нормально собираться версия на 433МГц, но прошивка под неё значительно больше по объёму (чем под 868) - 95244 байт (против 87545 байт).
Блюробин отключать не стал, т.к. это довольно сложный процесс, он прописан много где.
Под 915МГц проект так и не собирается, ругается на динамическое объявление линкера, причем эта ошибка возникает тогда, когда на одну и туже переменную несколько объявлений, пропахал весь проект - нет никаких пересечений и относительно прочих частот/профилей переключений, отличий нет. В общем так и не понял в чем глюк. Инет по этому поводу - молчит.

Добавлено спустя 25 минут 43 секунды:
Всё, разобрался в чем проблема была (как всегда в простом), 915 собрался:
- проект;
- прошивки на все частоты.
Madf
 
Сообщения: 3298
Зарегистрирован: 03 янв 2012, 12:55
Откуда: Москва
прог. языки: VB6, BASCOM, ASM...

Re: eZ430-Chronos

Сообщение Dmitry__ » 25 июл 2012, 02:28

Madf писал(а):Закомментировал "тест", выиграл в версии на 868 МГц - 5138 байт.

В часах всего 32 кб. памяти, это размер текстового файла
Размер прошивки смотри в "окно проекта/ez430_chronos_868MHz.map"
В конце файла:
Код: Выделить всёРазвернуть
 27 080 bytes of CODE  memory
    844 bytes of DATA  memory (+ 157 absolute )
  1 592 bytes of CONST memory

Errors: none
Warnings: none


Madf писал(а):Блюробин отключать не стал, т.к. это довольно сложный процесс, он прописан много где.

В "menu.c" убери все в:"// Line2 - Calories/Distance"
или так:
Код: Выделить всёРазвернуть
В удобном месте, например "project.h": #define no_bluerobin

В "menu.c":
// Line2 - SXNC (synchronization/data download via SimpliciTI)
const struct menu menu_L2_Sync = {
    FUNCTION(sx_sync),                // direct function
    FUNCTION(dummy),                  // sub menu function
    FUNCTION(display_sync),           // display function
    FUNCTION(update_time),            // new display data
#ifndef no_bluerobin
    &menu_L2_CalDist,
#else
    &menu_L2_RFBSL,
#endif
};

#ifndef no_bluerobin
// Line2 - Calories/Distance
const struct menu menu_L2_CalDist = {
    FUNCTION(sx_caldist),             // direct function
    FUNCTION(mx_caldist),             // sub menu function
    FUNCTION(display_caldist),        // display function
    FUNCTION(update_time),            // new display data
    &menu_L2_RFBSL,
};
#endif


Этот способ конфигурации плотно используют в OpenChronos, ссылка в первом посте
Я дотестил секундомер (20 часов), все ок.
Твою тестил, секунды убегали, может меня глючило, ща еще раз проверю...

Добавлено спустя 10 минут 42 секунды:
Блин, пока портировал управлялку лампой, не заметил, что там rfbsl старый :shock:
Вот тля, опять разбирать часы. :cry: :cry: :cry:

Добавлено спустя 49 минут 40 секунд:
Залил твою версию, есть ошибка.
Блин, я забыл, что очень сильно поменял свои исходники. Я все перевел с ASCII обработки на байтовое.

У меня проверка 20-ти минут так:
Код: Выделить всёРазвернуть
if (sStopwatch.time[2] == 0x20) 


у тебя так:
Код: Выделить всёРазвернуть
if (sStopwatch.time[2] == '2')


Вот моя структура секундомера:
Код: Выделить всёРазвернуть
    u8 time[4];
    // time[0]      1/10 sec, 1/100 sec
    // time[1]      second H, L
    // time[2]      minute H, L
    // time[3]      hour H,L


Твоя:
Код: Выделить всёРазвернуть
    u8 time[8];
    // time[0]      hour H
    // time[1]      hour L
    // time[2]      minute H
    // time[3]      minute L
    // time[4]      second H
    // time[5]      second L
    // time[6]      1/10 sec
    // time[7]      1/100 sec

Соответственно тебе надо не "sStopwatch.time[1]--; //!!!"
а: sStopwatch.time[5]--; //!!!
И, о ужас, в ASCII "0" и "9" = 0x30 и 0х39 соответственно.

А вообще, я говорил, что штатная прошивка - унылое гамно? :)
Обработка данных в ASCII коде, где даже это выводить некуда (семисегментный индикатор)
Аватара пользователя
Dmitry__
 
Сообщения: 8033
Зарегистрирован: 13 янв 2011, 15:25
Откуда: Санкт-Петербург

Re: eZ430-Chronos

Сообщение Madf » 25 июл 2012, 10:19

Dmitry__ писал(а):В часах всего 32 кб. памяти, это размер текстового файла
Размер прошивки смотри в "окно проекта/ez430_chronos_868MHz.map"
В конце файла:
Код: Выделить всёРазвернуть
 27 080 bytes of CODE  memory
    844 bytes of DATA  memory (+ 157 absolute )
  1 592 bytes of CONST memory

Errors: none
Warnings: none

Понял.


Dmitry__ писал(а):В "menu.c" убери все в:"// Line2 - Calories/Distance"
или так:
Код: Выделить всёРазвернуть
В удобном месте, например "project.h": #define no_bluerobin

В "menu.c":
// Line2 - SXNC (synchronization/data download via SimpliciTI)
const struct menu menu_L2_Sync = {
    FUNCTION(sx_sync),                // direct function
    FUNCTION(dummy),                  // sub menu function
    FUNCTION(display_sync),           // display function
    FUNCTION(update_time),            // new display data
#ifndef no_bluerobin
    &menu_L2_CalDist,
#else
    &menu_L2_RFBSL,
#endif
};

#ifndef no_bluerobin
// Line2 - Calories/Distance
const struct menu menu_L2_CalDist = {
    FUNCTION(sx_caldist),             // direct function
    FUNCTION(mx_caldist),             // sub menu function
    FUNCTION(display_caldist),        // display function
    FUNCTION(update_time),            // new display data
    &menu_L2_RFBSL,
};
#endif


Этот способ конфигурации плотно используют в OpenChronos, ссылка в первом посте

Сходу больше симпатичен второй вариант. ;)

Dmitry__ писал(а):Я дотестил секундомер (20 часов), все ок.
Твою тестил, секунды убегали, может меня глючило, ща еще раз проверю...

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

Dmitry__ писал(а):Добавлено спустя 10 минут 42 секунды:
Блин, пока портировал управлялку лампой, не заметил, что там rfbsl старый :shock:
Вот тля, опять разбирать часы. :cry: :cry: :cry:

Что значит старый? Чем он плох и где взять (и нужно ли брать) новый?

Dmitry__ писал(а):Добавлено спустя 49 минут 40 секунд:
Залил твою версию, есть ошибка.
Блин, я забыл, что очень сильно поменял свои исходники. Я все перевел с ASCII обработки на байтовое.

Где ошибка?

Dmitry__ писал(а):У меня проверка 20-ти минут так:
Код: Выделить всёРазвернуть
if (sStopwatch.time[2] == 0x20) 


у тебя так:
Код: Выделить всёРазвернуть
if (sStopwatch.time[2] == '2')


Вот моя структура секундомера:
Код: Выделить всёРазвернуть
    u8 time[4];
    // time[0]      1/10 sec, 1/100 sec
    // time[1]      second H, L
    // time[2]      minute H, L
    // time[3]      hour H,L


Твоя:
Код: Выделить всёРазвернуть
    u8 time[8];
    // time[0]      hour H
    // time[1]      hour L
    // time[2]      minute H
    // time[3]      minute L
    // time[4]      second H
    // time[5]      second L
    // time[6]      1/10 sec
    // time[7]      1/100 sec

Соответственно тебе надо не "sStopwatch.time[1]--; //!!!"
а: sStopwatch.time[5]--; //!!!
И, о ужас, в ASCII "0" и "9" = 0x30 и 0х39 соответственно.

Ну с этим я вообще не знаю что делать, серъёзно переписывать всё не хочется и как ты раньше говорил, что против глобальных изменений.

Dmitry__ писал(а):А вообще, я говорил, что штатная прошивка - унылое гамно? :)

Говорил. :D Я чот не в восторге вообще от общей концепции программных продуктов от Ти (всё бесит, видимо на этом надо просто вырасти).
Madf
 
Сообщения: 3298
Зарегистрирован: 03 янв 2012, 12:55
Откуда: Москва
прог. языки: VB6, BASCOM, ASM...

Re: eZ430-Chronos

Сообщение Dmitry__ » 25 июл 2012, 14:36

Madf писал(а):Ну с этим я вообще не знаю что делать, серъёзно переписывать всё не хочется и как ты раньше говорил, что против глобальных изменений.

Дык, весь допил:
Соответственно тебе надо не "sStopwatch.time[1]--; //!!!"
а: sStopwatch.time[5]--; //!!!

Я вчера поправил это в твоей версии, тестю 12 часов, все ок.
Madf писал(а):Что значит старый? Чем он плох и где взять (и нужно ли брать) новый?

Не, ни чего не надо, это я свои часы брикнул, вот и плакался.
Сейчас решил двигать дальше проект с часами (ты возбудил) :)
На базе исходников:
http://blog.chschmid.com/?page_id=193
Сделать управление дешевыми модулями rfm01, rfm12, rfm23
Аватара пользователя
Dmitry__
 
Сообщения: 8033
Зарегистрирован: 13 янв 2011, 15:25
Откуда: Санкт-Петербург

Re: eZ430-Chronos

Сообщение Madf » 25 июл 2012, 15:25

Dmitry__ писал(а):Дык, весь допил:
Соответственно тебе надо не "sStopwatch.time[1]--; //!!!"
а: sStopwatch.time[5]--; //!!!

Я вчера поправил это в твоей версии, тестю 12 часов, все ок.

Спасибо, вечером гляну, "допилю".

Dmitry__ писал(а):Не, ни чего не надо, это я свои часы брикнул, вот и плакался.
Сейчас решил двигать дальше проект с часами (ты возбудил) :)
На базе исходников:
http://blog.chschmid.com/?page_id=193
Сделать управление дешевыми модулями rfm01, rfm12, rfm23

Видимо время пришло. ;)
Известный проект, интересный, я под это дело приобрел себе модулёк RFM22B-868-D, т.к. Ти-шные модули всё как-то через одно место (либо большие по габаритам, либо непонятно как использовать).
Madf
 
Сообщения: 3298
Зарегистрирован: 03 янв 2012, 12:55
Откуда: Москва
прог. языки: VB6, BASCOM, ASM...

Re: eZ430-Chronos

Сообщение Madf » 25 июл 2012, 23:33

Поправил я в стопвотче:
Код: Выделить всёРазвернуть
                    if (sStopwatch.time[2] == '2')
                    {
                        // SWT display changes from MM:SS:hh to HH:MM:SS when reaching 20 minutes
                        if (sStopwatch.viewStyle == DISPLAY_DEFAULT_VIEW)
                        {
                          sStopwatch.time[5]--; //!!!
                        }
                        sStopwatch.viewStyle = DISPLAY_ALTERNATIVE_VIEW;
                        //!!! display_stopwatch(LINE2, DISPLAY_LINE_UPDATE_FULL);

                    }

sStopwatch.time[5]--; //!!!

Надеюсь правильно, не промахнулся. ;)

Добавлено спустя 9 минут 38 секунд:
На счет "bluerobin": разве условие не на оборот должно быть?
&menu_L2_CalDist - напульсник
&menu_L2_RFBSL - обновление по воздуху прошивки
там же выходит, что при активации условия отключения "bluerobin", отключается обновление по вздуху, а при включении его - отваливании напульсника? не?
Madf
 
Сообщения: 3298
Зарегистрирован: 03 янв 2012, 12:55
Откуда: Москва
прог. языки: VB6, BASCOM, ASM...

Пред.След.

Вернуться в Микроконтроллеры

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 20