Hi, I have recently updated my MinimOSD (3DR version 1.1) to the latest OSDExtra firmware from github, and started to install it on my Pixhawk (AC3.3.3).
I have the solder jumpers on the board bridged so I can power my camera/video tx seperately.
At first I wasnt getting any data through at all, nor was I able to switch screens (3 pos switch), then I changed some settings in MP in the full tree:
SR2_PARAMS=0 (Didn’t Change)
SR2_RAW_CTRL=2 (Didn’t Change)
And confirmed that:
Now I can see some data updating on the screen, but can not switch the screen.
On boot, and with the switch in POS1, the OSD starts off blank, then as I toggle through the switch positions, every position stays as screen 1. It doesn’t look like it’s changing or switching after that, my 2 OSD screens are very different so I can tell if they were changing.
So I confirm that my Channel 7 3-way switch is working correctly by checking in MP:
Still no luck.
Does anybody have any further info for me to get the screen switching to work?
The original firmware programed the port as follows:
MAV_DATA_STREAM_RAW_SENSORS = 2 //SR2_RAW_SENS
MAV_DATA_STREAM_EXTENDED_STATUS = 2 //SR2_EXT_STAT
MAV_DATA_STREAM_RC_CHANNELS = 5 //SR2_RC_CHAN
MAV_DATA_STREAM_POSITION = 2 //SR2_POSITION
MAV_DATA_STREAM_EXTRA1 = 5 //SR2_EXTRA1
MAV_DATA_STREAM_EXTRA2 = 2 //SR2_EXTRA2
The new version expects that to be done manually and does not program the port.
It looks like you have done that so don’t know what your issue is.
I thought the page switch function only worked on channel 8 (even though it has various options).
Have you tried using different channels to test it?
I haven’t tried changing the screen switch channel to CH8, will give it a go tomorrow…
Alrighty, I configured the OSD switching to CH8, and still getting no change.
Is there anybody at all that is on AC3.3.3 with OSD switching working?
Ok, I took a peek at the OSD code and it looks like you can select which RC channel you want to use to switch panels:
if(ch_toggle == 5) ch_raw = osd_chan5_raw;
else if(ch_toggle == 6) ch_raw = osd_chan6_raw;
else if(ch_toggle == 7) ch_raw = osd_chan7_raw;
else if(ch_toggle == 8) ch_raw = osd_chan8_raw;
The OSD channel data is coming from mavlink message: MAVLINK_MSG_ID_RC_CHANNELS_RAW.
There is some other logic there which checks a number of values to switch between 0 and 1.
As per this file https://github.com/diydrones/MinimOSD-Extra/blob/master/MinimOsd-Extra_Copter/OSD_Panels.ino
if(ch_toggle == 5) ch_raw = chan5_raw;
else if(ch_toggle == 6) ch_raw = chan6_raw;
else if(ch_toggle == 7) ch_raw = chan7_raw;
else if(ch_toggle == 8) ch_raw = chan8_raw;
But then when I export the parameter file from the OSD config, it has this line
Should that say
Or should the above mentioned ino file read the way you have it?
Note the “osd” is present in your code and not the one I referenced to on git hub.
I think that
osd_chan8_raw is the old mavlink msg. It’s in the “Beta” version of the OSD firmware, but the date on that is 4 years ago.
So I think the way i currently have it
else if(ch_toggle == 8) ch_raw = chan8_raw; is the correct way.