Activity

Megapirate X STM32 : Сборка на дискавери с нуля
  1. Для самолетов и без посадки. Остальное в планах.
  2. Барометр в полном объеме, звуковой варио в ближайшие дни, до сонара дело не дошло
  3. В планах есть.
  4. Не пущу жпс-ку на I2C. МТ3329 и “блоха” работают по сериалу и этого достаточно.

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

Развитие идет, многое добавляется и переосмысливается на лету. Есть вещи, которые еще не отражены в руководстве.

Megapirate X STM32 : Сборка на дискавери с нуля

у дискавери есть вход 5В на стабилизатор, вот что я имел в виду.
А у проца все выводы 5V-tolerant, пока не включены в режим ADC или Analog.

Виктор, я тебе там ответил.

Megapirate X STM32 : Сборка на дискавери с нуля

В вортекса залить пустой скетч:

void setup(void) {}
void loop(void) {}

Запитать его как обычно, SCL SDA (луженые дырки на плате) и землю соединить с СТМкой, как описано в тексте. Подвес к 3В обязателен. К его же 5В-выходу можно подключить вход 5V платы СТМ, он почти ничего не ест. И не забудь про AT24C64.
Выводы приемника/серво на вортексе будут отключены, поэтому можно использовать в кач-ве выходных разъемов СТМ, подпаяв проводками.

Контроллер освещения и сирены аэросаней/лодки

Рад, что получилось 😃

Тут еще поправочку внесу:

byte portA = PORTA;
byte delta = portA ^ _PORTA;
// Reading TMR1 16 bit value in the safe manner;
t = TMR1;
if (TMR1H != *((byte*)(&t)+1) )
t = TMR1;

желательно переставить так:

portA = PORTA;
// Reading TMR1 16 bit value in the safe manner;
t = TMR1;
if (TMR1H != *((byte*)(&t)+1) )
t = TMR1;
delta = portA ^ _PORTA;

Тогда джиттер будет еще меньше. Причем portA и delta определить как глобальные в шапке.
Потому что иначе память на них будет выделяться из data stack каждый раз заново, а это - лишние микросекунды.
Если в прерывании не используются локальные переменные,
вход будет проводиться быстрее.

Контроллер освещения и сирены аэросаней/лодки

С таймером у Вас как раз все нормально.
if (RX1_LEFT_RIGHT != RX1_signal) - вот что я имею ввиду, таймер считан один раз, а работа с физ. пинами разбросана по всему обработчику. Это означает, что определенному значению пина может соответствовать уже другая метка времени, с разницей в пару мкс. В статике ничего страшного, но при изменении состояния будет “дребезг”. Надо вычитывать TRISA в переменную одновременно с таймером, а потом работать уже только с ней. Тогда, кстати, и цикл не нужен, можно все условия пробегать за один раз.
В сигнале с приемника дребезг отсутствует как класс.

Контроллер освещения и сирены аэросаней/лодки

Кто знает, как модифицировать обработчик прерываний,
 Нужно первым делом после входа в процедуру считать значение порта в 8-битную переменную, затем слить таймер, затем уже работать с ними. У вас условия напрямую с портом работают, хотя значение могло давно поменяться.
И не используйте непрямую адресацию (массивы) в прерываниях! только глобальные переменные. Времени жрет дико.

RCG-26cc

Уши при капотаже или любом знакомстве мотора с планетой(тычок иль подобное) отвалятся за спасибо.

Поймал уже 2 капота и сломал 1 винт. Ушных проблем не обнаружено. Просто сперва надо прикручивать стойки к движку, а потом уже по ним сверлить крепления в файрволе, чтобы не было напряжений изначально. С учетом выкоса дырки сверлить под углом. И зенковать под углом, чтобы не было перекоса стоечных шляп на файрволе и болтов крепления к нему же.
Выкос делается шайбами: 0-2-4-2 штуки (шайбы 0.8мм)