Activity
обратите внимание возможность совместного доступа к переменной vsync_wait. Я б все таки до её изменения из основного цикла запретил прерывания, а после разрешил.
Спасибо…
я где-то читал, что имеет смысл защищать операции с неатомарными данными, в нашем случае vsync_wait - один байт, т.е. переменная атомарная. Чтоб лучше разобраться, открыл asm-код:
Скомпилированный код прерывания
00000954 <__vector_1>:
954: 1f 92 push r1
956: 0f 92 push r0
958: 0f b6 in r0, 0x3f ; 63
95a: 0f 92 push r0
95c: 11 24 eor r1, r1
95e: 10 92 6a 04 sts 0x046A, r1
962: 0f 90 pop r0
964: 0f be out 0x3f, r0 ; 63
966: 0f 90 pop r0
968: 1f 90 pop r1
96a: 18 95 reti
А вот начало DrawScreen
00003f12 <_Z18MAX7456_DrawScreenv>:
3f12: 81 e0 ldi r24, 0x01 ; 1
3f14: 80 93 6a 04 sts 0x046A, r24
3f18: 80 91 6a 04 lds r24, 0x046A
3f1c: 88 23 and r24, r24
3f1e: e1 f7 brne .-8 ; 0x3f18 <_Z18MAX7456_DrawScreenv+0x6>
0x046A - volatile vsync_wait, 0x3f - SREG
насколько я могу судить, вызов прерывания после любой из строк не должен ничего нарушить, SREG в прерывании сохраняется/восстанавливается. Единственно, если значение vsync_wait изменится между 3f18 и 3f1с, то brne перейдет на 3f18 всего один лишний раз. Вроде так… Я не настоящий сварщик только учусь, поэтому поправьте, если где-то ошибаюсь.
Кстати, там Carlo из KVTeam интересуется, можно ли им Ваш мод использовать 😃 www.multiwii.com/forum/viewtopic.php?p=44844#p4484…
Now we need to ask the RC guy (may be okan_vitaliy as Russian is not my second language to read the whole tread) the permission to use this mod.
Всё!!! Вылечил вавку с артефактами.
Виталий, огромное спасибо! Я немного модифицировал Ваш код, в прерывании оставил только сброс флага vsync_wait, работает отлично.
Заметил еще такой момент - KVOSD очень сильно фильтрует RSSI, ладно аналоговый, но зачем так сильно сглаживать PWM и MSP - непонятно. Выключаешь передатчик, а RSSI на экране плааавно падает в течение нескольких секунд. Короткие провалы в сигнале вообще никак не отображались - убрал это сглаживание для RSSI по PWM и MSP, теперь уровень RSSI очень четко реагирует на изменения.
В планах еще добавить 9ю страницу в экранный конфигуратор и вывести туда недостающие настройки, такие как профиль, throttle mid/expo и т.д. Ссылка на мои изменения, если кто хочет попробовать.
Сетап: фриска + 5.8 гГц 200 миливатт.
При включении 4го канала вот такие помехи
Вы писали, что ждете новый приемник для тестов. Скажите, удалось решить проблему?
У меня FrSky тоже глушит видео, использую передатчик 200mw и приемник RC305 с himodel.