Archiv verlassen und diese Seite im Standarddesign anzeigen : LED Ansteuerung
Hallo zusammen,
ich hab den Robby ganz neu und möchte mich jetzt mal reinarbeiten.
Dazu wollte ich einen kleinen Zähler erstellen (an LEDs), z.B. MOD 10.
Bisher hab ich aber nur rausgefunden, wie ich einzelne LEDs ansteuren kann, wie z.B. LED1_F=on. Wie kann ich aber nun an den LEDs eine bestimmte Bitfolge anlegen, sodass ich z.B. mit einer Tabelle am Programmende einen bestimmten Zähler erstellen kann? Liegen denn die LEDs an irgendeinem Port, damit ich den Port vielleicht ansprechen könnte?? Danke schon mal für eure Hilfe!
Gruß
Hi knife,
was willst du machen?
Mit gosub LEDxON, gosub LEDxOFF, gosub LEDSON, gosub LEDSOFF kann man doch alles machen.
Alternativ kannst du mit den Flags LEDx_F und Aufruf von gosub EXTPORT_WRITE die LEDs direkt ein-/ausschalten:
z.B.:
LED1_F=1 : gosub EXTPORT_WRITE
... schaltet LED 1 ein.
Gruß Dirk
Die EXTPORT-Variable ändern, die oberen 4 Bits sind die 4 LED's
Also z. B. für ne binäre 13:
EXTPORT = (EXTPORT AND &H0f) OR &Hd0 : GOSUB EXTPORT_WRITE
Ich glaub &H war doch glaub beim CCBASIC bei Hexadezimalzahlen am Anfang...
Wenn du der Sprache C mächtig bist gehts mit meinem C-Compiler übrigens einfacher (leds(LEDX, 0xd0); und fertig) *werbungmach* :D
Wart aber noch bis morgen falls du ihn dir runterladen möchtest, dann werd ich endlich die neue Version rausbringen. Mit Tabellen guckts bei meinem Compiler aber noch schlecht aus, die hab ich noch nicht implementiert ;)
hallo dirk, erstmal danke für deine antwort!!!
die funktionen ledx on/off sind für einen automatischen zähler doch sehr unpraktisch, man müsste ja jedesmal die leds belegen. was ich wollte ist, dass ich in einer tabelle (array) werte ablege (z.B.: 0001, 0010, 0011, ...) und anschließend diese werte nacheinander an die leds ausgeben, z.B. mit for-schleife. gibts denn sowas?
gruß und danke!!!
Jop machst du das ganzenoch in eine for-Schleife wo ich geschrieben hab, das &Hd0 ersetzt du durch den Wert aus der Tabelle. Musst aber die oberen 4 Bits nehmen also bei deinen Beispielwerten &H10, $H20, &H30.
Hallo knife,
was ich wollte ist, dass ich in einer tabelle (array) werte ablege (z.B.: 0001, 0010, 0011, ...) und anschließend diese werte nacheinander an die leds ausgeben, z.B. mit for-schleife. gibts denn sowas?
Man könnte das "klassisch" so machen:
'IIIIIIII Binärausgabe mit den 4 LEDs IIIIIIII
' Der Robby kann OHNE zusätzliche Hardware keine Werte (z.B.
' seiner Sensoren) anzeigen. Diese Routine gibt VALUE mit den
' 4 LEDs in Binärform (als 2 Nibble mit je 4 Bit) aus.
' Die Variable VALUE muss als BYTE definiert sein!
#LEDBINOUT 'Ausgabe 1. Nibble (low)
gosub LEDSOFF: gosub LED1FLASH: gosub LED1FLASH
gosub LED1FLASH: gosub LED1FLASH: gosub LED1FLASH
if (VALUE and &B1) <> 0 then gosub LED1ON
if (VALUE and &B10) <> 0 then gosub LED2ON
if (VALUE and &B100) <> 0 then gosub LED3ON
if (VALUE and &B1000) <> 0 then gosub LED4ON
pause 100 'Ausgabe 2. Nibble (high)
gosub LEDSOFF: gosub LED2FLASH: gosub LED2FLASH
gosub LED2FLASH: gosub LED2FLASH: gosub LED2FLASH
if (VALUE and &B10000) <> 0 then gosub LED1ON
if (VALUE and &B100000) <> 0 then gosub LED2ON
if (VALUE and &B1000000) <> 0 then gosub LED3ON
if (VALUE and &B10000000) <> 0 then gosub LED4ON
pause 100: return
#LED1FLASH
gosub LED1ON: pause 5: gosub LED1OFF: pause 5: return
#LED2FLASH
gosub LED2ON: pause 5: gosub LED2OFF: pause 5: return
'Binär-Dezimal-Tabelle (4-Bit):
' WERT: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
' LED1-> 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
' LED2-> 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1
' LED3-> 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1
' LED4-> 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
'
' Der Dezimal-WERT kann in der 1. Zeile abgelesen werden, wenn man
' die zutreffende LED-Kombination aussucht (1 -> an, 0 -> aus).
' Der Wert des 2. Nibbles (high) kann genauso abgelesen werden,
' muss aber noch mit 16 multipliziert und zum 1. Nibble addiert
' werden, um den ganzen 8-Bit-Dezimalwert (0..255) zu erhalten.
VALUE enthält dann den auszugebenen Wert.
Gruß Dirk
hallo nochmal, hab doch nochmal eine frage:
Mir sind immer noch nicht bestimmte grundlegende Funktionen von Robby ganz klar. Was macht den z.B. die Funktion export bzw. extport_write? Was ist den der extport? Und wie kann ich herausfinden wo Port1, Port2, ..., und die Jumper 1..5 liegen? (von denen im Handbuch gesprochen wird)?
Kennt ihr vielleicht eine Seite, wo das ganze noch etwas genauer beschrieben wird? Ich finden das Handbuch nicht sehr hilfreich, auch die Quelltext sind schlecht kommentiert.
Nochmal VIELEN DANK!!!!!
Gruß
Arexx-Henk
30.07.2006, 17:51
Hallo,
So weit ich's noch ein bischen im kopf habe...
Die 4 Leds sind direkt verbunden mit ein schieberegister IC (74HC4094) mit nummer I11
Im systeemtreiber P5DRIV.SYS befindet sich eine Funktion SYSTEM.
Mit SYS SYSTEM wird diese systeemtreiber Funktion SYSTEM angerufen/ausgefuhrt.
Diese SYSTEM Funktion holt sich den Byte Wert aus Register 4 (den EXTPORT Register) und schiebt Bit fur Bit diesen Byte aus Port 1 (SDIO) heraus und generiert wahrend jeden bit ein puls auf Port 3 (SCLIO). Wenn alle 8 Bits aussen sind generiert die Funktion am ende nog ein Puls auf Port 4 (STROBE).
Diese 3 signalen SDIO/SCLIO/STROBE gehen alle zum schieberegister IC.
Damit werden die 8 bits vom EXTPORT Register heraus in dass IC herein geschoben. Die letzten STROBE sorgt dafur dass die hereingeschobene bits am ausgange vom IC wie hoch oder niedrich actief werden.
Mit die hochsten 4 bits werden die LEDs gesteurt, mit die niedrichsten Bits werden z.B. die COM_NAV Power ein/ausgeschaltet.
Gruss
Henk
Hey danke henk!!! Hat mir doch einiges weitergeholfen!!! Aber woher hast du diese Infos. Hast du dir das selbst erarbeitet, oder kann man das irgendwo nachlesen??
gruß
Arexx-Henk
31.07.2006, 19:20
Ha, ha,
diesen info hab ich mir selber erarbeitet.
Ich hab die Robby schematics und die P5DRIV.SYS mal richtig zeile fur zeile studiert und Du findest hier dass ergebnis vom P5DRIV.SYS 'studierung'
http://home.planet.nl/~winko001/Robby/Info/RobInfPagFrm.htm
Und daneben hab ich schon dutzende Robby's repariert. ;-)
Gruss
Henk
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.