Subversion Repositories Projects

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
1115 - 1
 
2
/****************************************************************/
3
/*                                                                                                                              */
4
/*                               NG-Video 5,8GHz                                                        */
5
/*                                                                                                                              */
6
/*                              Copyright (C) 2011 - gebad                                              */
7
/*                                                                                                                              */
8
/*  This code is distributed under the GNU Public License               */
9
/*      which can be found at http://www.gnu.org/licenses/gpl.txt       */
10
/*                                                                                                                              */
11
/****************************************************************/
12
 
13
#include <string.h>
14
#include <avr/interrupt.h>
15
 
16
#include "servo.h"
17
#include "config.h"
18
#include "dogm.h"
19
#include "keys.h"
20
#include "ngvideo.c"
21
#include "menue.c"
22
#include "usart.h"
23
 
24
 
25
int main(void)
26
{ uint8_t ep_reset = 1;
27
  uint8_t val;
28
  // LCD selbst definierte Sonderzeichen, RSSI-Balken und wi232 Empfang Daten im Flash 
29
  // deshalb in dogm.c lcdPutc(pgm_read_byte(&lcdChr[i]));
30
  static SpecialChr_t lcdSpecialChr PROGMEM = {{32,32,16,16,16,16,32,32},\
31
                                                                                           {32,32,24,24,24,24,32,32},\
32
                                                                                           {32,32,28,28,28,28,32,32},\
33
                                                                                           {32,32,30,30,30,30,32,32},\
34
                                                                                           {32,32,31,31,31,31,32,32},\
35
                                                                                           {6,8,20,19,20,8,6,32}};
36
 
37
 
38
  _delay_ms(100);  // Einschaltstörungen unterdrücken
39
 
40
  DDRB |= (1<<POWER);
41
  PORTB &= ~(1<<POWER); //NOT(SHDN) LT1776
42
 
43
  // switch init
44
  KEY_MP_DDR &= ~((1<<KEY_MINUS) | (1<<KEY_PLUS));
45
  KEY_ENTER_DDR &= ~((1<<KEY_ENTER));
46
 
47
  // auf default rücksetzen - Tasten direkt lesen, da noch kein Interrupt
48
  if( !(KEY_MP_PIN & ((1<<KEY_MINUS) | (1<<KEY_PLUS))))
49
    --ep_reset;
50
 
51
  Init_EEPROM(ep_reset);
52
 
53
   // auf DOGM 5V/3,3V rück-/setzen - Tasten direkt lesen, da noch kein Interrupt
54
  if(!((KEY_ENTER_PIN & (1<<KEY_ENTER)) || (KEY_MP_PIN & (1<<KEY_PLUS))))
55
    Set_DOGM_Version();
56
 
57
  DDRA |= (1<<CHANNel_12) | (1<<CHANNel_11) | (1<<CHANNel_10) | (1<<MUX_IN) | (1<<MUX_EN);
58
  DDRB |= (1<<BEEPER) | (1<<CHANNel_02) | (1<<CHANNel_01) | (1<<CHANNel_00);
59
  Set_Channel(channel);
60
  ch_stored = channel;
61
  PORTA &= ~(1<<MUX_EN);                        // MUX enable
62
 
63
  ADC_Init();
64
 
65
  // Timer 0 für Tasten und Anzeigen(Task's)
66
  TCCR0B = (1<<CS02)|(1<<CS00); // divide by 1024
67
  TIMSK0 |= 1<<TOIE0;                           // 8 bit Timer/Counter0 Overflow Interrupt aktiviert 
68
 
69
  // Timer 2 für Diversity vSync und GPS-Tracking MK Datensatz senden
70
  TCCR2B = (1<<CS21) | (1<<CS20);       // divide by 64
71
  TIMSK2 |= 1<<TOIE2;                           // 8 bit Timer/Counter2 Overflow Interrupt aktiviert 
72
 
73
  // Interrupt für sync - RX-Umschaltung bei Diversity
74
  DDRD &= ~((1<<VSYNC1) | (1<<VSYNC0));
75
  //EICRA |= (1<<ISC11) | (1<<ISC10) | (1<<ISC01) | (1<<ISC00);// interrupt on INT0 and INT1 pin rising edge
76
  EICRA |= (1<<ISC11) | (1<<ISC01);// interrupt on INT0 and INT1 pin falling edge
77
  Set_AV_Source(av_source);     // MUX auf av-x setzen; EIMSK Int0 und Int1 für Sync-Diversity ein
78
 
79
  DDRD |= (1<<SERVO1) | (1<<SERVO2); // Servoports als Ausgang
80
  if (tracking > TRACKING_MIN)            // Servos sind nur bei Tracking und Servokalibrierung zugeschaltet 
81
    servoInit();
82
 
83
  // LCD init
84
  lcdInit(dogm_vers, contrast, 0, 0);
85
  lcd_BackgrLight_On();
86
  lcdWriteCGRAM_Array(lcdSpecialChr, 6);
87
 
88
  Displ_Version();
89
  Double_Beep(DBEEPVERS, DBEEPVERSP);
90
 
91
  sei();
92
 
93
  if (language == NO_LANGUAGE) {
94
        language = GERMAN;      // Beim Einschalten pmenu[] vordefiniert mit "0"
95
        Menu_Language();
96
  }
97
  pmenu[0] = '\0';              // falls GPS-Antennennachführung ==> Empfang blinken
98
 
99
  Displ_Main_Disp();
100
 
101
  while(1)
102
  {
103
        Task_0_1();
104
    Task_0_2();
105
        Tasks_unvisible();
106
        if (bat_low != 0) {
107
      if (Get_Key_Short( 1<<SW_ENTER )) {
108
            m_pkt = 1;                  // 0 wäre "zurück", so aber ins Untermenü immer erster Menüpunkt
109
                Menu_Main();
110
          }
111
          val = Change_Value_plmi(channel, CHANNEL_MIN, CHANNEL_MAX, 0, 0, Displ_Channels, 1, C_REPEAT);
112
          if (val != channel) { // nicht bei jeden Schleifendurchlauf Set_Channel()
113
            channel = val;
114
                Set_Channel(channel);
115
          }
116
        }
117
  }
118
}