Subversion Repositories MK3Mag

Rev

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

Rev 5 Rev 7
Line 1... Line 1...
1
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2
// + Regler für Brushless-Motoren
2
// + MK3Mag 3D-Compass
3
// + ATMEGA8 mit 8MHz
3
// + ATMEGA168 mit 8MHz
4
// + (c) 01.2007 Holger Buss
4
// + (c) 05.2008 Holger Buss
5
// + Nur für den privaten Gebrauch
5
// + Nur für den privaten Gebrauch
6
// + Keine Garantie auf Fehlerfreiheit
6
// + Keine Garantie auf Fehlerfreiheit
7
// + Kommerzielle Nutzung nur mit meiner Zustimmung
7
// + Kommerzielle Nutzung nur mit meiner Zustimmung
8
// + Der Code ist für die Hardware BL_Ctrl V1.0 entwickelt worden
8
// + Der Code ist für die Hardware MK3Mag entwickelt worden
9
// + www.mikrocontroller.com
9
// + www.mikrokopter.com
10
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
10
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Line 11... Line 11...
11
 
11
 
12
#include "main.h"
12
#include "main.h"
Line 26... Line 26...
26
unsigned char MotorTest[4] = {0,0,0,0};
26
unsigned char MotorTest[4] = {0,0,0,0};
27
unsigned volatile char AnzahlEmpfangsBytes = 0;
27
unsigned volatile char AnzahlEmpfangsBytes = 0;
28
unsigned char PcZugriff;
28
unsigned char PcZugriff;
Line 29... Line 29...
29
 
29
 
30
struct str_DebugOut       DebugOut;
30
struct str_DebugOut       DebugOut;
31
struct str_WinkelOut      WinkelOut;
31
struct str_ExternData     ExternData;
32
struct str_ExternControl  ExternControl;
32
struct str_ExternControl  ExternControl;
Line 33... Line 33...
33
struct str_VersionInfo    VersionInfo;
33
struct str_VersionInfo    VersionInfo;
Line 34... Line 34...
34
 
34
 
35
 
35
 
36
 
36
 
37
int Debug_Timer;
37
int Debug_Timer;
38
 
38
 
39
const unsigned char ANALOG_TEXT[32][16] =
39
const unsigned char ANALOG_TEXT[32][16] =
40
{
40
{
41
   //1234567890123456 
41
   //1234567890123456
42
    "Magnet N        ", //0
42
    "Magnet N        ", //0
43
    "Magnet R        ",
43
    "Magnet R        ",
44
    "Magnet Z        ",
44
    "Magnet Z        ",
-
 
45
    "Raw    N        ",
-
 
46
    "Raw    R        ",
-
 
47
    "Raw    Z        ", //5
-
 
48
    "Lage N          ",
-
 
49
    "Lage R          ",
-
 
50
    "Xmin            ",
-
 
51
    "Xmax            ",
-
 
52
    "Ymin            ", //10
45
    "Roh    N        ",
53
    "Ymax            ",
46
    "Roh    R        ",
54
    "Zmin            ",
47
    "Roh    Z        ", //5
-
 
48
    "Lage N          ",
55
    "ZMax            ",
49
    "Lage R          ",
56
    "Calstate        ",
50
    "User0           ",
57
    "Kompass         ", //15
51
    "User1           ",
58
    "User0           ",
52
    "User2           ", //10
-
 
53
    "User3           ",
59
    "User1           ",
54
    "                ",
-
 
55
    "                ",
-
 
56
    "Kompass         ",
-
 
57
    "                ", //15
-
 
58
    "Acc_Z           ",
-
 
59
    "MittelAccNick   ",
-
 
60
    "MittelAccRoll   ",
60
    "Analog18        ",
61
    "IntegralErrNick ",
61
    "Analog19        ",
62
    "IntegralErrRoll ", //20
62
    "Analog20        ", //20
63
    "MittelIntNick   ",
63
    "Analog21        ",
64
    "MittelIntRoll   ",
64
    "Analog22        ",
65
    "NeutralNick     ",
65
    "Analog23        ",
66
    "RollOffset      ",
66
    "Analog24        ",
67
    "IntRoll*Faktor  ", //25
67
    "Analog25        ", //25
68
    "Analog26        ",
68
    "Analog26        ",
69
    "DirektAusglRoll ",
69
    "Analog27        ",
Line -... Line 70...
-
 
70
    "Analog28        ",
70
    "MesswertRoll    ",
71
    "Analog29        ",
71
    "AusgleichRoll   ",
72
    "Analog30        ", //30
72
    "I-LageRoll      ", //30
73
    "Analog31        "
73
    "StickRoll       "
74
};
74
};
75
 
Line 246... Line 247...
246
//############################################################################
247
//############################################################################
247
//Routine für die Serielle Ausgabe
248
//Routine für die Serielle Ausgabe
248
int uart_putchar (char c)
249
int uart_putchar (char c)
249
//############################################################################
250
//############################################################################
250
{
251
{
-
 
252
    if(!(UCR & (1 << TXEN))) return (0);
251
        if (c == '\n')
253
        if (c == '\n')
252
                uart_putchar('\r');
254
                uart_putchar('\r');
253
        //Warten solange bis Zeichen gesendet wurde
255
        //Warten solange bis Zeichen gesendet wurde
254
        loop_until_bit_is_set(USR, UDRE);
256
        loop_until_bit_is_set(USR, UDRE);
255
        //Ausgabe des Zeichens
257
        //Ausgabe des Zeichens
Line 305... Line 307...
305
 PcZugriff = 255;
307
 PcZugriff = 255;
Line 306... Line 308...
306
 
308
 
307
  switch(RxdBuffer[2])
309
  switch(RxdBuffer[2])
308
  {
310
  {
309
   case 'w':// Lagewinkel
311
   case 'w':// Lagewinkel
310
            Decode64((unsigned char *) &WinkelOut,sizeof(WinkelOut),3,AnzahlEmpfangsBytes);
312
            Decode64((unsigned char *) &ExternData,sizeof(ExternData),3,AnzahlEmpfangsBytes);
311
            DebugOut.Analog[15]++;
313
            DebugOut.Analog[15]++;
312
            KompassAntwort = 1;
-
 
313
            LED_ON;        
314
            KompassAntwort = 1;
314
            break;
315
            break;
315
   case 'c':
316
   case 'c':
316
   case 'b':
317
   case 'b':
317
                        Decode64((unsigned char *) &ExternControl,sizeof(ExternControl),3,AnzahlEmpfangsBytes);
318
                        Decode64((unsigned char *) &ExternControl,sizeof(ExternControl),3,AnzahlEmpfangsBytes);
318
            WinkelOut.Winkel[0] = ExternControl.Par1;
319
            ExternData.Winkel[0] = ExternControl.Par1;
319
            WinkelOut.Winkel[1] = ExternControl.Par2;
320
            ExternData.Winkel[1] = ExternControl.Par2;
320
            break;
321
            break;
321
   case 'v': // Version-Anforderung     und Ausbaustufe
322
   case 'v': // Version-Anforderung     und Ausbaustufe
322
            GetVersionAnforderung = 1;
323
            GetVersionAnforderung = 1;
323
            PC_Connected = 255;
324
            PC_Connected = 255;
Line 398... Line 399...
398
//---------------------------------------------------------------------------------------------
399
//---------------------------------------------------------------------------------------------
399
void DatenUebertragung(void)  
400
void DatenUebertragung(void)  
400
{
401
{
401
 if((CheckDelay(Debug_Timer) && UebertragungAbgeschlossen))      // im Singlestep-Betrieb in jedem Schtitt senden
402
 if((CheckDelay(Debug_Timer) && UebertragungAbgeschlossen))      // im Singlestep-Betrieb in jedem Schtitt senden
402
         {
403
         {
-
 
404
         SetDebugValues();
403
          SendOutData('D',MeineSlaveAdresse,(unsigned char *) &DebugOut,sizeof(DebugOut));
405
          SendOutData('D',MeineSlaveAdresse,(unsigned char *) &DebugOut,sizeof(DebugOut));
404
          Debug_Timer = SetDelay(250);   // Sendeintervall
406
          Debug_Timer = SetDelay(250);   // Sendeintervall
405
         }
407
         }
406
    if(GetVersionAnforderung && UebertragungAbgeschlossen)
408
    if(GetVersionAnforderung && UebertragungAbgeschlossen)
407
     {
409
     {