Rev 1179 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 1179 | Rev 1180 | ||
---|---|---|---|
Line 1... | Line -... | ||
1 | /*####################################################################################### |
- | |
2 | Decodieren eines RC Summen Signals |
- | |
3 | #######################################################################################*/ |
- | |
4 | // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
1 | // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
5 | // + Copyright (c) 04.2007 Holger Buss |
2 | // + Copyright (c) 04.2007 Holger Buss |
6 | // + only for non-profit use |
3 | // + Nur für den privaten Gebrauch |
7 | // + www.MikroKopter.com |
4 | // + www.MikroKopter.com |
8 | // + see the File "License.txt" for further Informations |
- | |
9 | // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
5 | // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
- | 6 | // + Es gilt für das gesamte Projekt (Hardware, Software, Binärfiles, Sourcecode und Dokumentation), |
|
- | 7 | // + dass eine Nutzung (auch auszugsweise) nur für den privaten (nicht-kommerziellen) Gebrauch zulässig ist. |
|
- | 8 | // + Sollten direkte oder indirekte kommerzielle Absichten verfolgt werden, ist mit uns (info@mikrokopter.de) Kontakt |
|
- | 9 | // + bzgl. der Nutzungsbedingungen aufzunehmen. |
|
- | 10 | // + Eine kommerzielle Nutzung ist z.B.Verkauf von MikroKoptern, Bestückung und Verkauf von Platinen oder Bausätzen, |
|
- | 11 | // + Verkauf von Luftbildaufnahmen, usw. |
|
10 | - | ||
- | 12 | // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
|
- | 13 | // + Werden Teile des Quellcodes (mit oder ohne Modifikation) weiterverwendet oder veröffentlicht, |
|
- | 14 | // + unterliegen sie auch diesen Nutzungsbedingungen und diese Nutzungsbedingungen incl. Copyright müssen dann beiliegen |
|
- | 15 | // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
|
- | 16 | // + Sollte die Software (auch auszugesweise) oder sonstige Informationen des MikroKopter-Projekts |
|
- | 17 | // + auf anderen Webseiten oder sonstigen Medien veröffentlicht werden, muss unsere Webseite "http://www.mikrokopter.de" |
|
- | 18 | // + eindeutig als Ursprung verlinkt werden |
|
- | 19 | // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
|
- | 20 | // + Keine Gewähr auf Fehlerfreiheit, Vollständigkeit oder Funktion |
|
- | 21 | // + Benutzung auf eigene Gefahr |
|
- | 22 | // + Wir übernehmen keinerlei Haftung für direkte oder indirekte Personen- oder Sachschäden |
|
- | 23 | // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
|
- | 24 | // + Die Portierung der Software (oder Teile davon) auf andere Systeme (ausser der Hardware von www.mikrokopter.de) ist nur |
|
- | 25 | // + mit unserer Zustimmung zulässig |
|
- | 26 | // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
|
- | 27 | // + Die Funktion printf_P() unterliegt ihrer eigenen Lizenz und ist hiervon nicht betroffen |
|
- | 28 | // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
|
- | 29 | // + Redistributions of source code (with or without modifications) must retain the above copyright notice, |
|
- | 30 | // + this list of conditions and the following disclaimer. |
|
- | 31 | // + * Neither the name of the copyright holders nor the names of contributors may be used to endorse or promote products derived |
|
- | 32 | // + from this software without specific prior written permission. |
|
- | 33 | // + * The use of this project (hardware, software, binary files, sources and documentation) is only permittet |
|
- | 34 | // + for non-commercial use (directly or indirectly) |
|
- | 35 | // + Commercial use (for excample: selling of MikroKopters, selling of PCBs, assembly, ...) is only permitted |
|
- | 36 | // + with our written permission |
|
- | 37 | // + * If sources or documentations are redistributet on other webpages, out webpage (http://www.MikroKopter.de) must be |
|
- | 38 | // + clearly linked as origin |
|
- | 39 | // + * porting to systems other than hardware from www.mikrokopter.de is not allowed |
|
- | 40 | // + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
|
- | 41 | // + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
|
- | 42 | // + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
|
- | 43 | // + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE |
|
- | 44 | // + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
|
- | 45 | // + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
|
- | 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// + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
|
- | 48 | // + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
|
- | 49 | // + POSSIBILITY OF SUCH DAMAGE. |
|
- | 50 | // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
|
11 | #include <stdlib.h> |
51 | #include <stdlib.h> |
12 | #include <avr/io.h> |
52 | #include <avr/io.h> |
13 | #include <avr/interrupt.h> |
53 | #include <avr/interrupt.h> |
Line 14... | Line 54... | ||
14 | 54 | ||
Line 41... | Line 81... | ||
41 | // set as output |
81 | // set as output |
42 | DDRD |= (1<<DDD5)|(1<<DDD4); |
82 | DDRD |= (1<<DDD5)|(1<<DDD4); |
43 | // low level |
83 | // low level |
44 | PORTD &= ~((1<<PORTD5)|(1<<PORTD4)); |
84 | PORTD &= ~((1<<PORTD5)|(1<<PORTD4)); |
Line 45... | Line 85... | ||
45 | 85 | ||
46 | // PD3 can't be used in FC 1.1 if 2nd UART is activated |
86 | // PD3 can't be used if 2nd UART is activated |
47 | // because TXD1 is at that port |
87 | // because TXD1 is at that port |
48 | if(BoardRelease == 10) |
88 | if(CPUType != ATMEGA644P) |
49 | { |
89 | { |
50 | DDRD |= (1<<PORTD3); |
90 | DDRD |= (1<<PORTD3); |
51 | PORTD &= ~(1<<PORTD3); |
91 | PORTD &= ~(1<<PORTD3); |
Line 149... | Line 189... | ||
149 | signal -= 466; // offset of 1.4912 ms ??? (469 * 3.2µs = 1.5008 ms) |
189 | signal -= 466; // offset of 1.4912 ms ??? (469 * 3.2µs = 1.5008 ms) |
150 | // check for stable signal |
190 | // check for stable signal |
151 | if(abs(signal-PPM_in[index]) < 6) |
191 | if(abs(signal-PPM_in[index]) < 6) |
152 | { |
192 | { |
153 | if(RC_Quality < 200) RC_Quality +=10; |
193 | if(RC_Quality < 200) RC_Quality +=10; |
- | 194 | else RC_Quality = 200; |
|
154 | } |
195 | } |
155 | // calculate exponential history for signal |
196 | // calculate exponential history for signal |
156 | tmp = (3 * (PPM_in[index]) + signal) / 4; |
197 | tmp = (3 * (PPM_in[index]) + signal) / 4; |
157 | if(tmp > signal+1) tmp--; else |
198 | if(tmp > signal+1) tmp--; else |
158 | if(tmp < signal-1) tmp++; |
199 | if(tmp < signal-1) tmp++; |
Line 161... | Line 202... | ||
161 | else PPM_diff[index] = 0; |
202 | else PPM_diff[index] = 0; |
162 | PPM_in[index] = tmp; // update channel value |
203 | PPM_in[index] = tmp; // update channel value |
163 | } |
204 | } |
164 | index++; // next channel |
205 | index++; // next channel |
165 | // demux sum signal for channels 5 to 7 to J3, J4, J5 |
206 | // demux sum signal for channels 5 to 7 to J3, J4, J5 |
166 | if(index == 5) PORTD |= (1<<PORTD5); else PORTD &= ~(1<<PORTD5); |
207 | if(index == 5) J3HIGH; else J3LOW; |
167 | if(index == 6) PORTD |= (1<<PORTD4); else PORTD &= ~(1<<PORTD4); |
208 | if(index == 6) J4HIGH; else J3LOW; |
168 | if(BoardRelease == 10) |
209 | if(CPUType != ATMEGA644P) // not used as TXD1 |
169 | { |
210 | { |
170 | if(index == 7) PORTD |= (1<<PORTD3); else PORTD &= ~(1<<PORTD3); |
211 | if(index == 7) J5HIGH; else J5LOW; |
171 | } |
212 | } |
172 | } |
213 | } |
173 | } |
214 | } |
174 | if(RC_Quality) RC_Quality--; |
215 | if(RC_Quality) RC_Quality--; |
175 | } |
216 | } |