PPM-Signal mit einem Atmel AT89C51AC2 ausgeben

OP #778135
Lesenswert?

Hallo Leute

Ich bin neu in diesem Forum.
Ich bin mit meiner Diplomarbeit fast am verzweifeln, ich krieg kein 
richtiges PPM-Signal aus meinem uP heraus. Der Abgabetermin ist auch 
schon am 8. März.

Nun mal die Beschreibung der Arbeit:
Ich will mit einer Helmsteuerung der MK steuern können. Abhängig von der 
Kopfbewegung, wird der MK in die gewünschte Rischtung gesteuert. Ich 
verwende 1 Beschleunigungssensor, mit der X-Achse steuere ich die 
Roll-Bewegung und mit der Y-Achse die Nick-Bewegung. Zusätzlich für die 
Gier-Bewegung benötige ich einen Gyro (Winkelbeschleunigungssensor), der 
mir aber nur bei einem Impuls, der MK ca. für 1 Sek. nach link oder nach 
rechts dreheh lässt. Für Pitch benötige ich ebenfalls einen 
Beschleunigungssensor, der am linken Daumen befestigt werden soll, hier 
ist es die Y-Achse.
Alle diese analogen Werte digitalisiere ich zuerst im uP und dann 
beginne ich pro Kanal die Abfrage, wie die Pulslänge ausgegeben werden 
soll.
Ich habe die einzelnen Sensoren-Ausgänge mal einzeln in einem Programm 
getestet, da sieht man shcön im KO, wie die Pulslänge zwischen 1ms bis 
2ms sich ändert, wenn ich mein Print drehe.
Nur wenn ich alle Kanäle in einem Programm zusammenfüge, so bekomme ich 
kein richtiges PPM-Signal. Ich glaube da stimmt etwas mit dem 
Start-Pulse nicht.

Im Anhang findet Ihr mein kompletten Code.

Kann mir jemand mal einen Ansatz geben, wie er das Programmieren würde 
oder noch besser, wenn er der Fehler heraussehen würde.
Wenn Ihr noch weitere Infos von mir braucht, dann stelle ich Sie gerne 
auch im Forum.
Wenn jemand mir auch seine E-Mail Adresse geben würde, so könnte ich der 
Code per E-Mail senden, ist vielleicht dann übersichtlicher.
Die Entwicklungsumgebung ist uVision3.

Vielen Dank für Eure Hilfe im Voraus.

Gruss Antonio
Angehängte Dateien:
OP #779364
Lesenswert?

Hallo,

Mit meinem Code kann ich jetzt das PPM-Signal ausgeben. Nur das einlesen 
der analogen Werte der Sensoren in der Funktion analog_wert_einlesen() 
funktioniert nicht richtig.
Komisch ist, dass alle geraden Durchläufe, also Durchlauf 0, 2, 4 in der 
Schleife nicht funktionieren. Hat das etwas mit der Schlaufe zu tun?

Hat da jemad einen Typ?

Im Anhang ein Auszug des ADC Datenblattes.

Danke und Gruss

Antonio
Angehängte Dateien:
Gast #780058
Lesenswert?

Du übergibst mehreren Funktionen arrays als Argumente.
Soweit ich weis, ist das nicht möglich. Man kann Funktionen (glaube ich) 
nur "normale" Variablen, aber keine arrays oder stuctures übergeben.
MC

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren