Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

Re: Signal vom Modellbauempfänger auswerten Kategorie: Programmierung (von André H. - 15.04.2004 9:01)
Als Antwort auf Re: Signal vom Modellbauempfänger auswerten von Holger - 11.04.2004 13:00
Ich nutze:
C-Control II Unit, C164CI-ControllerBoard, CC2-Application-Board, CC2-StarterBoard, CC2-ReglerBoard, OSOPT_V2, OSOPT V3.0
Hallo Holger,

> Kann leider nicht sagen wie genau sich einzelne Empfänger
> verhalten. Vermute das die Kanäle Zeitversetzt ausgegeben
> werden, der Impuls so ab 2,5 Volt bis UB sowie ca. 1,5ms
> Länge liegen werden.

Ich werde das im Sommer einmal mit ein paar Empfängern testen.
Soviel ich weiÃ?, liegt die Impulsdauer bei 0,5 bis 2,5ms. Dieser
wird normal ca. alle 20ms gesendet. Das würde dafür sprechen,
da� die Impulse an den Kanälen Zeitversetzt ausgegeben werden.
Es kannaber auch sein, da� sich hier PPM- und PCM-Empfänger verschieden
verhalten.

> Habe mir überlegt am besten wäre schon eine Interruptroutine:
> wenn die erste Flanke erfasst wurde, wird eine Zählschleife
> gestartet die läuft bis die fallende Falnke festgestellt
> wurde und aus dem Wert wird ein z.B.: 8 Bit Wert gebildet
> und an die aufrufende Routine zurückgeliefert.
> So werden die vollen 8 Bit ausgeschöpft, egal wie lang der
> Impuls war ( 1-4ms). Das müsste eigentlich gehen, hoffe ich.

Das würde gehen. Man kann die Interruptsensiblen Ports so konfigurieren,
daÃ? sie auf beide Flanken reagieren.
Dazu könnte man einen Timer (z.B. T3) hochauflösend laufen lassen.
Man würde dann den Zählerstand bei jeweils beiden Flanken erfassen
und voneinaner subtrahieren.
Die Werte sollte man im internen RAM zwischenspeichern. Hier gibt es zwei
Bereiche in denen noch Platz wäre. (z.B. der bitadressierbare Bereich)

Allerdings könnte man so nur max. 4 Känäle erfassen.
Mit ein wenig Hardware, mit der man dir Eingänge multiplext, gingen auch mehr.

> Die HW-Verknüpfung mit der Int-Leitung sagt mir nicht so zu.
>
Diese Lösung wäre aber nicht wild.
Man würde alle Eingänge, z.B. P1L.0 - .7, oder-verküpfen und zu einem
Interruptsensiblen Port, z.B. P1H.0, führen.
Die Interruptroutine muÃ? dann nur herausfinden, an welchem Port von P1L
die Flanke auftritt. Das wäre auch nicht kompliziert.
Als Hardware bräuchte man nur ein OR-Gatter mit 8 Eingängen und an den Ports
von P1L Pull-Widerstände.

> Noch ne andere Frage:
> Gibt es eine Möglichkeit ASM-Code ohne Hardware zu testen.
> Sowas wie der Simulator der CC1 in etwa.

Für den C164 soviel ich wei� nicht.
Zumindest nicht in Tasking.

Bei der CC2 muÃ? man leider auch alles, was hardwarenah programmiert ist,
direkt in der CC2 testen. (Ports, Busse etc.)
Jedoch ist dies nicht weiter schlimm. ASM-Routinen sind relativ schnell
geladen. Das C2-Programm dazu muÃ? beim Testen schlieÃ?lich nicht immer
neu geladen werden, wenn man dafür sorgt, da� die Einsprungadresse(n)
während des Testens gleich bleibt/bleiben.

> Damit lassen sich zwar auch nicht alle Möglichkeiten
> ausschlieÃ?en bzw. erschlagen aber man kann bei dem
> Basiccode schon mal sehen ob es überhaupt rund läuft.
> Kann ich mir die CC2 durch Assembler zerschieÃ?en oder das
> OS aushebel. Bei der CC1 geht das z.B.: durch RTI anstatt
> RTS. Da kommt die CC1 angeblich ins Schleudern, bis zum
> Reset.

Das OS zerschieÃ?en kann man mit ASM-Routinen nicht.
(Dazu müsste man schon schreibend oder löschend auf Segment 0 zugreifen.
Beides geht aber nicht so ohne weiteres.)
Allerdings kann man schon die VM zum Aussetzen bringen.
Anders als bei der CC1 wird dies aber normalerweise abgefangen
und dargestellt. (Bis OSOPT_V2 als Fehlermeldung am internen LCD,
ab OSOPT V3.0 als Blinkcode an der Host-LED.)

MfG André H.



Antworten bitte nur ins Forum!
Fragen per EMail auf Forum-Postings werden nicht beantwortet!

Das macht meine Heizung gerade


    Antwort schreiben


Antworten: