/C-OSD/trunk/CHANGE.LOG |
---|
18,6 → 18,10 |
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * |
****************************************************************************/ |
20100419-0020 |
*fixed bug causing PPM-based display on/off to fail |
*fixed display of AGRESSiVA-horizion during motor run |
20100412-2125 |
*added mph/ft (two new chars added, reflash characters if you need ft/mph) |
*AGRESSiVA-horizion now switchable via menu |
/C-OSD/trunk/c-osd.aws |
---|
1,0 → 0,0 |
<AVRWorkspace><IOSettings><CurrentRegisters/></IOSettings><part name="ATMEGA162"/><Files><File00000 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\main.c" Position="1015 148 1700 605" LineCol="130 0" State="Maximized"/><File00001 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\mk-data-structs.h" Position="1037 170 1714 597" LineCol="68 0" State="Maximized"/><File00002 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\max7456_software_spi.h" Position="1059 192 1736 619" LineCol="0 0" State="Maximized"/><File00003 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\max7456_software_spi.c" Position="1081 214 1758 641" LineCol="182 0" State="Maximized"/><File00004 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\usart1.c" Position="1103 236 1780 663" LineCol="117 0" State="Maximized"/><File00005 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\usart1.h" Position="1125 258 1802 685" LineCol="0 0" State="Maximized"/><File00006 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\characters.c" Position="1147 280 1824 707" LineCol="2924 13" State="Maximized"/><File00007 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\main.h" Position="989 103 1925 759" LineCol="50 23" State="Maximized"/><File00008 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\osd_helpers.c" Position="1191 324 1868 751" LineCol="206 0" State="Maximized"/><File00009 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\osd_helpers.h" Position="993 126 1670 553" LineCol="70 38" State="Maximized"/><File00010 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\osd_ncmode_default.c" Position="1015 148 1692 575" LineCol="204 2" State="Maximized"/><File00011 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\osd_fcmode_default.c" Position="1037 170 1714 597" LineCol="104 0" State="Maximized"/><File00012 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\config.c" Position="1059 192 1736 619" LineCol="324 20" State="Maximized"/><File00013 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\config.h" Position="1081 214 1758 641" LineCol="25 16" State="Maximized"/><File00014 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\spi.c" Position="1103 236 1780 663" LineCol="0 0" State="Maximized"/><File00015 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\spi.h" Position="1125 258 1802 685" LineCol="0 0" State="Maximized"/><File00016 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\buttons.c" Position="1147 280 1824 707" LineCol="0 0" State="Maximized"/><File00017 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\buttons.h" Position="1169 302 1846 729" LineCol="0 0" State="Maximized"/><File00018 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\ppm.c" Position="1191 324 1868 751" LineCol="0 0" State="Maximized"/><File00019 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\ppm.h" Position="993 126 1670 553" LineCol="0 0" State="Maximized"/><File00020 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\osd_ncmode_minimal.c" Position="1015 148 1692 575" LineCol="171 0" State="Maximized"/><File00021 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\osd_ncmode_default.h" Position="1037 170 1714 597" LineCol="0 0" State="Maximized"/><File00022 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\osd_ncmode_minimal.h" Position="1059 192 1736 619" LineCol="0 0" State="Maximized"/><File00023 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\osd_fcmode_default.h" Position="1081 214 1758 641" LineCol="7 0" State="Maximized"/><File00024 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\characters.h" Position="1103 236 1780 663" LineCol="24 0" State="Maximized"/><File00025 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\osd_fcmode_jopl.c" Position="1125 258 1802 685" LineCol="28 0" State="Maximized"/><File00026 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\default\Makefile" Position="1147 280 1824 707" LineCol="11 20" State="Maximized"/></Files></AVRWorkspace> |
<AVRWorkspace><IOSettings><CurrentRegisters/></IOSettings><part name="ATMEGA162"/><Files><File00000 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\main.c" Position="908 133 1642 590" LineCol="397 5" State="Maximized"/><File00001 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\mk-data-structs.h" Position="930 155 1656 582" LineCol="68 0" State="Maximized"/><File00002 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\max7456_software_spi.h" Position="952 177 1678 604" LineCol="0 0" State="Maximized"/><File00003 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\max7456_software_spi.c" Position="974 199 1700 626" LineCol="92 0" State="Maximized"/><File00004 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\usart1.c" Position="996 221 1722 648" LineCol="117 0" State="Maximized"/><File00005 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\usart1.h" Position="1018 243 1744 670" LineCol="0 0" State="Maximized"/><File00006 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\characters.c" Position="1040 265 1766 692" LineCol="2924 0" State="Maximized"/><File00007 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\main.h" Position="1062 287 1788 714" LineCol="146 24" State="Maximized"/><File00008 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\osd_helpers.c" Position="1084 309 1810 736" LineCol="215 0" State="Maximized"/><File00009 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\osd_helpers.h" Position="1106 331 1832 758" LineCol="70 0" State="Maximized"/><File00010 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\osd_ncmode_default.c" Position="908 133 1634 560" LineCol="32 47" State="Maximized"/><File00011 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\osd_fcmode_default.c" Position="930 155 1656 582" LineCol="104 0" State="Maximized"/><File00012 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\config.c" Position="904 110 1840 766" LineCol="337 45" State="Maximized"/><File00013 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\config.h" Position="974 199 1700 626" LineCol="25 0" State="Maximized"/><File00014 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\spi.c" Position="996 221 1722 648" LineCol="0 0" State="Maximized"/><File00015 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\spi.h" Position="1018 243 1744 670" LineCol="0 0" State="Maximized"/><File00016 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\buttons.c" Position="1040 265 1766 692" LineCol="0 0" State="Maximized"/><File00017 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\buttons.h" Position="1062 287 1788 714" LineCol="0 0" State="Maximized"/><File00018 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\ppm.c" Position="1084 309 1810 736" LineCol="43 3" State="Maximized"/><File00019 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\ppm.h" Position="1106 331 1832 758" LineCol="0 0" State="Maximized"/><File00020 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\osd_ncmode_minimal.c" Position="908 133 1634 560" LineCol="171 0" State="Maximized"/><File00021 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\osd_ncmode_default.h" Position="930 155 1656 582" LineCol="0 0" State="Maximized"/><File00022 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\osd_ncmode_minimal.h" Position="952 177 1678 604" LineCol="0 0" State="Maximized"/><File00023 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\osd_fcmode_default.h" Position="974 199 1700 626" LineCol="7 0" State="Maximized"/><File00024 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\characters.h" Position="996 221 1722 648" LineCol="24 0" State="Maximized"/><File00025 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\osd_fcmode_jopl.c" Position="1018 243 1744 670" LineCol="28 0" State="Maximized"/><File00026 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\default\Makefile" Position="1040 265 1766 692" LineCol="16 59" State="Maximized"/></Files></AVRWorkspace> |
/C-OSD/trunk/config.c |
---|
23,6 → 23,7 |
#include <avr/pgmspace.h> |
#include <avr/interrupt.h> |
#include <util/delay.h> |
//#include <avr/delay.h> |
#include "max7456_software_spi.h" |
#include "config.h" |
#include "main.h" |
82,6 → 83,7 |
eeprom_write_byte(&ee_COSD_DISPLAYMODE, COSD_DISPLAYMODE); |
} |
/** |
* auto config some stuff on startup, currently only battery cells |
*/ |
164,7 → 166,7 |
//usart1_request_mk_data(1, 'o', 100); |
#endif |
_delay_ms(3000); |
_delay_ms(3000); |
clear(); |
// update flags to paint display again because of clear |
COSD_FLAGS_RUNTIME &= ~COSD_ICONS_WRITTEN; |
/C-OSD/trunk/osd_helpers.c |
---|
185,14 → 185,14 |
* ##########################################################################*/ |
// draw routine |
int draw_noodles(int8_t pos_x, int8_t pos_y, int8_t num, int8_t old_num) { |
char noodle[5] = {0x78, 0x79, 0x7A, 0x7B, 0x7C}; |
int8_t line,car; |
const char noodle[5] = {0x78, 0x79, 0x7A, 0x7B, 0x7C}; |
int8_t line, car; |
line = num / 5; |
car = num - (line * 5); |
if (num != old_num) { |
write_char_xy(15 - pos_x , pos_y + (old_num), 0); |
} |
} |
if (num < 0) {car = -1* car; car = 4 - car; line--; num = num - 5;} |
write_char_xy(15 - pos_x , pos_y + line, noodle[car]); |
211,8 → 211,8 |
uint8_t center_x = 15; |
uint8_t center_y = lastline - firstline; |
center_y = 7; |
write_char_xy(center_x - 7 ,center_y,226); |
write_char_xy(center_x + 6 ,center_y,226); |
write_char_xy(center_x - 7 ,center_y,226); // left bar |
write_char_xy(center_x + 6 ,center_y,226); // right bar |
#if FCONLY |
229,7 → 229,7 |
//write_ndigit_number_u (0 , 5 , ticy ,3, 1); |
//write_ndigit_number_u (0 , 6 , ticx ,3, 1); |
if ((ticy != old_ticy) || (ticx != old_ticx)) { |
//if ((ticy != old_ticy) || (ticx != old_ticx)) { |
old1 = draw_noodles( 4, 3, (ticy / 2) + 20 + ticx, old1); |
old2 = draw_noodles( 3, 3, (ticy / 3) + 20 + ticx, old2); |
old3 = draw_noodles( 2, 3, (ticy / 6) + 20 + ticx, old3); |
238,7 → 238,7 |
old6 = draw_noodles( - 2, 3, -(ticy / 3) + 20 + ticx, old6); |
old7 = draw_noodles( - 1, 3, -(ticy / 6) + 20 + ticx, old7); |
old8 = draw_noodles( 0, 3, -(ticy / 14) + 20 + ticx, old8); |
} |
//} |
// update old vars |
old_ticy = ticy; |
old_ticx = ticx; |
257,7 → 257,7 |
* from line <firstline> to <listlines> for given <nick> and <roll> values |
*/ |
void draw_artificial_horizon(uint8_t firstline, uint8_t lastline, int16_t nick, int16_t roll) { |
char noodle[5] = {225, 225, 226, 227, 227}; |
const char noodle[5] = {225, 225, 226, 227, 227}; |
uint8_t center_x = 15; |
uint8_t center_y = lastline - firstline; |
center_y = 7; |
/C-OSD/trunk/osd_ncmode_default.c |
---|
153,12 → 153,16 |
// update flags to paint display again if needed |
COSD_FLAGS_RUNTIME &= ~COSD_ICONS_WRITTEN; |
} |
if (COSD_FLAGS_MODES & COSD_FLAG_ARTHORIZON) { |
if (COSD_FLAGS_RUNTIME & COSD_FLAG_STROMREC) { |
draw_artificial_horizon(top_line + 2, bottom_line - 2, naviData.AngleNick, naviData.AngleRoll); |
if (COSD_FLAGS_MODES & COSD_FLAG_ARTHORIZON) { // horizon |
uint8_t horizon_bottom = bottom_line - 1; |
if ((COSD_FLAGS_RUNTIME & COSD_FLAG_STROMREC) || (COSD_FLAGS_MODES & COSD_FLAG_FCCURRENT)) { |
horizon_bottom--; |
} |
if (COSD_FLAGS_MODES & COSD_FLAG_AGGRHORIZON) { |
draw_agressiva_artificial_horizon(top_line + 2, horizon_bottom, naviData.AngleNick, naviData.AngleRoll); |
} else { |
draw_artificial_horizon(top_line + 2, bottom_line - 1, naviData.AngleNick, naviData.AngleRoll); |
} |
draw_artificial_horizon(top_line + 2, horizon_bottom, naviData.AngleNick, naviData.AngleRoll); |
} |
} |
// motors are on, assume we were/are flying |
COSD_FLAGS_RUNTIME |= COSD_WASFLYING; |
/C-OSD/trunk/ppm.c |
---|
54,19 → 54,24 |
ppm = TCNT1 - old_timer1; |
ppm -= 256; |
if (ppm < 128) { // we want HUD |
COSD_FLAGS_CONFIG |= COSD_FLAG_HUD; |
if (!(COSD_FLAGS_MODES & COSD_FLAG_HUD)) { |
COSD_FLAGS_RUNTIME &= ~COSD_ICONS_WRITTEN; |
} |
COSD_FLAGS_MODES |= COSD_FLAG_HUD; |
} else { // we do not want hud |
if (COSD_FLAGS_CONFIG & COSD_FLAG_HUD) { |
if (COSD_FLAGS_MODES & COSD_FLAG_HUD) { |
clear(); |
} |
COSD_FLAGS_CONFIG &= ~COSD_FLAG_HUD; |
COSD_FLAGS_MODES &= ~COSD_FLAG_HUD; |
} |
} |
EMCUCR |= (1<<ISC2); // next one is rising |
} |
//write_ndigit_number_u(2, 2, ppm, 1000, 0); // debug |
//write_ndigit_number_u(2, 3, valid_ppm_to_go, 100, 0); // debug |
//write_ndigit_number_u(2, 4, COSD_FLAGS, 100, 0); // debug |
//write_ndigit_number_u(2, 5, ppm, 1000, 0); // debug |
//write_ndigit_number_u(2, 6, valid_ppm_to_go, 100, 0); // debug |
//write_ndigit_number_u(2, 7, COSD_FLAGS_CONFIG, 100, 0); // debug |
PORTC ^= (1 << PC3); |
uptime = ppm; |
} |
#endif |