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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.