Создание собственной системы стабилизации

SergDoc

у меня первые удачи-неудачи, даже незнаю как назвать 😃 во включении светодиодов нашел уже три ошибки(но так ещё и не зажег)! далее затык в micros и millis но думаю - пога не зажег светодиод (подоткнут из примера под код имеющийся) дальше и лезть не стоит…
а полетал сегодня на мелкоплате - вроде никуда не тянет 😃 , только по ветру, приехало всё к квадрику(раму собрал), а трёху разбирать не хочется 😦

rual
oleg70:

Александр, подскажите, (настраиваю L3gd20)

Олег, не понятно какие библиотеки используете, см. в архиве стандартные функции обращения к ДУСу.

SergDoc:

даже пока не знаю где копать…

ОТладка вообще работает? Если да, то начинать надо с инициализации тактовых генераторов и стека, дальше лови переход в main(). Ну а там уже сам код.

Razek:

А зря Вы так смеетесь

Да как бы не смеюсь, просто раньше на АВРе (и ещё раньще на 51м) имел правило проверять трансляцию из Си в машкод дизассемблером. А сейчас всё больше приходится полагаться на совесть разработчиков драйверов и пр. низкоуровневый сторонний софт. Понятно что в мире “больших” компутеров всё давно только так и было, но вот приходит время и для микроконтроллеров…

mahowik:

Парни! поругаюсь немного!
…призываю всех пользовать термины родные, т.к. к примеру даже в адаптитованных статьях как правило пишут DMA, а не ПДП и т.д…

Не надо ругаться, Александр!😃 Просто для меня лично важно, чтобы термины и абревиатуры несли смысл, а так как я мыслю (“смысл” и “мысль” один корень) по-русски, то использование иностранных слов вызывает у меня раздражение (особо когда раскладку приходится переключать). Хотя допускаю, что в настоящее время существуют компьютерные технологии со своим искусственным внутреним миром и своей особой филосософией, которая не может быть без потерь механически переведена на русский. И скорей всего это либо “фирменная” обёртка для давно известных математических сущностей (продукт маркетологов), либо узко специальная технология используемая в завершенном конечном продукте (вещь в себе), когда например на семинаре по продукту на вопрос “почему?” отвечают “потому что гладиолус” или “художник так видит”.
Без обид, Александр, но Монреаль всё ещё франкоговорящий? Во французких школах информатику (или как там она называется) исключительно на английском преподают?
Вообще тема интересная для размышления (и потреньдеть), но не в этой ветке, может в “заседении общества”? 😉

STM32F3_Discovery.rar

SergDoc

в принципе разобрался code.google.com/p/afrodevices/source/…/config.c?r=… вот с этой хренью точно никуда не полетит, особенно void readEEPROM(void) и ей подобным, в краце: там выбран последний килобайт флеши и он записывается стирается и т.п. - это в 103-м , ну а мне по незнанию преспокойно первый сектор стирал 😃 пока не знаю что придумать? можно и в eeprom-ку писать внешнюю, пока не знаю…

mahowik
rual:

Не надо ругаться, Александр! 😃

Буду ругаться! 😃 Например ДУС в частности, у меня вообще ассоциируется со средством для уничтожения мух и тараканов! 😃

rual:

Без обид, Александр, но Монреаль всё ещё франкоговорящий?

по раЁнам… 😃

rual:

Во французких школах информатику (или как там она называется) исключительно на английском преподают?

разные школы, разный уклон, но термины (на сколько общался с разными ИТ-ми) везде на инглише… в Минске также было, думаю как и везде… каверканий терминов конечно хватает, но по большей части это англицизмы, к примеру заюзать, проапдетить и т.д., которые не так ухо режут как ДУС… ИМХО… 😃

leprud
SergDoc:

особенно void readEEPROM(void) и ей подобным

Это заглушка от AVR сделана, где EEPROM (rual - ЭСППЗУ 😉 ) таки присутствует, в отличие от арм-ов… Также возьмите последние килобайт(ы), да пишите туда свои данные

@file EEPROM_Emulation/inc/eeprom.h

SergDoc

я не считаю что флеш следует использовать в данном случае, ибо ресурс у неё не безграничен, пример автомагнитолы audi - кто производитель уже не помню, через некоторое время - перестаёт работать регулировка громкости по этой причине… но блин по i2c eeprom тоже палка о двух яй концах, и скорость шины и возможные ошибки 😦

rual
mahowik:

к примеру заюзать, проапдетить и т.д., которые не так ухо режут как ДУС…

к примеру использовать и обновить, а мух травит дусТ:)

SergDoc:

пока не знаю что придумать?

придётся править процедуры, ну или действительно внешнюю флешку (не знаю русского аналога 😃)
И то и то имеет подводные камни, хотя переписать думаю не так сложно, есть официальный демопроект

leprud
SergDoc:

ресурс у неё не безграничен

Знаю такое, в старых бэхах тож приходилось менять микросхему памяти. Только вот какое дело-то…

In the STM32F10xxx on-chip Flash memory, each page can be programmed or erased
reliably around 10 000 times.

Берем, допустим, перезапись - 10 раз в день ( а реально после отладки кода эта цифра будет вообще максимум 50-100 на весь период владения железки человеком, либо до перестановки на другую платформу), немного делим, и получим огогого какую цифру! А вечный контроллер… Оно нам надо-то реально? 😃

SergDoc

ладно, у меня на плате и 24c512 и m25p16(рабочая пока в пути) - флешку планирую для записи логов, а вот eeprom-ку для точек, вобщем есть над чем поразмыслить, тем более если мы её читаем не постоянно а только при запуске, то ничего не мешает и i2c использовать?

Probelzaelo
mahowik:

все тех термины переведены на русский…

Вот эти “тонкости” переводов бесят всюду, и в софте и документации.
А хуже всего что каждый норовит предложить свой вариант перевода, типа чтоб не конкуренты привлекли за плагиат.
Хорошо еще что медики почти не переводят техническую документацию…

SergDoc

Ну так что? есть два варианта: эмулятор и внешняя, чему отдать предпочтение?
эмулятор целый сектор откусит, т.к. крайний (на данном проце 7-й) то 128к 😦

DVE

Внешняя память это хорошо, можно подробные логи писать как в Ардукоптере, и рисовать 3D-картинки типа таких 😃

rual
Probelzaelo:

А хуже всего что каждый норовит предложить свой вариант перевода

Эта потому что переводят не спецы в предметной области, главное бабла нарубить, бардакс …

SergDoc:

Ну так что? есть два варианта: эмулятор и внешняя, чему отдать предпочтение?

Для настроек однозначно внутренняя память, для логов SPI. А так нужно бы знать , что сделать прощще.

SergDoc

Не пойму, задаю:

#ifndef FLASH_PAGE_COUNT
#define FLASH_PAGE_COUNT 4 //128X4=512
#endif
#define ADDR_FLASH_SECTOR_0     ((uint32_t)0x08000000) /* Base @ of Sector 0, 16 Kbytes */
#define ADDR_FLASH_SECTOR_1     ((uint32_t)0x08004000) /* Base @ of Sector 1, 16 Kbytes */
#define ADDR_FLASH_SECTOR_2     ((uint32_t)0x08008000) /* Base @ of Sector 2, 16 Kbytes */
#define ADDR_FLASH_SECTOR_3     ((uint32_t)0x0800C000) /* Base @ of Sector 3, 16 Kbytes */
#define ADDR_FLASH_SECTOR_4     ((uint32_t)0x08010000) /* Base @ of Sector 4, 64 Kbytes */
#define ADDR_FLASH_SECTOR_5     ((uint32_t)0x08020000) /* Base @ of Sector 5, 128 Kbytes */
#define ADDR_FLASH_SECTOR_6     ((uint32_t)0x08040000) /* Base @ of Sector 6, 128 Kbytes */
#define ADDR_FLASH_SECTOR_7     ((uint32_t)0x08060000) /* Base @ of Sector 7, 128 Kbytes */


#define FLASH_PAGE_SIZE                 ((uint16_t)0x20000) // размер 7-го сектора
#define FLASH_WRITE_ADDR                (0x08000000 + (uint32_t)FLASH_PAGE_SIZE * (FLASH_PAGE_COUNT - 1)) // начальный адрес виртуальной eeprom

а эта гадость сносит мне первый сектор:)
так уже не стираем, но блин пишем в первый сектор…
ну вот не пишем не стираем, а проц вообще пропал, только в dfu поймать можно 😦

rual

Что то ерунда какаято, поставь сразу #define FLASH_WRITE_ADDR ADDR_FLASH_SECTOR_3
и исключи этот сектор из сегмента IROM, линкёр сам разбросает код вокруг этого сегмента.

SergDoc

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

rual:

IROM

Это где?

может я ему на седьмой сектор мало напруги на стирание дал? voltage range 3

rual
SergDoc:

Это где?

В кейле это тут


в ГЦЦ это в мэйк-файле наверно

SergDoc:

может я ему на седьмой сектор мало напруги на стирание дал? voltage range 3

Это я не знаю, щас с твоей подачи копаюсь в стандартных библиотеках, сообщу как накопаю.

SergDoc
rual:

В кейле это тут

т.е. я пишу например IROM1 0x08000000 - траля-ля до нужного сектора
IROM2 адрес последующего сектора - и до победы (до конца флеши)

там по моему заковырка или первых три сектора или 5,6,7 сектора, может выделить ему первый сектор?

rual
SergDoc:

там по моему заковырка или первых три сектора

Надо доку на проц читать, надо посмотреть инициализацию счетчика команд и размещение таблицы векторов. я пока под Ф3 ваяю.

SergDoc:

т.е. я пишу например IROM1 0x08000000 - траля-ля до нужного сектора IROM2 адрес последующего сектора - и до победы (до конца флеши)

всё верно

oleg70
rual:

Олег, не понятно какие библиотеки используете, см. в архиве стандартные функции

Стандартные функции смотрел, происходит вообще лажа какаэто, по многочисленным экспериментам имею следующие “явления”:
1.корректно записывается только первый (любой) регистр конфигурации следующий уже сбоит…
2.при исполнении SPI_SendData8(L3GD20_SPI, byte) с байтом типа “на запись” дождаться флага RXNE невозможно (будто с гиры байт не приходит)…
3.При понижении (!!!) скорости SPI ниже “SPI_BaudRatePrescaler_8” вообще ничего не читается и не пишется…
Ну и наконец самое чудное (ударение на “о”), при чтении ось Z не читается а на ее месте данные по оси Y…
Очень похоже что дело в железе.
Менял чипы два раза, проверил “печатку”, пока результат “0” , копаюсь…