Hey Leute, ich habe mir einen Orange RX Fasst 2.4ghz Empfänger gekauft und würde gerne diesen mit einem Atmega 8 auslesen, sprich die einzelnen Kanäle um dann per PWM verschiedene Motoren anzusteuern. Am ende soll ein Quadcopter damit gesteuert werden, aber leider scheitere ich ja schon beim Einlesen vom Steuersignal.
Mir fehlt da irgendwo die konkrete Frage. Wird das wieder so ein "Würmer-aus-der-Nase-zieh"-Thread?
Die Konkrete frage ist, wie kann ich das signal nun am Besten auslesen.
Ich hab versucht die Steigende Flanke einzulesen, die Zeit mitzuzählen
bis die Flanke wieder fällt, aber irgendwas stimmt da nicht.
#define F_CPU 16000000UL
#include <avr/io.h>
#include <avr/interrupt.h>
volatile int flanke=0;
volatile int aktuell_pwm_l=0;
volatile int aktuell_pwm_h=0;
ISR(TIMER1_CAPT_vect)
{
if (flanke==0)
{
TCNT1H = 0;
TCNT1L = 0;
TCCR1B&= ~(1<<ICES1);
flanke=1;
}
else
{
flanke=0;
TCCR1B|=(1<<ICES1);
aktuell_pwm_l=ICR1L;
aktuell_pwm_h=ICR1H;
}
}
void init_prozedur(void)
{
TCCR1B |= (1<<WGM12) | (1<<ICNC1)|(1<<ICES1)|(1<<CS11) | (1<<CS10);
TIMSK |= (1<<TICIE1);
sei();
}
int main (void)
{
init_prozedur();
DDRB = (1<<PB0);
TCCR1A = (1<<WGM10)|(1<<COM1A1)|(1<<COM1B1);
while(1)
{
if (aktuell_pwm_l >= 120 && aktuell_pwm_l < 125)
{
PORTB = (1<<PB0);
}
}
}
Ich habe es so gelöst: Mit einem PIC16 die einzelnen Signale zum Summensignal zusammengefasst und dieses dann mit dem Input Capture des Hauptcontrollers ausgewertet.
Gast
#3808245
Ist das nun nur so zum Basteln/ Lernen? Dann ist es OK. Denn fertige, funktionierende Lösungen zur Kopter/Motor-Steuerung gibt ja zu Hauf.
Es geht darum das ich das ganze als Diplomarbeit mache und im Zuge dessen neue Technologien verwenden will. Ich habe das ganze jetzt zum laufen bekommen und konnte den Motor Regeln, vielen dank aber für eure Hilfe :)
Es wäre nett wenn du die Lösung noch posten würdest, ansonsten kommt in zwei Jahren wieder jemand an, der wegen des gleichen Problems deinen Thread per Google gefunden hat, und fragt nach der Lösung.
Für Quellcode bitte die Formatierung verwenden:
1 | |
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
25 | |
26 | |
27 | |
28 | |
29 | |
30 | |
31 | |
32 | |
33 | |
34 | |
35 | |
36 | |
37 | |
38 | |
39 | |
40 | |
41 | |
42 | |
43 | |
44 | |
45 | |
46 | |
47 | |
48 | |
49 | |
50 | |
51 | |
52 | |
53 | |
54 | |
55 | |
56 | |
57 | |
58 | |
59 | |
60 | |
61 | |
62 | |
63 | |
64 | |
65 | |
66 | |
67 | |
68 | |
69 | |
70 | |
71 | |
72 | |
73 | |
74 | |
75 | |
76 | |
77 | |
78 | |
79 | |
80 | |
81 | |
82 | |
83 | |
84 | |
85 | |
86 | |
87 | |
88 | |
89 | |
90 | |
91 | |
92 | |
93 | |
94 | |
95 | |
Das wart dann mein finaler Code :)
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.