Перейти к содержанию
    

Eddy_Em

Участник
  • Постов

    1 956
  • Зарегистрирован

  • Посещение

Весь контент Eddy_Em


  1. I2C

    Боюсь, что даже студентам… Но да: преподаватели обычно — заскорузлые мамонты. Хоть на законодательном уровне запрещай использовать хлам больше 10-15 лет давности! Достали уже со своими аврками.
  2. Если есть детальные спецификации, то несложно и модуль ядра написать. Обычно же их нет. А реверсом мне заниматься ой как не хочется: очень уж муторно и больше на гадание на кофейной гуще похоже!
  3. Вот еще не хватало на этом старье работать! Какой смысл, когда ядро 4.10 уже считается старым, работать на 3.4? Я уже наелся с этим старьем: вроде сидишь на нем, работает. А тут — бац, и надо что-то более свежее воткнуть (железо, например, или какую-нибудь новую фичу). И фигвам ☹
  4. Вот так и пробовали. Не взлетело вообще никак! И ни в одном "одноплатниковом" дистрибутиве нет этого "из коробки".
  5. Ну и покажите мне одноплатник, где в линуксе без плясок с бубном работает аппаратный видеокодек. Я на "апельсинке" убил 3 часа, но так и не смог заставить его работать. Друг неделю по вечерам сидел, мучился, тоже безрезультатно. Либо народ брешет, либо инструкции неправильные выкладывает.
  6. Для этого не нужен программист. Все пишется на элементарном баше с запуском mplayer'а по необходимости. Другое дело, что все эти одноплатники не имеют аппаратного ускорения (в силу огороженности mali), в линуксе не взлетит. По крайней мере, 1080p будет тормозить. Вот в огороженном ондроеде аппаратная поддержка видео работает. Но там огороженные средства программирования + для GPIO придется по USB/bluetooth/wifi подключать внешний МК.
  7. Очень даже взлетит. Работает на STM8S003, S103 и S105. Не работало бы — полез бы глубже читать мануал. А название инклюда у меня так исторически сложилось — рыбу утянул с L-серии, потом туда потихоньку дописывал нужные дефайны. Понятно, почему это работало: 6 как-то не сильно много для LSB, а MSB пустой. Иначе не взлетело бы. Надо будет сниппеты в соответствие с RM привести, а то копирую этот кусок из одного в другое место, без учета требований последовательности записи регистров... В любом случае мой подход правильней SPL. А еще правильней у VladislavS.
  8. Для особо слепых: ссылка у меня в подписи. Вот, например: // Configure UART // 9 bit, no parity, 1 stop (UART_CR3 = 0 - reset value) // 57600 on 16MHz: BRR1=0x11, BRR2=0x06 UART2_BRR1 = 0x11; UART2_BRR2 = 0x06; UART2_CR1 = UART_CR1_M; // M = 1 -- 9bits UART2_CR2 = UART_CR2_REN | UART_CR2_RIEN; // Allow RX, generate ints on rx
  9. И что? У меня не будет 100500 ассертов и кучи вычислений для такой элементарщины. Три-четыре присвоения — и все! Больше, чем количество уартов, их все равно быть не может. ctrl+c → ctrl+v решают ☺ Всяко меньше кода на выходе будет. Кому это может понадобиться? На гитхабе лежит, я ж говорю. Спасибо, посмеялся. Ну и на кой тогда вы эти спл используете? Индусу заплатили, он пишет. Какая ему разница, что смысла в этой писанине нет? И поэтому с ними работать еще сложней: нужно не только даташит читать, но и исходники долбаных библиотек/абдурин! Это хорошо только если задача — помигать светодиодиком, когда СМС придет. И делается эта железяка в одном-единственном экземпляре. И им наплевать, что для мигания светодиодом код 4кБ занимает! И что SPI/I2C/etc у них тупым ногодрыгом реализуются. И что для простой задачи, где при правильном подходе хватило бы 8кБ флеша за глаза, им требуется минимум 32. И т.д., и т.п. Я вообще ничего хорошего в этом не вижу. Вон, компьютеры тоже когда-то были приличными железяками, для работы на них нужно было быть инженером. А сейчас любая блондинко сидит, мышкой тыкает. В итоге скатились чуть ли не в каменный век! Народ уже вообще не считает, что нужно учиться — компьютер же все сделает! Та же самая мастдайка развилась именно благодаря тезису "каждой кухарке — по компутеру!". Иначе никто бы эту неюзабельную дрянь не покупал! По коду моего сниппета все видно, а по коду вызова библиотечной функции — нет. Написать, например, в комментариях, откуда эти числа взялись.
  10. Вот можно подумать, обычные USB-флешки гарантируют больше ~10 лет! Какая разница? Сдохнет через 30 лет — туда и дорога! Железяки такого типа нужно хотя бы раз в 10-15 лет обновлять, чтобы не было как у нас (см. выше).
  11. Мало того, что уродливо, так еще вызывается левая функция, когда уарт инициализуется тремя-четырьмя строчками! Когда понадобится что-то эдакое, а окажется, что в SPL это либо не реализовано, либо, что еще хуже, реализовано криво (жаловался уже на что-то подобное народ). Если правильно задокументировать, все будет отлично. Не надо тут! Почти любой МК можно по-человечески запрограммировать. Даже абдурину: достаточно стереть к чертовой бабушке загрузчик и программировать его как обычный авр. Ну или как обычный авр, но заливать через загрузчик. Пользоваться абдуриновскими библиотеками — это уж вообще треш! После облома с opencm3 я решил переходить абсолютно полностью на nolib решение: сниппеты — наше все! Вот как с STM32F042 закончу более-менее, вернусь к F103. Без библиотек элегантно получается, не тормозит и читается лучше. А даташит с RM — их в любом случае подробно читать придется. Хоть с библиотеками, хоть без них. Так зачем мучиться, и читать помимо даташита с RM еще и исходники кривых библиотек? Кусочки кода. Я их вообще как готовые к загрузке штуки оформляю. См. у меня на гитхабе. Нет. Это STM8S003, которые мегадешевые. Их во всяких халявных китайских приборчиках используют, которые все равно выкинешь раньше, чем через 20 лет. Кстати, я когда двум этим мелкосхемам ресурс флеша исчерпал (одну аж раз на 250 хватило!), прикупил девборды на STM8S103 — практически один-в-один, но флеш намного дольше убивается. На них отлаживал, а потом 003 прошивал. Из баксовых "вольтметров" на 003 можно вполне приличный термометр с датчиком Tsic506 сделать, или экранчик по I2C (правда, криворукие китайцы даже "вольтметр" с внешним АЦП спаяли так, что аппаратный I2C у них использовать нельзя — этими ногами дисплей дергают, идиоты!). Вот, кстати, подозреваю, что из-за этого, а не каких-то "наведенных грозой зарядов" (а грозы-то и не было) у нас сдох этот самый МК в приборе почти 20-летней давности. И пришлось мне стать золотарем.
  12. Да, под стартапом я имел в виду ассемблерный файл, который занимается инициализацией регистров и первичным заполнением памяти. Для STM8 этого не нужно. А структуру файлов, которая у меня используется, наглядно можно в исходниках просмотреть. В отличие от некоторых, я не скрываю свои исходники — зачем, если есть хорошая лицензия GPL? По поводу инициализации периферии: один раз потратил 2 часа на даташит — написал сниппет для USART/I2C/etc. По мере необходимости количество сниппетов расширяется. А т.к. у меня всегда 57600 скорость USART'а, я просто этот код вставляю! Можно вообще собрать все сниппеты в заголовочный файл (как макросы или static inline) и вызывать из кода. Будет как будто бы в "блиблиотеках", зато без лишних телодвижений. И если gcc вполне справляется с оптимизацией, так, что можно даже на цепепе писать, то sdcc еще до него оочень далеко. И малейшая гадость вполне войдет в результирующий код (sdcc даже неиспользуемые функции выкидывать не умеет). Насчет SPL очень правильно было сказано: с помощью этой дряни значительно легче себе в ногу стрельнуть. Ну и просто уродливо выглядят все эти инициализации структур перед вызовом функции. Похоже, все-таки, хоть инженеры у STM грамотные, программисты — безнадежные идиоты: то SPL родят, то HAL… Нет бы сразу сниппетов "на голых регистрах" побольше написать, в которых наглядно можно было бы подводные камни errat'ы увидеть!
  13. А смысл? Еепрома же с гулькин нос! Что туда влезет-то? Вот какие-нибудь инициализационные константы вполне можно хранить (в том исходнике, на который я ссылку приводил, я храню в еепроме пары ID-номер для датчиков DS18x20). Зачем вы вообще этими яровскими штуками пользуетесь? SPL еще припомните... STM8 же прост как 5 копеек! Бери себе, да пиши безо всяких "библиотек". Я для начала где-то минимальный заголовочный файл содрал (правда, он был для L-серий, а название его я так и не сменил — так и болтается теперь с буквой l, хотя я для l-ек ничего не писал никогда), а потом по мере необходимости пополнял его макросами. В отличие от ARM'ов этим 8-биткам даже файл-стартап не нужен! Тупо сишные файлы сразу пишешь, потом make && make flash — вуаля!
  14. Подтверждаю, никаких const писать не надо. Вот так вполне работает, ничего при старте не копируется.
  15. Если там еще и на компе мастдайка, то совсем уж будет уныло бедняге-программисту...
  16. Похоже, во всех специальностях так. Астрофизики тоже на практику приезжают, так из всей когорты пара-тройка человек чего-то да может и знает, остальные так...
  17. EasyCap — гадость, натыкался уже. Купил один на попробовать — взлетело моментально. С радостью взял еще 4 таких — коту под хвост: оказывается, они уже на другом чипе были, для которого модуля ядра нет и не будет, т.к. никому они не нужны. Я так понял, совершенно все железки уже есть? Печально. Зря устаревший авр используете, лучше бы все на ARM'ах делали. Тем паче, их цена совсем невелика.
  18. В который раз убеждаюсь, что ничего приличного на БХ не выкладывают! Какой же автор наHAL!
  19. Плюсую. Есть у меня "свисток" от билайна, поддерживающий 4G. В системе он — как обычная USB'шная сетевуха. И никаких ppp не надо, я уж забыл, когда последний раз надо было на "свистке" в бубен бить и ppp поднимать. Сейчас они вполне себе хорошо работают, главное — если ядро самосборное, не забыть всяких разных модулей понакомпилять для них. Иначе придется, как мне в аэропорту, ядро пересобирать, чтобы интернет получить (да-да, уже года 3-4 назад в московских аэропортах "бесплатный" wifi практически не работал, сейчас ситуация еще хуже).
  20. pppoe? Есть такое, правда, уже так часто, как в эпоху модемов, не используется. И да, понятное дело, этой штуке нужен внешний сервак с хотя бы серым айпишником. А при таких делах проще без ppp наладить обычную связь tcp/ip.
  21. Настройка ADC в STM32

    Есть понятие RM - там описывается семейство МК, и нет сведений о конкретных моделях: распиновке, особенностях питания и "заводским" регистрам. А есть понятие даташита — там описывается конкретная линейка с распиновкой и всякой всячиной.
  22. Настройка ADC в STM32

    Мне с выражением за вас даташит читать? Этот регистр не имеет никакого отношения к "заводскому" измерению напряжения на vref, это — внутреннее значение калибровок, которое вы можете изменять! Кстати, насчет STM32F0 я был не прав: в них этот регистр есть (0x1FFF F7BA - 0x1FFF F7BB). А вот в F103 — нет.
  23. Настройка ADC в STM32

    А, у меня только F030, F042 и F103. Там такого нет, но несложно померить один раз — я серии железяк не делаю. Вообще, при питании от кренки или чего понадежней нет такого размаха напряжения питания, чтобы прямо калибровать надо было. Во всяком случае, я резисторами калибровал — честные 12 бит было, никаких диких шумов… Лучше вообще не использовать типы вроде char/int/long и т.п. Мало ли — перенесете высокоуровневый код с STM32 на STM8, и получите жесть, т.к. типы данных будут разной длины!
  24. Настройка ADC в STM32

    Данные из канала АЦП, вестимо (ADC1_IN17). P.S. Я так понял, VREFINT_CAL есть только у L-серий. А у обычных F нужно это значение измерить. Т.е. если, скажем, мерить с точностью до сотых вольты (только зачем?), то VDDA = X / CH17 → X = VDDA * CH17 (считать лучше в uint32_t). Скажем, дает нам вольтметр 3.25В, а внутреннее опорное — 1540ADU, тогда X = 325*1540 = 500500, и в любой момент просто делим 500500 на данные с CH17, получая VDD.
×
×
  • Создать...