Subversion Repositories Projects

Compare Revisions

Ignore whitespace Rev 503 → Rev 507

/C-OSD/trunk/CHANGE.LOG
18,9 → 18,15
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
****************************************************************************/
 
20090612-2100
*spi transfer now struct driven
*lesser spi update rate (caused problems on some strom-slaves)
*voltage gets transfered via spi as well
*menu to switch display of 2nd voltage measured by C-Strom on and off
 
20090604-1350
*bugfix for stats
 
20090604-1330
*possible to choose between different osd-layouts (via menu)
 
/C-OSD/trunk/c-osd.aws
1,0 → 0,0
<AVRWorkspace><IOSettings><CurrentRegisters><USART1><register register="UBRR1L" group="USART1" display="1" locked="0"/></USART1><USART1><register register="UCSR1B" group="USART1" display="1" locked="0"/></USART1><USART1><register register="UCSR1A" group="USART1" display="1" locked="0"/></USART1><USART1><register register="UDR" group="USART1" display="1" locked="0"/></USART1><CPU><register register="OSCCAL" group="CPU" display="1" locked="0"/></CPU><JTAG><register register="OCDR" group="JTAG" display="1" locked="0"/></JTAG><PORTE><register register="PINE" group="PORTE" display="1" locked="0"/></PORTE><PORTE><register register="DDRE" group="PORTE" display="1" locked="0"/></PORTE><PORTE><register register="PORTE" group="PORTE" display="1" locked="0"/></PORTE><ANALOG_COMPARATOR><register register="ACSR" group="ANALOG_COMPARATOR" display="1" locked="0"/></ANALOG_COMPARATOR><USART0><register register="UBRR0L" group="USART0" display="1" locked="0"/></USART0><USART0><register register="UCSR0B" group="USART0" display="1" locked="0"/></USART0><USART0><register register="UCSR0A" group="USART0" display="1" locked="0"/></USART0><USART0><register register="UDR0" group="USART0" display="1" locked="0"/></USART0><SPI><register register="SPCR" group="SPI" display="1" locked="0"/></SPI><SPI><register register="SPSR" group="SPI" display="1" locked="0"/></SPI><SPI><register register="SPDR" group="SPI" display="1" locked="0"/></SPI><PORTD><register register="PIND" group="PORTD" display="1" locked="0"/></PORTD><PORTD><register register="DDRD" group="PORTD" display="1" locked="0"/></PORTD><PORTD><register register="PORTD" group="PORTD" display="1" locked="0"/></PORTD><PORTC><register register="PINC" group="PORTC" display="1" locked="0"/></PORTC><PORTC><register register="DDRC" group="PORTC" display="1" locked="0"/></PORTC><PORTC><register register="PORTC" group="PORTC" display="1" locked="0"/></PORTC><PORTB><register register="PINB" group="PORTB" display="1" locked="0"/></PORTB><PORTB><register register="DDRB" group="PORTB" display="1" locked="0"/></PORTB><PORTB><register register="PORTB" group="PORTB" display="1" locked="0"/></PORTB><PORTA><register register="PINA" group="PORTA" display="1" locked="0"/></PORTA><PORTA><register register="DDRA" group="PORTA" display="1" locked="0"/></PORTA><PORTA><register register="PORTA" group="PORTA" display="1" locked="0"/></PORTA><EEPROM><register register="EECR" group="EEPROM" display="1" locked="0"/></EEPROM><EEPROM><register register="EEDR" group="EEPROM" display="1" locked="0"/></EEPROM><EEPROM><register register="EEAR" group="EEPROM" display="1" locked="0"/></EEPROM><USART0><register register="UBRR0H" group="USART0" display="1" locked="0"/></USART0><USART0><register register="UCSR0C" group="USART0" display="1" locked="0"/></USART0><WATCHDOG><register register="WDTCR" group="WATCHDOG" display="1" locked="0"/></WATCHDOG><TIMER_COUNTER_2><register register="OCR2" group="TIMER_COUNTER_2" display="1" locked="0"/></TIMER_COUNTER_2><TIMER_COUNTER_2><register register="TCNT2" group="TIMER_COUNTER_2" display="1" locked="0"/></TIMER_COUNTER_2><TIMER_COUNTER_1><register register="ICR1" group="TIMER_COUNTER_1" display="1" locked="0"/></TIMER_COUNTER_1><TIMER_COUNTER_2><register register="ASSR" group="TIMER_COUNTER_2" display="1" locked="0"/></TIMER_COUNTER_2><TIMER_COUNTER_2><register register="TCCR2" group="TIMER_COUNTER_2" display="1" locked="0"/></TIMER_COUNTER_2><TIMER_COUNTER_1><register register="OCR1B" group="TIMER_COUNTER_1" display="1" locked="0"/></TIMER_COUNTER_1><TIMER_COUNTER_1><register register="OCR1A" group="TIMER_COUNTER_1" display="1" locked="0"/></TIMER_COUNTER_1><TIMER_COUNTER_1><register register="TCNT1" group="TIMER_COUNTER_1" display="1" locked="0"/></TIMER_COUNTER_1><TIMER_COUNTER_1><register register="TCCR1B" group="TIMER_COUNTER_1" display="1" locked="0"/></TIMER_COUNTER_1><TIMER_COUNTER_1><register register="TCCR1A" group="TIMER_COUNTER_1" display="1" locked="0"/></TIMER_COUNTER_1><CPU><register register="SFIOR" group="CPU" display="1" locked="0"/></CPU><TIMER_COUNTER_0><register register="OCR0" group="TIMER_COUNTER_0" display="1" locked="0"/></TIMER_COUNTER_0><TIMER_COUNTER_0><register register="TCNT0" group="TIMER_COUNTER_0" display="1" locked="0"/></TIMER_COUNTER_0><TIMER_COUNTER_0><register register="TCCR0" group="TIMER_COUNTER_0" display="1" locked="0"/></TIMER_COUNTER_0><CPU><register register="MCUCSR" group="CPU" display="1" locked="0"/></CPU><JTAG><register register="MCUCSR" group="JTAG" display="1" locked="0"/></JTAG><CPU><register register="MCUCR" group="CPU" display="1" locked="0"/></CPU><EXTERNAL_INTERRUPT><register register="MCUCR" group="EXTERNAL_INTERRUPT" display="1" locked="0"/></EXTERNAL_INTERRUPT><CPU><register register="EMCUCR" group="CPU" display="1" locked="0"/></CPU><EXTERNAL_INTERRUPT><register register="EMCUCR" group="EXTERNAL_INTERRUPT" display="1" locked="0"/></EXTERNAL_INTERRUPT><BOOT_LOAD><register register="SPMCR" group="BOOT_LOAD" display="1" locked="0"/></BOOT_LOAD><TIMER_COUNTER_0><register register="TIFR" group="TIMER_COUNTER_0" display="1" locked="0"/></TIMER_COUNTER_0><TIMER_COUNTER_1><register register="TIFR" group="TIMER_COUNTER_1" display="1" locked="0"/></TIMER_COUNTER_1><TIMER_COUNTER_2><register register="TIFR" group="TIMER_COUNTER_2" display="1" locked="0"/></TIMER_COUNTER_2><TIMER_COUNTER_0><register register="TIMSK" group="TIMER_COUNTER_0" display="1" locked="0"/></TIMER_COUNTER_0><TIMER_COUNTER_1><register register="TIMSK" group="TIMER_COUNTER_1" display="1" locked="0"/></TIMER_COUNTER_1><TIMER_COUNTER_2><register register="TIMSK" group="TIMER_COUNTER_2" display="1" locked="0"/></TIMER_COUNTER_2><EXTERNAL_INTERRUPT><register register="GIFR" group="EXTERNAL_INTERRUPT" display="1" locked="0"/></EXTERNAL_INTERRUPT><EXTERNAL_INTERRUPT><register register="GICR" group="EXTERNAL_INTERRUPT" display="1" locked="0"/></EXTERNAL_INTERRUPT><USART1><register register="UBRR1H" group="USART1" display="1" locked="0"/></USART1><USART1><register register="UCSR1C" group="USART1" display="1" locked="0"/></USART1><CPU><register register="SP" group="CPU" display="1" locked="0"/></CPU><CPU><register register="SREG" group="CPU" display="1" locked="0"/></CPU><CPU><register register="CLKPR" group="CPU" display="1" locked="0"/></CPU><EXTERNAL_INTERRUPT><register register="PCMSK0" group="EXTERNAL_INTERRUPT" display="1" locked="0"/></EXTERNAL_INTERRUPT><EXTERNAL_INTERRUPT><register register="PCMSK1" group="EXTERNAL_INTERRUPT" display="1" locked="0"/></EXTERNAL_INTERRUPT><TIMER_COUNTER_3><register register="ETIFR" group="TIMER_COUNTER_3" display="1" locked="0"/></TIMER_COUNTER_3><TIMER_COUNTER_3><register register="ETIMSK" group="TIMER_COUNTER_3" display="1" locked="0"/></TIMER_COUNTER_3><TIMER_COUNTER_3><register register="ICR3" group="TIMER_COUNTER_3" display="1" locked="0"/></TIMER_COUNTER_3><TIMER_COUNTER_3><register register="OCR3B" group="TIMER_COUNTER_3" display="1" locked="0"/></TIMER_COUNTER_3><TIMER_COUNTER_3><register register="OCR3A" group="TIMER_COUNTER_3" display="1" locked="0"/></TIMER_COUNTER_3><TIMER_COUNTER_3><register register="TCNT3" group="TIMER_COUNTER_3" display="1" locked="0"/></TIMER_COUNTER_3><TIMER_COUNTER_3><register register="TCCR3B" group="TIMER_COUNTER_3" display="1" locked="0"/></TIMER_COUNTER_3><TIMER_COUNTER_3><register register="TCCR3A" group="TIMER_COUNTER_3" display="1" locked="0"/></TIMER_COUNTER_3></CurrentRegisters></IOSettings><part name="ATMEGA162"/><Files><File00000 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\main.c" Position="698 169 2122 761" LineCol="108 35" State="Maximized"/><File00001 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\mk-data-structs.h" Position="720 191 2158 775" LineCol="38 0" State="Maximized"/><File00002 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\max7456_software_spi.h" Position="742 213 2180 797" LineCol="40 0" State="Maximized"/><File00003 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\max7456_software_spi.c" Position="764 235 2202 819" LineCol="149 71" State="Maximized"/><File00004 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\usart1.c" Position="786 257 2224 841" LineCol="0 0" State="Maximized"/><File00005 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\usart1.h" Position="808 279 2246 863" LineCol="23 0" State="Maximized"/><File00006 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\characters.c" Position="830 301 2268 885" LineCol="27 0" State="Maximized"/><File00007 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\main.h" Position="852 323 2290 907" LineCol="150 0" State="Maximized"/><File00008 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\osd_helpers.c" Position="874 345 2312 929" LineCol="178 0" State="Maximized"/><File00009 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\osd_helpers.h" Position="896 367 2334 951" LineCol="18 0" State="Maximized"/><File00010 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\osd_ncmode_default.c" Position="918 389 2356 973" LineCol="133 47" State="Maximized"/><File00011 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\osd_fcmode_default.c" Position="694 146 1766 926" LineCol="8 0" State="Maximized"/><File00012 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\config.c" Position="962 433 2400 1017" LineCol="214 77" State="Maximized"/><File00013 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\config.h" Position="698 169 2136 753" LineCol="23 0" State="Maximized"/><File00014 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\spi.c" Position="720 191 2158 775" LineCol="0 0" State="Maximized"/><File00015 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\spi.h" Position="742 213 2180 797" LineCol="0 0" State="Maximized"/><File00016 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\buttons.c" Position="764 235 2202 819" LineCol="0 0" State="Maximized"/><File00017 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\buttons.h" Position="786 257 2224 841" LineCol="0 0" State="Maximized"/><File00018 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\ppm.c" Position="808 279 2246 863" LineCol="24 0" State="Maximized"/><File00019 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\ppm.h" Position="830 301 2268 885" LineCol="18 0" State="Maximized"/><File00020 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\osd_ncmode_minimal.c" Position="852 323 2290 907" LineCol="82 32" State="Maximized"/><File00021 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\osd_ncmode_default.h" Position="874 345 2312 929" LineCol="20 0" State="Maximized"/><File00022 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\osd_ncmode_minimal.h" Position="896 367 2334 951" LineCol="20 0" State="Maximized"/><File00023 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\osd_fcmode_default.h" Position="918 389 2356 973" LineCol="20 0" State="Maximized"/></Files></AVRWorkspace>
<AVRWorkspace><IOSettings><CurrentRegisters><USART1><register register="UBRR1L" group="USART1" display="1" locked="0"/></USART1><USART1><register register="UCSR1B" group="USART1" display="1" locked="0"/></USART1><USART1><register register="UCSR1A" group="USART1" display="1" locked="0"/></USART1><USART1><register register="UDR" group="USART1" display="1" locked="0"/></USART1><CPU><register register="OSCCAL" group="CPU" display="1" locked="0"/></CPU><JTAG><register register="OCDR" group="JTAG" display="1" locked="0"/></JTAG><PORTE><register register="PINE" group="PORTE" display="1" locked="0"/></PORTE><PORTE><register register="DDRE" group="PORTE" display="1" locked="0"/></PORTE><PORTE><register register="PORTE" group="PORTE" display="1" locked="0"/></PORTE><ANALOG_COMPARATOR><register register="ACSR" group="ANALOG_COMPARATOR" display="1" locked="0"/></ANALOG_COMPARATOR><USART0><register register="UBRR0L" group="USART0" display="1" locked="0"/></USART0><USART0><register register="UCSR0B" group="USART0" display="1" locked="0"/></USART0><USART0><register register="UCSR0A" group="USART0" display="1" locked="0"/></USART0><USART0><register register="UDR0" group="USART0" display="1" locked="0"/></USART0><SPI><register register="SPCR" group="SPI" display="1" locked="0"/></SPI><SPI><register register="SPSR" group="SPI" display="1" locked="0"/></SPI><SPI><register register="SPDR" group="SPI" display="1" locked="0"/></SPI><PORTD><register register="PIND" group="PORTD" display="1" locked="0"/></PORTD><PORTD><register register="DDRD" group="PORTD" display="1" locked="0"/></PORTD><PORTD><register register="PORTD" group="PORTD" display="1" locked="0"/></PORTD><PORTC><register register="PINC" group="PORTC" display="1" locked="0"/></PORTC><PORTC><register register="DDRC" group="PORTC" display="1" locked="0"/></PORTC><PORTC><register register="PORTC" group="PORTC" display="1" locked="0"/></PORTC><PORTB><register register="PINB" group="PORTB" display="1" locked="0"/></PORTB><PORTB><register register="DDRB" group="PORTB" display="1" locked="0"/></PORTB><PORTB><register register="PORTB" group="PORTB" display="1" locked="0"/></PORTB><PORTA><register register="PINA" group="PORTA" display="1" locked="0"/></PORTA><PORTA><register register="DDRA" group="PORTA" display="1" locked="0"/></PORTA><PORTA><register register="PORTA" group="PORTA" display="1" locked="0"/></PORTA><EEPROM><register register="EECR" group="EEPROM" display="1" locked="0"/></EEPROM><EEPROM><register register="EEDR" group="EEPROM" display="1" locked="0"/></EEPROM><EEPROM><register register="EEAR" group="EEPROM" display="1" locked="0"/></EEPROM><USART0><register register="UBRR0H" group="USART0" display="1" locked="0"/></USART0><USART0><register register="UCSR0C" group="USART0" display="1" locked="0"/></USART0><WATCHDOG><register register="WDTCR" group="WATCHDOG" display="1" locked="0"/></WATCHDOG><TIMER_COUNTER_2><register register="OCR2" group="TIMER_COUNTER_2" display="1" locked="0"/></TIMER_COUNTER_2><TIMER_COUNTER_2><register register="TCNT2" group="TIMER_COUNTER_2" display="1" locked="0"/></TIMER_COUNTER_2><TIMER_COUNTER_1><register register="ICR1" group="TIMER_COUNTER_1" display="1" locked="0"/></TIMER_COUNTER_1><TIMER_COUNTER_2><register register="ASSR" group="TIMER_COUNTER_2" display="1" locked="0"/></TIMER_COUNTER_2><TIMER_COUNTER_2><register register="TCCR2" group="TIMER_COUNTER_2" display="1" locked="0"/></TIMER_COUNTER_2><TIMER_COUNTER_1><register register="OCR1B" group="TIMER_COUNTER_1" display="1" locked="0"/></TIMER_COUNTER_1><TIMER_COUNTER_1><register register="OCR1A" group="TIMER_COUNTER_1" display="1" locked="0"/></TIMER_COUNTER_1><TIMER_COUNTER_1><register register="TCNT1" group="TIMER_COUNTER_1" display="1" locked="0"/></TIMER_COUNTER_1><TIMER_COUNTER_1><register register="TCCR1B" group="TIMER_COUNTER_1" display="1" locked="0"/></TIMER_COUNTER_1><TIMER_COUNTER_1><register register="TCCR1A" group="TIMER_COUNTER_1" display="1" locked="0"/></TIMER_COUNTER_1><CPU><register register="SFIOR" group="CPU" display="1" locked="0"/></CPU><TIMER_COUNTER_0><register register="OCR0" group="TIMER_COUNTER_0" display="1" locked="0"/></TIMER_COUNTER_0><TIMER_COUNTER_0><register register="TCNT0" group="TIMER_COUNTER_0" display="1" locked="0"/></TIMER_COUNTER_0><TIMER_COUNTER_0><register register="TCCR0" group="TIMER_COUNTER_0" display="1" locked="0"/></TIMER_COUNTER_0><CPU><register register="MCUCSR" group="CPU" display="1" locked="0"/></CPU><JTAG><register register="MCUCSR" group="JTAG" display="1" locked="0"/></JTAG><CPU><register register="MCUCR" group="CPU" display="1" locked="0"/></CPU><EXTERNAL_INTERRUPT><register register="MCUCR" group="EXTERNAL_INTERRUPT" display="1" locked="0"/></EXTERNAL_INTERRUPT><CPU><register register="EMCUCR" group="CPU" display="1" locked="0"/></CPU><EXTERNAL_INTERRUPT><register register="EMCUCR" group="EXTERNAL_INTERRUPT" display="1" locked="0"/></EXTERNAL_INTERRUPT><BOOT_LOAD><register register="SPMCR" group="BOOT_LOAD" display="1" locked="0"/></BOOT_LOAD><TIMER_COUNTER_0><register register="TIFR" group="TIMER_COUNTER_0" display="1" locked="0"/></TIMER_COUNTER_0><TIMER_COUNTER_1><register register="TIFR" group="TIMER_COUNTER_1" display="1" locked="0"/></TIMER_COUNTER_1><TIMER_COUNTER_2><register register="TIFR" group="TIMER_COUNTER_2" display="1" locked="0"/></TIMER_COUNTER_2><TIMER_COUNTER_0><register register="TIMSK" group="TIMER_COUNTER_0" display="1" locked="0"/></TIMER_COUNTER_0><TIMER_COUNTER_1><register register="TIMSK" group="TIMER_COUNTER_1" display="1" locked="0"/></TIMER_COUNTER_1><TIMER_COUNTER_2><register register="TIMSK" group="TIMER_COUNTER_2" display="1" locked="0"/></TIMER_COUNTER_2><EXTERNAL_INTERRUPT><register register="GIFR" group="EXTERNAL_INTERRUPT" display="1" locked="0"/></EXTERNAL_INTERRUPT><EXTERNAL_INTERRUPT><register register="GICR" group="EXTERNAL_INTERRUPT" display="1" locked="0"/></EXTERNAL_INTERRUPT><USART1><register register="UBRR1H" group="USART1" display="1" locked="0"/></USART1><USART1><register register="UCSR1C" group="USART1" display="1" locked="0"/></USART1><CPU><register register="SP" group="CPU" display="1" locked="0"/></CPU><CPU><register register="SREG" group="CPU" display="1" locked="0"/></CPU><CPU><register register="CLKPR" group="CPU" display="1" locked="0"/></CPU><EXTERNAL_INTERRUPT><register register="PCMSK0" group="EXTERNAL_INTERRUPT" display="1" locked="0"/></EXTERNAL_INTERRUPT><EXTERNAL_INTERRUPT><register register="PCMSK1" group="EXTERNAL_INTERRUPT" display="1" locked="0"/></EXTERNAL_INTERRUPT><TIMER_COUNTER_3><register register="ETIFR" group="TIMER_COUNTER_3" display="1" locked="0"/></TIMER_COUNTER_3><TIMER_COUNTER_3><register register="ETIMSK" group="TIMER_COUNTER_3" display="1" locked="0"/></TIMER_COUNTER_3><TIMER_COUNTER_3><register register="ICR3" group="TIMER_COUNTER_3" display="1" locked="0"/></TIMER_COUNTER_3><TIMER_COUNTER_3><register register="OCR3B" group="TIMER_COUNTER_3" display="1" locked="0"/></TIMER_COUNTER_3><TIMER_COUNTER_3><register register="OCR3A" group="TIMER_COUNTER_3" display="1" locked="0"/></TIMER_COUNTER_3><TIMER_COUNTER_3><register register="TCNT3" group="TIMER_COUNTER_3" display="1" locked="0"/></TIMER_COUNTER_3><TIMER_COUNTER_3><register register="TCCR3B" group="TIMER_COUNTER_3" display="1" locked="0"/></TIMER_COUNTER_3><TIMER_COUNTER_3><register register="TCCR3A" group="TIMER_COUNTER_3" display="1" locked="0"/></TIMER_COUNTER_3></CurrentRegisters></IOSettings><part name="ATMEGA162"/><Files><File00000 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\main.c" Position="768 160 1594 688" LineCol="177 16" State="Maximized"/><File00001 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\mk-data-structs.h" Position="790 182 1608 680" LineCol="44 0" State="Maximized"/><File00002 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\max7456_software_spi.h" Position="812 204 1630 702" LineCol="48 0" State="Maximized"/><File00003 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\max7456_software_spi.c" Position="834 226 1652 724" LineCol="81 0" State="Maximized"/><File00004 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\usart1.c" Position="856 248 1674 746" LineCol="118 0" State="Maximized"/><File00005 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\usart1.h" Position="878 270 1696 768" LineCol="23 0" State="Maximized"/><File00006 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\characters.c" Position="900 292 1718 790" LineCol="27 0" State="Maximized"/><File00007 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\main.h" Position="922 314 1740 812" LineCol="73 27" State="Maximized"/><File00008 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\osd_helpers.c" Position="944 336 1762 834" LineCol="178 0" State="Maximized"/><File00009 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\osd_helpers.h" Position="966 358 1784 856" LineCol="18 0" State="Maximized"/><File00010 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\osd_ncmode_default.c" Position="988 380 1806 878" LineCol="39 0" State="Maximized"/><File00011 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\osd_fcmode_default.c" Position="764 137 1836 908" LineCol="38 13" State="Maximized"/><File00012 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\config.c" Position="768 160 1586 658" LineCol="213 43" State="Maximized"/><File00013 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\config.h" Position="790 182 1608 680" LineCol="23 0" State="Maximized"/><File00014 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\spi.c" Position="812 204 1630 702" LineCol="29 0" State="Maximized"/><File00015 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\spi.h" Position="834 226 1652 724" LineCol="26 0" State="Maximized"/><File00016 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\buttons.c" Position="856 248 1674 746" LineCol="0 0" State="Maximized"/><File00017 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\buttons.h" Position="878 270 1696 768" LineCol="0 0" State="Maximized"/><File00018 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\ppm.c" Position="900 292 1718 790" LineCol="24 0" State="Maximized"/><File00019 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\ppm.h" Position="922 314 1740 812" LineCol="18 0" State="Maximized"/><File00020 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\osd_ncmode_minimal.c" Position="944 336 1762 834" LineCol="82 0" State="Maximized"/><File00021 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\osd_ncmode_default.h" Position="966 358 1784 856" LineCol="20 0" State="Maximized"/><File00022 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\osd_ncmode_minimal.h" Position="988 380 1806 878" LineCol="20 0" State="Maximized"/><File00023 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\osd_fcmode_default.h" Position="1010 402 1828 900" LineCol="20 0" State="Maximized"/></Files></AVRWorkspace>
/C-OSD/trunk/config.c
67,8 → 67,8
const char menu_item3[] PROGMEM = "Big Vario bar";
const char menu_item4[] PROGMEM = "Statistics";
const char menu_item5[] PROGMEM = "Warnings"; // TODO: do it!
const char menu_item6[] PROGMEM = "Reset uptime";
const char menu_item7[] PROGMEM = "Request OSD-data";
const char menu_item6[] PROGMEM = "Voltage by C-Strom";
const char menu_item7[] PROGMEM = "Reset uptime";
const char menu_item8[] PROGMEM = "Display Mode";
const char menu_item9[] PROGMEM = "Save config";
const char menu_item10[] PROGMEM = "EXIT";
211,6 → 211,11
} else {
write_ascii_string_pgm(23, 7, OFF);
}
if (COSD_FLAGS & COSD_FLAG_STROMVOLT) {
write_ascii_string_pgm(23, 8, ON);
} else {
write_ascii_string_pgm(23, 8, OFF);
}
//write_ndigit_number_u(23, 10, COSD_DISPLAYMODE, 10, 0);
write_ascii_string_pgm(18, 10, (const char *) (pgm_read_word(&(mode->desc))));
300,23 → 305,14
COSD_FLAGS ^= COSD_FLAG_WARNINGS;
config_menu_drawings(chosen);
break;
case 6: // reset uptime
case 6: // 2nd voltage by c-strom
COSD_FLAGS ^= COSD_FLAG_STROMVOLT;
config_menu_drawings(chosen);
break;
case 7: // reset uptime
uptime = 0;
config_menu_doclick(chosen, menu);
break;
case 7: // re-request OSD data
#if FCONLY
// request data ever 100ms from FC;
usart1_request_mk_data(0, 'd', 100);
#else
// request OSD Data from NC every 100ms
usart1_request_mk_data(1, 'o', 100);
 
// and disable debug...
usart1_request_mk_data(0, 'd', 0);
#endif
config_menu_doclick(chosen, menu);
break;
case 8: // change mode
#if FCONLY
COSD_DISPLAYMODE = (COSD_DISPLAYMODE + 1) % (sizeof(fcdisplaymodes) / sizeof(displaymode_t));
/C-OSD/trunk/main.c
160,6 → 160,8
* timer stuff
* ##########################################################################*/
 
static uint8_t delay_spi = 0;
 
/**
* timer kicks in every 1000uS ^= 1ms
*/
170,8 → 172,12
seconds_since_last_data++;
}
// in case there is still some spi data to send do it now
// delay to give the slave some time to compute values
if (spi_ready && icnt) {
SPDR = *iptr;
if (!delay_spi--) {
delay_spi = 8;
spi_send_next();
}
}
}
#endif // ends !(ALLCHARSDEBUG|(WRITECHARS != -1))#endif // ends !(ALLCHARSDEBUG|(WRITECHARS != -1))
319,18 → 325,11
// in case SPI is ready and there is nothing to send right now
if (!icnt && spi_ready) {
// correct transfer ends with d (done)
if (spi_cmd_buffer[0] == 'd') {
ampere = spi_cmd_buffer[1] << 8;
ampere |= spi_cmd_buffer[2];
ampere_wasted = spi_cmd_buffer[3];
ampere_wasted = ampere_wasted << 8;
ampere_wasted |= spi_cmd_buffer[4];
ampere_wasted = ampere_wasted << 8;
ampere_wasted |= spi_cmd_buffer[5];
ampere_wasted = ampere_wasted << 8;
ampere_wasted |= spi_cmd_buffer[6];
//ampere = *((int16_t *) spi_cmd_buffer + 1);
//ampere_wasted = *((int32_t *) &spi_cmd_buffer + 3);
if (SPI_buffer.buffer.chk == 'd') {
ampere = SPI_buffer.data.ampere;
ampere_wasted = SPI_buffer.data.mah;
s_volt = SPI_buffer.data.volt;
 
// if this is the first receival we should print the small A
if (!(COSD_FLAGS2 & COSD_FLAG_STROMREC)) {
clear();
338,20 → 337,11
// update this flag
COSD_FLAGS2 |= COSD_FLAG_STROMREC;
}
//write_ascii_char(8+4*30, 'v'); // valid
} else {
// update flags
COSD_FLAGS2 &= ~COSD_FLAG_STROMREC;
//write_ascii_char(8+4*30, 'i'); // invalid
}
spi_cmd_buffer[0] = 'A';
spi_cmd_buffer[1] = 'B';
spi_cmd_buffer[2] = 'C';
spi_cmd_buffer[3] = 'D';
spi_cmd_buffer[4] = 'E';
spi_cmd_buffer[5] = 'F';
spi_cmd_buffer[6] = 'G';
StartTransfer((unsigned char*) spi_cmd_buffer, 7);
StartTransfer(9);
}
if (rxd_buffer_locked) {
#if FCONLY
/C-OSD/trunk/main.h
71,6 → 71,7
#define COSD_FLAG_BIGVARIO 8
#define COSD_FLAG_STATS 16
#define COSD_FLAG_WARNINGS 32
#define COSD_FLAG_STROMVOLT 64
 
/* ##########################################################################
* FLAGS only usable during runtime (not saved)
102,9 → 103,9
* ##########################################################################*/
extern volatile uint16_t icnt;
extern volatile unsigned char * iptr;
extern volatile unsigned char spi_cmd_buffer[];
extern volatile uint8_t spi_cmd_buffer[];
extern volatile uint8_t spi_ready;
extern int16_t ampere, max_ampere;
extern int16_t ampere, max_ampere, s_volt;
extern int32_t ampere_wasted;
 
/* ##########################################################################
/C-OSD/trunk/osd_fcmode_default.c
35,6 → 35,9
if (COSD_FLAGS2 & COSD_FLAG_STROMREC) {
write_char_xy(7, bottom_line - 1, 0x9F); // small A
write_char_xy(14, bottom_line - 1, 0xB5); // mah
if (COSD_FLAGS & COSD_FLAG_STROMVOLT) {
write_char_xy(21, bottom_line - 1, 0x9E); // small V
}
}
COSD_FLAGS2 |= COSD_ICONS_WRITTEN;
}
66,6 → 69,9
//write_ndigit_number_s(3, bottom_line - 1, ampere, 1000, 0);
write_ndigit_number_u_10th(3, bottom_line - 1, ampere / 10, 100, 0);
write_ndigit_number_s(10, bottom_line - 1, ampere_wasted / 10, 1000, 0);
if (COSD_FLAGS & COSD_FLAG_STROMVOLT) {
write_ndigit_number_u_10th(17, bottom_line - 1, s_volt, 100, 0);
}
}
 
draw_battery(2, bottom_line, min_voltage, debugData.Analog[9], max_voltage);
/C-OSD/trunk/osd_ncmode_default.c
40,6 → 40,9
if (COSD_FLAGS2 & COSD_FLAG_STROMREC) {
write_char_xy(7, bottom_line - 1, 0x9F); // small A
write_char_xy(14, bottom_line - 1, 0xB5); // mah
if (COSD_FLAGS & COSD_FLAG_STROMVOLT) {
write_char_xy(21, bottom_line - 1, 0x9E); // small V
}
}
write_char_xy(14, bottom_line, 0xD1); // on clock
write_char_xy(21, bottom_line, 0xD2); // fly clock
155,6 → 158,9
//write_ndigit_number_s(3, bottom_line - 1, ampere, 1000, 0);
write_ndigit_number_u_10th(3, bottom_line - 1, ampere / 10, 100, 0);
write_ndigit_number_s(10, bottom_line - 1, ampere_wasted / 10, 1000, 0);
if (COSD_FLAGS & COSD_FLAG_STROMVOLT) {
write_ndigit_number_u_10th(17, bottom_line - 1, s_volt, 100, 0);
}
}
 
// bottom line
/C-OSD/trunk/spi.c
24,10 → 24,10
#include "main.h"
 
volatile uint16_t icnt = 0;
volatile unsigned char * iptr;
volatile unsigned char spi_cmd_buffer[8];
volatile uint8_t request_count = 0;
volatile uint8_t spi_ready = 1;
int16_t ampere = 0, max_ampere = 0;
volatile union SPI_buffer_t SPI_buffer;
int16_t ampere = 0, max_ampere = 0, s_volt;
int32_t ampere_wasted = 0;
 
#define INT0_HIGH PORTD |= (1 << PD2);
53,9 → 53,13
* SPI interrupt handler
*/
ISR(SPI_STC_vect) {
*iptr++ = SPDR; // safe received byte to buffer
icnt--; // dec length
if (icnt) {
if (request_count == 0) {
SPI_buffer.buffer.chk = SPDR; // firs char received is check byte from last transfer
} else {
SPI_buffer.buffer.c[request_count - 1] = SPDR; // safe received byte to buffer
}
request_count++;
if (--icnt) {
//SPDR = *iptr; // send next byte
spi_ready = 1; // we _should_ send later because the slave needs more time
} else {
72,15 → 76,24
}
 
/**
* start a new transfer of <data> with length <len>
* start a new transfer with length <len>
*/
void StartTransfer(unsigned char *data, uint16_t len) {
void StartTransfer(uint16_t len) {
INT0_LOW // /SS LOW ^= SS HIGH ^= slave should listen
 
// this is a new request
request_count = 0;
 
// set up pointer and length for interrupt handler
iptr = data;
icnt = len;
 
SPCR |= _BV(SPIE); // enable spi interrupt
SPDR = *iptr; // start transfer by first bye
SPDR = 'A'; // start transfer by first command char
}
 
/**
* send next command through spi
*/
void spi_send_next() {
SPDR = 'A' + request_count;
}
/C-OSD/trunk/spi.h
18,6 → 18,27
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
****************************************************************************/
 
/*
* structs 'n union for easy SPI transfer
*/
typedef struct {
int16_t ampere;
int32_t mah;
int16_t volt;
} __attribute__((packed)) SPI_strom_data_t;
 
typedef struct {
uint8_t c[10];
uint8_t chk;
} __attribute__((packed)) SPI_char_buffer_t;
 
union SPI_buffer_t {
SPI_strom_data_t data;
SPI_char_buffer_t buffer;
};
 
volatile union SPI_buffer_t SPI_buffer;
 
/**
* SPI interrupt handler
*/
34,6 → 55,11
int TransferIsBusy(void);
 
/**
* start a new transfer of <data> with length <len>
* start a new transfer with length <len>
*/
void StartTransfer(unsigned char *, uint16_t);
void StartTransfer(uint16_t);
 
/**
* send next command through spi
*/
void spi_send_next();