Старая сейсмостанция 2012г. Для поддержки . BF504f+ADS1282+MagicXtal. Bare metal. w/out OS версия 114 а) Добавил чтение статуса в компасе и акселерометре. Изменил data rate для обоих: 10 и 7.5. Данные остаются в регистрах до чтения.
b) Изменил функцию расчета углов - заменил на tan2. Переделать по типу iNemo от STM!
c) Угол поворота от 0..180 0..-180
d) Убрал определения частот генератора. Частота генератора передается параметром при компиляции.
e) Падение напряжения при котором выключаем питание - повышено до 8.5 вольт!
f) Добавил настройку тактов для FLASH
g) Сделал возможность подачи "своего" пережига после отработки модемного
h) Изменил название check_magnet_request на check_magnet_and_power_request по смыслу
i) уменьшил в 2 раза время включения и переключения магнитом
j) Исправил ошибку в опросе статуса компаса/акселерометра
k) FLASH init перенес в начало программы
l) Перетаскиваю параметры в файл config.h - сейчас POWER_DROP_MIN
m) выключение регистратора при напряжении ниже 7.5 В
n) Добавил получение "Продолжительность внутреннего пережига"
o) Добавил частоту 125 Гц - децимация на 2 от 250
p) добавил вывод времени пережига внутреннего и внешнего. Отмечается в логе: [[[[[[[[[[[ ****** ]]]]]]]]]]]
q) Добавил какой генератор используется - печатается в начале лога
r) Моргание светодиодами при втором пережиге не изменяет текущего моргания.
s) Проверка готовности АЦП. Если есть готовность - при тесте считает количество прерываний. Если 0 - завершение с ошибкой.
Ver 115 a) Проверка готовности АЦП. Если есть готовность - при тесте считает количество прерываний. Если 0 - завершение с ошибкой.
b) При проверке АЦП оставались включенными прерывания. АЦП начинал сразу работать после инициализации, сейчас исправлено: ADS1282_stop_irq()
c) собрал проект в каталоги по смыслу: драйверы, периферия, логи, модем, sd - карта и пр
d) сделал один общий Makefile. Параметр - частота генератора передается при компиляции
e) - добавил в test.c, нужно разобраться почему!
/* пока не выходит на 8 МГц кварце - разобраться!!! */ #if QUARTZ_CLK_FREQ==(19200000) if (i < 50) { break; } #endif
f) расчитал частоты для 8.192 - проверить!
g) пересчитал коеффициенты для FLASH - ранее были неправильные
h) пересчитал коэффициенты для компаса-акселерометра
i) сделал смещение времен сразу после первого пережига. толко после 1-го. написал отдельную функцию, которую буду вызывать на след. ступени исправл2ений - когда станция пошла вверх.
j) поменял местами при окончании работы ацп: ADS1282_stop(); /* Выключаем АЦП и в Powerdown его / TIMER3_disable(); / Выключим 3-1 таймер */ иначе на 8 МГц плате не прочитать что записано в регистрах
k) вернул диапазон 0..360 градусов для поворота
l) убрал shift_all_times() - могло вызвать непредвиденый результат в работе (функция ставила запись на 5 минут) -
изменил название на check_start_time()
m) убрал 3 режима: пережиг, окончание пережига,подъем. реле просто включаю и выключаю по часам.
при внешнем пережиге - просто передвигаю назад время. Упоростил функцию отпрелделения поднесения магнита, выкинул лишнее.
n) убрал постояную регистрацию (до выключения). Никогда не использовалась. Осталось в log.c для совместимости
o) Режим аварийного ожидания начал писать. Желтый редко, красный редко
p) Выключение магнитом из командного режима
q) добавил test_irq_num - в модуле ads1282 так как при выключении количество прерываний сбрасывается
r) убрал папка common - теперь airlink берет заголовки прямо из папки gns504f_burn
s) убрал проверку RTC в utils.c временно.
t) Если не запускается АЦП - выход по ошибке в начале работа, сделано для обоих генераторов
u) Поменял названия папок: atmega_burn bf504f_burn bootloader и AirLink
м) Сделано! Если не запускается АЦП - выход по ошибке в начале работа, пока стоит заплатка для 8-ми МГц
ver 116 b) Добавил дефиниции вместо подсчета числа самплов в минуту в log.h
c) Добавил функцию "void TIMER3_change_freq()" в timer3.h
d) переписал функцию "void log_fill_adc_header(char sps, u8 bitmap, u8 size)"
теперь ConfigWord в заголовке соответсвует ADS1282_FreqEn
e) переписал в main.c запуск с параметрами частоты диксретизации АЦП
f) переписал в ads1282.c прием и разбор параметров в "bool ADS1282_config(void *arg)"
g) Пересчитал размеры буферов в ads1282.c для новых частот 62.5 и 125
h) исправил в utils.c: log_write_log_file("ERROR: Time now can't be less start time on one day! Check RTC\n");
i) Добавил exfat в библиотеках. Изменил log.c
j) Добавил опцию для генератора 19.2 - не будет работать с частотами 62.5 и 125
k) Изменил loader чтобы он мог работать с ExFat. Не прошивается через JTAG (я забыл как) - образец внешнего прошивальшика взял с более старых версий ~ver.109
l) Вся версия вместе с загрузчиком работает с ExFat. Fat32 не поддерживается этой прошивкой - перекомпиляция необходима!
m) Поправил AirLink - чтобы писал в ExFAT и не ругался. Плюс дополнительные частоты
n) поправил log.c функцию log_check_mount() - выдавала неправильный результат (всегда true)
o) закоментировал проверку get_scr_register - выдавало ошибку по таймауту /* Убрал проверку, узнать для чего она! */ #if 0 while (!(*pRSI_STATUS & DAT_BLK_END) && t0--); if (t0 <= 0) return CMD_TIMEOUT; #endif
p) добавил log_umount_fs() перед выключением
q) убрал красную лампу в вызовах и заменил на желтую. красная только на ошибку
r) изменил UTC offset на 18 секунд
s) Добавил время включения и выключения модема. файлы log.c, modem.c и main.c новая функция check_modem_on_off_timer() в main.c проверяет время модема каждую секунду