0,0 → 1,221 |
/***************************************************************************** |
* Copyright (C) 2008 Thomas Kaiser, thomas@ft-fanpage.de * |
* Copyright (C) 2009 Peter "woggle" Mack, mac@denich.net * |
* Copyright (C) 2011 Christian "Cebra" Brandtner, brandtner@brandtner.net * |
* Copyright (C) 2011 Harald Bongartz * |
* * |
* This program is free software; you can redistribute it and/or modify * |
* it under the terms of the GNU General Public License as published by * |
* the Free Software Foundation; either version 2 of the License. * |
* * |
* This program is distributed in the hope that it will be useful, * |
* but WITHOUT ANY WARRANTY; without even the implied warranty of * |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * |
* GNU General Public License for more details. * |
* * |
* You should have received a copy of the GNU General Public License * |
* along with this program; if not, write to the * |
* Free Software Foundation, Inc., * |
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * |
* * |
* * |
* Credits to: * |
* Holger Buss & Ingo Busker from mikrokopter.de for the MK project + SVN * |
* http://www.mikrokopter.de * |
* Gregor "killagreg" Stobrawa for his version of the MK code * |
* Thomas Kaiser "thkais" for the original project. See * |
* http://www.ft-fanpage.de/mikrokopter/ * |
* http://forum.mikrokopter.de/topic-4061-1.html * |
* Claas Anders "CaScAdE" Rathje for providing the font and his C-OSD code * |
* http://www.mylifesucks.de/oss/c-osd/ * |
* Harald Bongartz "HaraldB" for providing his Ideas and Code for usibility* |
*****************************************************************************/ |
|
|
#ifndef HAL_HW3_9_C_ |
#define HAL_HW3_9_C_ |
|
#include "cpu.h" |
#include <inttypes.h> |
#include <avr/io.h> |
#include <avr/interrupt.h> |
#include <avr/pgmspace.h> |
#include <avr/eeprom.h> |
#include <util/delay.h> |
#include <stdbool.h> |
#include <stdlib.h> |
#include "main.h" |
#if defined HWVERSION3_9 |
#include "messages.h" |
#include "lcd.h" |
#include "usart.h" |
#include "uart1.h" |
#include "display.h" |
#include "timer.h" |
#include "eeprom.h" |
#include "Wi232.h" |
#include "twimaster.h" |
#include "uart1.h" |
#include "bluetooth.h" |
#include "error.h" |
#include "connect.h" |
#include "lipo.h" |
#include "setup.h" |
#include "osd.h" |
|
|
volatile uint8_t USBBT; |
volatile uint8_t U02SV2; |
|
|
//-------------------------------------------------------------- |
void InitHWPorts(void) // Initialisierung der Hardware für die jeweilige Leiterplattenversion |
|
{ |
//PORTA |= (1<<PORTA4)|(1<<PORTA5)|(1<<PORTA6)|(1<<PORTA7); // Enable Pull Up for the 4 keys // MartinR: so war es |
PORTA |= (1<<PORTA3)|(1<<PORTA4)|(1<<PORTA5)|(1<<PORTA6)|(1<<PORTA7); // Enable Pull Up for the 4 keys // MartinR: Port3: Taster von Joystick |
DDRA &= ~(1<<DDA4); // Eingang: A4 auf Low setzen (Power On) |
|
DDRB = 0xFF; // Alles Ausgänge |
|
PORTC |= (1<<PORTC4)|(1<<PORTC7); // Enable Pull Up for LBO + Summer |
DDRC |= (1<<DDC2)|(1<<DDC3)|(1<<DDC5)|(1<<DDC6)|(1<<DDC7); // Ausgang: Led2,Rs232Switch,Summer |
DDRC &= ~(1<<DDC4); // Eingang: LowBat LTC1308 |
_BTOn(); // Erstmal USB dektivieren, damit beim versehentlichen Einschalten USB im PC ruhig bleibt |
|
PORTD |= (1<<PORTD6); // Wi232-CMD auf High schalten |
DDRD |= (1<<DDD4)|(1<<DDD5)|(1<<DDD6)|(1<<DDD7); // Ausgang: PiepserTest, Servo, Wi232-CMD und Beleuchtung |
|
set_V_On(); // Spannung mit T3 halten |
|
Timer0_Init (); // system |
Timer1_Init (); // pwm |
Timer2_Init (); // display |
|
|
Display_on = 1; |
USART_Init (UART_BAUD_SELECT(USART_BAUD,F_CPU)); |
uart1_init (UART_BAUD_SELECT(USART_BAUD,F_CPU)); // USB |
I2C_Init(1); |
|
|
sei (); |
|
LCD_Init (0); // muss vor "ReadParameter" stehen |
ReadParameter (); // Aktuelle Werte aus EEProm auslesen |
|
if (DisplayLanguage > NUM_LANG) // Beim ersten Start Sprache abfragen |
{ DisplayLanguage = 1; |
DisplayLanguage = Edit_Language(DisplayLanguage,0,3,DISPLAY3); |
WriteParameter(); |
} |
|
|
OCR2A = LCD_Helligkeit * 2.55; |
LCD_Init (1); |
set_beep ( 200, 0x0080, BeepNormal); |
|
OSD_active = false; //keine OSD Ausgabe |
// MartinR: zu menue.c hin verschoben |
// ADC_Init(); // ADC für Lipomessung |
// Power On Delay |
// lcd_printp_at (2,2,PSTR("Taste 1 Sekunde"), 0); |
// lcd_printp_at (2,3,PSTR("lang festhalten."), 0); |
lcd_printpj_at (4, 1, PSTR("PKT 3.9"),0); |
lcd_printpj_at (4, 2, PSTR(PKTSWVersion),0); |
lcd_puts_at(0, 4, strGet(BOOT1), 0); |
lcd_puts_at(0, 5, strGet(BOOT2), 0); |
|
_delay_ms(800); |
|
if (PINA & (1<<PINA7)) // Spannung eingeschaltet lassen |
clr_V_On(); |
|
_delay_ms(100); |
|
set_beep ( 500, 0x0080, BeepNormal); |
get_key_press(KEY_ALL); |
|
lcd_cls(); |
|
if ((UseWi == true) && (WiIsSet == false)) |
{ |
InitWi232(PKT_Baudrate); // wenn Wi232 nicht initialisiert ist, dann jetzt tun |
} |
|
lcd_cls(); |
set_BTOff(); // BT ausschalten |
if ((UseBT == true) && (BTIsSet == false)) |
{ |
bt_init(); |
// set_USBOn(); |
} |
|
lcd_cls(); |
|
if ((UseWi == true) && (U02SV2 == 0)) |
{ |
Change_Output(Uart02Wi); // Verbindung zu Wi232 herstellen |
if (PKT_StartInfo == true) |
{ |
// lcd_printp_at (0, 0, PSTR("Verbindung zum MK ist"), 0); |
// lcd_printp_at (0, 1, PSTR("auf Wi232 eingestellt"), 0); |
lcd_puts_at(0, 0, strGet(BOOT_WI1), 0); |
lcd_puts_at(0, 1, strGet(BOOT_WI2), 0); |
_delay_ms(2000); |
} |
} |
else |
{ |
Change_Output(Uart02FC); // Verbindung zu SV" (Kabel) herstellen |
if (PKT_StartInfo == true) |
{ |
// lcd_printp_at (0, 0, PSTR("Verbindung zum MK ist"), 0); |
// lcd_printp_at (0, 1, PSTR("auf Kabel eingestellt"), 0); |
lcd_puts_at(0, 0, strGet(BOOT_WI1), 0); |
lcd_puts_at(0, 1, strGet(BOOT_SV), 0); |
_delay_ms(2000); |
} |
} |
|
lcd_cls(); |
|
} |
|
|
|
void set_D_LIGHT(void) /* Displaybeleuchtung ein*/ |
{ |
// PWM einschalten |
TCCR2A |= (1 << WGM21) | (1 << WGM20) | (1 << COM2A1); |
TCCR2B |= (1 << CS20); |
} |
|
void clr_D_LIGHT(void) /* Displaybeleuchtung aus*/ |
{ |
// PWM ausschalten |
TCCR2A = 0; |
TCCR2B = 0; |
} |
|
uint8_t BTIsOn=0; |
|
void set_BTOn(void) |
{ |
if (BTIsOn == 0) |
{ |
_BTOn(); |
BTIsOn = 1; |
_delay_ms(2000); |
} |
} |
void set_BTOff(void) |
{ |
set_USBOn(); |
BTIsOn = 0; |
} |
|
|
|
#endif |
#endif // HAL_HW3_9_C_ |