www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AtMega8 + Manchester DutyCycle


Autor: R. L. (leviathanx)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

erstmal bin neu hier.. also net gleich fressen ;)
Ich hab mir schon die Topics in Bezug auf das Thema gelesen und so 
wirklich geholfen haben die auch net. Google war auch kein Superorakel

Ich möchte folgendes erreichen: einen digitalen Sensor mit dem ZacWire 
Protokoll auslesen; der µC ist ein ATMega 8515L

Definiert ist:

steigende Flanke nach 50% Zeitfenster entspricht Start Bit
steigende Flanke nach 25% Zeitfenster entspricht einer logischen eins
steigende Flanke nach 75% zeitfenster entspricht einer logischen null

Kurz um: das angehängte Programm macht den Hauptbrocken schonmal ohne 
Probleme.

- reagiert auf die fallende Flanke
- startet einen timer
- reagiert auf die steigende Flanke
- stoppt den timer

-> das Zeitfenster für einen Impuls wird richtig gemessen (mit nem Oszi 
überprüft (LED toggler))

Ich sag's gleich vorweg, ich programmier über eMail hinweg. Ich hab die 
Hardware nicht und mein Kumpel kann nicht programmieren und kennt sich 
nicht mit Entwicklungsumgebungen aus (und zwischen uns liegen gut 600 km 
Land).

Mein riesen Problem jetzt:

wie bekomm ich dies Bitstellen richtig raus. Zwei Ansätze habe ich schon 
versucht - so gut wie kein Erfolg.

Ansatz eins: den Timer mit etwas weniger als der halben Zeit 
initialisiert und dann den Wert an PIND2 ausgelesen, wenn der Compare 
IRQ getriggert wird. War irgenwdie nichts [..]

Ansatz zwei (momentan in der angehängten Datei so mal implementiert):

* nach der Messung wird der Timer gecleared
* wir warten die in der Spec beschriebenen neun fallenden Flanken
* ab der 10ten Flanke wird umgeschaltet auf steigende Flanke und der 
Timer gestartet
* wenn die steigende Flanke kommt, wird der Timer gestoppt und wieder 
auf fallende Flanke umgeschaltet (des klappt auch irgendwie ganz gut)
* anhand des Wertes des Timers und des zwischengespeicherten Wertes soll 
erkannt werden ob es eine 0 oder 1 ist

irgendwie klappt das leider nicht...

Ich kenn mich auch ehrlich nur mit den PICs so richtig aus [..]

Sind meine Ansätze im Grunde richtig oder wo mach ich hier noch fatale 
Fehler ?

Herauskommen soll: ein Bit Array welches auf eine 0-7 LED Leiste die 
Bits entsprechend ausgibt.
Ausgabe kein Ding - irgenwdie ist die negiert (0 entspricht ein, 1 
entspricht aus) was mich total verwirrt
Das Bit-Array wäre auch kein Problem - mir geht's echt nur um die 0/1 
Erkennung

Also wäre echt super für kreative und hilfreiche Antworten..

Gruß

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.