Subversion Repositories FlightCtrl

Rev

Rev 528 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 528 Rev 529
Line 45... Line 45...
45
// +  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
45
// +  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
46
// +  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
46
// +  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
47
// +  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
47
// +  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
48
// +  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
48
// +  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
49
// +  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
49
// +  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
50
// +  POSSIBILITY OF SUCH DAMAGE. 
50
// +  POSSIBILITY OF SUCH DAMAGE.    
51
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
51
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
52
#include "main.h"
52
#include "main.h"
Line 53... Line 53...
53
 
53
 
54
unsigned char EEPromArray[E2END+1] EEMEM;
54
unsigned char EEPromArray[E2END+1] EEMEM;
Line 58... Line 58...
58
// number [0..5]   
58
// number [0..5]   
59
void ReadParameterSet(unsigned char number, unsigned char *buffer, unsigned char length)
59
void ReadParameterSet(unsigned char number, unsigned char *buffer, unsigned char length)
60
{
60
{
61
   if (number > 5) number = 5;
61
   if (number > 5) number = 5;
62
   eeprom_read_block(buffer, &EEPromArray[EEPROM_ADR_PARAM_BEGIN + length * number], length);
62
   eeprom_read_block(buffer, &EEPromArray[EEPROM_ADR_PARAM_BEGIN + length * number], length);
63
 
-
 
64
}
63
}
Line 65... Line 64...
65
 
64
 
66
 
65
 
67
// -- Parametersatz ins EEPROM schreiben ---
66
// -- Parametersatz ins EEPROM schreiben ---
68
// number [0..5]   
67
// number [0..5]   
69
void WriteParameterSet(unsigned char number, unsigned char *buffer, unsigned char length)
68
void WriteParameterSet(unsigned char number, unsigned char *buffer, unsigned char length)
70
{
69
{
71
   if(number > 5) number = 5;  
-
 
72
   eeprom_write_block(buffer, &EEPromArray[EEPROM_ADR_PARAM_BEGIN + length * number], length);
70
   if(number > 5) number = 5;  
73
 
71
   eeprom_write_block(buffer, &EEPromArray[EEPROM_ADR_PARAM_BEGIN + length * number], length);
Line 74... Line 72...
74
   eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACTIVE_SET], number);                              // diesen Parametersatz als aktuell merken
72
   eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACTIVE_SET], number);                              // diesen Parametersatz als aktuell merken
75
}
73
}
Line 90... Line 88...
90
//Hauptprogramm
88
//Hauptprogramm
91
int main (void)
89
int main (void)
92
//############################################################################
90
//############################################################################
93
{
91
{
94
        unsigned int timer;
92
        unsigned int timer;
-
 
93
 
95
        unsigned int timer2 = 0;
94
        //unsigned int timer2 = 0;
96
    DDRB  = 0x00;
95
    DDRB  = 0x00;
97
    PORTB = 0x00;
96
    PORTB = 0x00;
98
    for(timer = 0; timer < 1000; timer++); // verzögern
97
    for(timer = 0; timer < 1000; timer++); // verzögern
99
    if(PINB & 0x01) PlatinenVersion = 11; else PlatinenVersion = 10;
98
    if(PINB & 0x01) PlatinenVersion = 11; else PlatinenVersion = 10;
100
    DDRC  = 0x81; // SCL
99
    DDRC  = 0x81; // SCL
Line 120... Line 119...
120
    Timer_Init();
119
    Timer_Init();
121
        UART_Init();
120
        UART_Init();
122
    rc_sum_init();
121
    rc_sum_init();
123
        ADC_Init();
122
        ADC_Init();
124
        i2c_init();
123
        i2c_init();
-
 
124
//      SPI_MasterInit();
Line 125... Line 125...
125
   
125
   
Line 126... Line 126...
126
        sei();
126
        sei();
127
 
127
 
128
    VersionInfo.Hauptversion = VERSION_HAUPTVERSION;
128
    VersionInfo.Hauptversion = VERSION_HAUPTVERSION;
Line 129... Line 129...
129
    VersionInfo.Nebenversion = VERSION_NEBENVERSION;
129
    VersionInfo.Nebenversion = VERSION_NEBENVERSION;
130
    VersionInfo.PCKompatibel = VERSION_KOMPATIBEL;
130
    VersionInfo.PCKompatibel = VERSION_KOMPATIBEL;
131
   
131
   
Line 132... Line 132...
132
        printf("\n\rFlightControl\n\rHardware:%d.%d\n\rSoftware:V%d.%d ",PlatinenVersion/10,PlatinenVersion%10, VERSION_HAUPTVERSION, VERSION_NEBENVERSION);
132
        printf("\n\rFlightControl\n\rHardware:%d.%d\n\rSoftware:V%d.%d%c ",PlatinenVersion/10,PlatinenVersion%10, VERSION_HAUPTVERSION, VERSION_NEBENVERSION,VERSION_INDEX + 'a');
133
        printf("\n\r==============================");
133
        printf("\n\r==============================");
134
        GRN_ON;
134
        GRN_ON;
135
 
135
 
136
#define EE_DATENREVISION 62 // wird angepasst, wenn sich die EEPROM-Daten geändert haben
136
#define EE_DATENREVISION 68 // wird angepasst, wenn sich die EEPROM-Daten geändert haben
137
    if(eeprom_read_byte(&EEPromArray[EEPROM_ADR_VALID]) != EE_DATENREVISION)
137
    if(eeprom_read_byte(&EEPromArray[EEPROM_ADR_VALID]) != EE_DATENREVISION)
138
        {
138
        {
139
          printf("\n\rInit. EEPROM: Generiere Default-Parameter...");
139
          printf("\n\rInit. EEPROM: Generiere Default-Parameter...");
-
 
140
          DefaultKonstanten1();
-
 
141
          for (unsigned char i=0;i<6;i++)  
140
          DefaultKonstanten1();
142
      {
141
          for (unsigned char i=0;i<6;i++)  
143
       if(i==2) DefaultKonstanten2(); // Kamera
142
      {
144
       if(i==3) DefaultKonstanten3(); // Beginner
143
       if(i==2) DefaultKonstanten2();
145
       if(i>3)  DefaultKonstanten2(); // Kamera
144
       WriteParameterSet(i, (unsigned char *) &EE_Parameter.Kanalbelegung[0], STRUCT_PARAM_LAENGE);
146
       WriteParameterSet(i, (unsigned char *) &EE_Parameter.Kanalbelegung[0], STRUCT_PARAM_LAENGE);
-
 
147
      }
-
 
148
          eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACTIVE_SET], 3); // default-Setting
-
 
149
          eeprom_write_byte(&EEPromArray[EEPROM_ADR_VALID], EE_DATENREVISION);
-
 
150
        }
-
 
151
 
Line 145... Line 152...
145
      }
152
    if(eeprom_read_byte(&EEPromArray[EEPROM_ADR_ACC_NICK]) > 4)
146
          eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACTIVE_SET], 2);
153
     {
Line 179... Line 186...
179
    I2CTimeout = 5000;
186
    I2CTimeout = 5000;
180
        while (1)
187
        while (1)
181
        {
188
        {
182
        if (UpdateMotor)      // ReglerIntervall
189
        if (UpdateMotor)      // ReglerIntervall
183
            {
190
            {
-
 
191
//            SPI_TransmitByte();
184
            UpdateMotor=0;
192
                        UpdateMotor=0;
-
 
193
//PORTD |= 0x08;
185
            MotorRegler();  
194
            MotorRegler();  
-
 
195
//PORTD &= ~0x08;
186
            SendMotorData();
196
            SendMotorData();
187
            ROT_OFF;
197
            ROT_OFF;
188
            if(PcZugriff) PcZugriff--;
198
            if(PcZugriff) PcZugriff--;
-
 
199
             else
-
 
200
              {
-
 
201
               DubWiseKeys[0] = 0;
-
 
202
               DubWiseKeys[1] = 0;
-
 
203
               ExternStickNick = 0;
-
 
204
               ExternStickRoll = 0;
-
 
205
               ExternStickGier = 0;
-
 
206
              }
189
            if(SenderOkay)  SenderOkay--;
207
            if(SenderOkay)  SenderOkay--;
190
            if(!I2CTimeout)
208
            if(!I2CTimeout)
191
                {
209
                {
192
                 I2CTimeout = 5;
210
                 I2CTimeout = 5;
193
                 i2c_reset();
211
                 i2c_reset();
Line 217... Line 235...
217
                   {
235
                   {
218
                    beeptime = 6000;
236
                    beeptime = 6000;
219
                    BeepMuster = 0x0300;
237
                    BeepMuster = 0x0300;
220
                   }
238
                   }
221
                }
239
                }
-
 
240
       //      SPI_StartTransmitPacket();
222
             timer = SetDelay(100);  
241
                         timer = SetDelay(100);  
223
            }
242
            }
224
    }
243
    }
225
 return (1);
244
 return (1);
226
}
245
}