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

Wichtig: Bevor Du wegen einem Problem mit der CC2 postest, stelle sicher, daß Du
die neueste OS-Version, die neuseste Compiler-DLL und die neuesten Modulversionen benutzt!
Beachte, daß sich auf der CD zur CC2-Unit/Station auch jetzt noch die ältesten Dateien befinden!
Es gelten folgende Anleitung und Regeln: Regeln CC2Net.de-Forum
Zurück zum Artikel  (Blaue Felder sind Pflichtfelder)


Name:   UserID: 
 E-Mail:
Kategorie
Betreff
Homepage:
Link-Titel:
Link-URL:
Cookie für Name, UserID, E-Mail, Homepage-URL setzen
(Erspart die Neueingabe bei Beiträgen und Antworten)
(Zum Löschen des Cookies hier klicken)
Ich nutze:
C-Control II Unit
C164CI-Controllerboard
C-Control II Station
CCRP5 mit CC2-Unit (Conrad Roboter)
CC2-Application-Board
CC2-StarterBoard
CC2-ReglerBoard
eigenes Board
original OS     OSOPT_V2     OSOPT V3.0 OSOPT V3.1

Kommentar:
Einfügen von HTML im Kommentar:

Link einfügen: <a href="LINKURL" target="_blank">LINKTITEL</a>
Bild einfügen: <img src="BILDURL">
Text formatieren: <b>fetter Text</b>  <i>kursiver Text</i> <u>unterstrichener Text</u>
Kombinationen sind auch möglich z.B.: <b><i>fetter & kursiver Text</i></b>
C2 Quellcode formatieren: <code>Quellcode</code>
ASM Quellcode formatieren: <asm>Quellcode</asm>
(Innerhalb eines Quellcodeabschnitts ist kein html möglich.)
Wichtig: Bitte mache Zeilenumbrüche, bevor Du am rechten Rand des Eingabefeldes ankommst !  

> Hallo Volker, > > > Ich möchte 3 Digitalports abfragen (Wechsel von low nach high). Allerdings weiß ich nicht wann > > und welcher Port auf high geht. Ich müsste also alle drei Port regelmäßig in einer Schleife abfragen. > > Um mehrere Ports abzubragen, kannst Du diese zusammenfassen. > Bei drei Ports fragst Du am besten einen Nibble-Port ab. > Das geht nur, wenn es 3 benachbarte Ports sind (P1L.0 bis .3, P1L.4 bis 7, P1H.0 bis 3, P1H.4 bis .7) > Nehmen wir mal die drei Pins P1H.0 bis P1H.2 an. > So kannst Du die Ports mit folgender Zeile Prüfen, ob einer oder mehrere Port > einen High-Pegel besitzen: > <code> > Zustand=ports.getn(3) and 0b0111; > </code> > Nun hast Du den Portzustand in den ersten drei Bits. > Wenn man nun den Zutsand mit der vorherigen Abfrage mit Hilfe ein paar Logischen > verknüpfungen vergleicht, kann man auf die Flankenänderung reagieren. > > Alternativ kannst Du die Counterports verwenden. > Wenn Du immer dieselbe Routine ausführen möchtest, egal welcher Port auf High > geht, kannst Du einfach folgendes machen: > <code> > if ports.getcount(0)+ports.getcount(1)+ports.getcount(1) tuedies(); > </code> > > Allerdings reagieren die Counterports standardmäßig nur auf High-Low-Flanken. > Man kann dies aber umkonfigurieren. > Dazu muß man aber einen Blick ins Manual des C164CI werfen. > zuständig ist das EXICON-Register: (Fast External Interrupts) > <code> > inline function setEXICON(int value) > { > inline vmcodes.VM_STORE_ABSOLUTE_INT; > inline 0xF1C0; > } > </code> > > Im Register werden die unteren 8 Bit benutzt. > Bit 0,1 : P1H.0 > Bit 2,3 : P1H.1 > Bit 4,5 : P1H.2 > Bit 6,7 : P1H.3 > > Kurz mal aus dem Manual kopiert: > External Interrupt x Edge Selection Field (x = 7 … 0) > 0 0: Fast external interrupts disabled: standard mode > 0 1: Interrupt on positive edge (rising) > 1 0: Interrupt on negative edge (falling) > 1 1: Interrupt on any edge (rising or falling) > > Standardmäßig ist für alle Ports 0b10 konfiguriert. > Im Register steht also 0b10101010. > Sollen nun die Ports P1H.0 bis .2 auf eine steigende Flanke reagieren, aber > P1H.3 unverändert bleiben, muß der Wert 0b10010101 geschrieben werden. > > > Eigentlich ein Fall für Hardwareinterrupts. > > Geht so etwas mit der C-Control Station? Oder gibt es noch eine andere Möglichkeit? > > Mit der CC2 (egal, ob CC2-Unit oder CC2-Station) sind prinzipiell Interruptroutinen möglich. > Allerdings nur in Assembler. > Der Weg über die Counterports sollte aber in den meisten Fällen reichen. > > Eines noch, wenn Du die CC2-Station nutzt. > Derjenige, der die Station-Platine entworfen hat, (das war keiner der an der CC2 entwickelt hat) > hat leider ein paar Designfehler "eingebaut". > Es fehlen die Pull-Up-Widerstände an den Counter-Ports. (P1H.0 bis .3) > Wenn diese Ports nun unbeschaltet und als Eingänge(=Standard) definiert sind, sind > diese sehr anfällig für Störungen. das kann dazu führen, daß soviele Interrupts > ausgeführt werden, daß das Programm langsamer wird. > In einem Fall man es mal fast zum Erliegen der Ausführung. > Darum müssen die Coutner-Ports bei der CC2 immer beschaltet werden, damit > ein definierter Pegel anliegt. > Die einfachste Möglichkeit, wäre, unbenutzt Ports bei Programmstart auf Ausgang zu schalten. > Das sinnvollste sind Pull-Widerstände. > Alternativ kann man über das EXICON-Register auch nicht benötigte Interrupts einfach abschalten. > > Davon nicht betroffen sind folgende Platinen: > CC2-Application-Board > CC2-StarterBoard > CC2-ReglerBoard > Advanced CC2-Station. > > > MfG André H.
Dateianhang: (.gif, .png., .jpg, .zip, .rar)
max. 256kB
max. 256kB