PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Ereigniszählung mit M-Unit 2.0 funktioniert.



toemchen
06.08.2006, 19:36
Hallo,

hier mal statt einer Frage ein Ergebnis.

Nachdem ich mich schwergetan hatte, zu den Frequenzeingängen im Ereigniszählermode Infos zu finden, hab' ich mich hingesetzt und probiert.

Ermutigendes Ergebnis im Klartext:

Mit der Sequenz im neuesten Workbench

declare MyConfig byte
config.init
config.get MyConfig
config.put (MyConfig or 6)
config.off

setzt man die beiden Freq-Eingänge auf Ereigniszählung. Soweit reichen Manual und Online-Hilfe.

Dann kommts:
Sie zählen.
Sie sind 16 Bit Werte.
Sie gehen bis 32768 und bleiben dann auf diesem Wert stehen, schlagen also nicht nach negativ um oder gehen wieder durch 0 durch.
Ohne weitere Impulse bleiben sie auf dem gezählten Wert stehen, werden nicht nach 1 s gelöscht oder so.
Man kann sie durch die Anweisung Freq = 0 oder Freq2 = 0 auf Null zurücksetzen.

Das ist doch ganz in Ordnung, da kann man doch eine schöne Odometrie, Wegmessung, geregelte Geradeausfahrt usw. realisieren...

Ich werd mich jetzt erstmal hinsetzen und ein schönes Slaveprogramm mit Befehlen wie "Fahre xxx cm geradeaus" und "drehe xxx Grad" schreiben.

Ciao
Tom.

DIE HARD
07.08.2006, 13:19
Hallo,

hier mal statt einer Frage ein Ergebnis.

Nachdem ich mich schwergetan hatte, zu den Frequenzeingängen im Ereigniszählermode Infos zu finden, hab' ich mich hingesetzt und probiert.




Guck mal....
In der Code-Library steht das Beispiel, das auch bei der C-Control
Installation dabei ist.
http://www.fdos.de/ccforum/codelib/basic_plus_plus/Demo_Unit_M2.0_M1.2/EXTENDED_FUNCTIONS_M2.0_M1.2/CONFIG_OBJECT/CONFIG1/EREIGNISZ%C4HLER_1.bas

Im Kopf des Programms stehen auch die Erklärungen:
'--------------------------------------------------------------------
' Dieses Beispiel zeigt die Vorgehensweise um die beiden Frequenzzähler
' als Ereigniszähler zu konfigurieren und abzufragen. Die Konfiguration
' erfolgt über ein KONFIGURATIONS-REGISTER, das wie alle erweiterten
' Funktionen Bestandteil eines OBJECTS ( hier CONFIG)ist. Das Register
' kann gelesen u. beschrieben werden.
'--------------------------------------------------------------------
' Das Konfigurations-Register bietet folgende Optionen.
'
' Bit 0 Schaltet beide PWM-DACs in den SERVO-Mode
' Bit 1 Schaltet den Frequenzzähler 1 in den EREIGNISZÄHLER Mode
' Bit 2 Schaltet den Frequenzzähler 2 in den EREIGNISZÄHLER Mode
' Bit 3 Aktiviert die PULLUP-Widerstände an PORT 1 bis 8
' Bit 4 Aktiviert die PULLUP-Widerstände an PORT 9 bis 15
' Bit 5 Zeigt an wenn die interne Uhr mit DCF77 synchronisiert wurde
' Bit 6 Signalisiert einen Fehler bei der IIC-Kommunikation
' Bit 7 Zustand der Start-Taste
'---------------------------------------------------------------------
' Einzelheiten darüber finden Sie in den Demos zu den EXTENDED FUNCTIONS
' - LCD OBJECT über die zusätzlichen Funktionen für das LCd
' - CONFIG OBJECT über die zusätzlichen Funktionen für die Konfiguraton
'
' Beschreibung:
' FREQ1 und FREQ2 sind Systemvariablen die nicht separat angelegt werden
' müssen. Ist der Zähler als Ereigniszähler konfiguriert, beeinhalten diese
' Variablen den aktuellen Zählerstand von Ereignissen.
' Im CONFIG-REGISTER bestimmen Bit 1 und Bit 2 die Funktion von FREQ1 u. FREQ2
' Beide Eingänge können getrennt konfiguriert werden, d.h. während einer
' der Eingänge ein Ereigniszähler ist kann der andere auch ein Frequenzzähler
' sein.
' Die Zähler können gelöscht werden, wenn den Systemvariablen jeweils der Wert 0
' zugewiesen wird.
' Ausserdem können Sie den Zählern beliebige Anfangswerte zuweisen, z.B.
' einem Zählerstand vom Vortag
' Der Ereigniszähler kann einen max. Wert von 32767 annehmen und zählt dann
' nicht mehr weiter
' Wenn Sie einen Frequenzgenerator an diese Eingänge anschliessen werden
' die registrierten Impulse im LCD angezeigt.
' Behelfsweise können Sie den DA1 Ausgang mit dem Frequenzzählereingang
' verbinden. Er erzeugt etwa 1880 Impulse pro Sekunde.
'
' In diesem Beispiel wird der Zähler 1 bei Null und der Zähler 2 bei 1000
' gestartet. Beide Zähler werden bei 32767 gelöscht.

toemchen
07.08.2006, 16:21
Soso, hm, ok, da stehts. Grummel.

Aber warum so versteckt im Kopf eines Beispielprogramms in der siebten Ordnungs-Unterebene? Ich glaube, ich muß mich nicht schämen, daß ich es nicht gefunden hab. In M-Unit Manual steht nur lapidar, welche Bits im Config den Ereigniszähler-Modus einschalten, und in der Online-Referenz für Basic++ steht nur, wie sich die Config-Bytes ansprechen lassen und wie man den Freq-Wert ausliest.

Immerhin kommen Probieren und Studieren auf das gleiche Ergebnis, auch schon was.

DIE HARD
07.08.2006, 17:55
Soso, hm, ok, da stehts. Grummel.

Aber warum so versteckt im Kopf eines Beispielprogramms in der siebten Ordnungs-Unterebene? Ich glaube, ich muß mich nicht schämen, daß ich es nicht gefunden hab. In M-Unit Manual steht nur lapidar, welche Bits im Config den Ereigniszähler-Modus einschalten, und in der Online-Referenz für Basic++ steht nur, wie sich die Config-Bytes ansprechen lassen und wie man den Freq-Wert ausliest.

Immerhin kommen Probieren und Studieren auf das gleiche Ergebnis, auch schon was.

Hallo.....
Es gibt zur M 2.0 mehr als 180 B++ Demos, ich hätte sie auch in ein einziges
Verzeichnis schreiben können. Aber so stehen sie halt im Verzeichnis
--> /EXTENDED-FUNCTIONS/CONFIG_OBJECT/CONFIG1
Aber deswegen musst du dich natürlich nicht schämen.
Aber du sparst dir evtl. viel Zeit, wenn du mal durch die DEMOS blätterst.

Tappi
07.08.2006, 21:00
declare MyConfig byte
config.init
config.get MyConfig
config.put (MyConfig or 6)
config.off

Hallo,

nur zur Info nebenbei: der Code wird so nicht laufen. Declare bitte durch Define ersetzen. Übrigens ist Declare bei BPP 2006 nicht mehr notwendig.

Gruß,

Stefan