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 | { |