Das Open-Control-Projekt - Die Alternative zur C-Control-I


Das Forum zur C-Control-1
Welche C-Control-Varianten existieren?
Übersicht - Suchen - Neueste 50 Beiträge - Neuer Beitrag - Login - Registrieren
INFO - FAQ - CC2-Forum - CCPro-Forum 

 Re: Tastenabfrage am Open Mini Kategorie: Open-Micro/Open-Mini/Open-Midi/Open-Macro/Open-Maxi (von Andreas - 3.04.2009 13:37)
 Als Antwort auf Re: Tastenabfrage am Open Mini von André H. - 3.04.2009 11:20
Andreas nutzt:  Open-Micro, Open-Mini
Hallo André

danke für Deine Antwort.
das mit dem Kursiv (Text-Tags) habe ich nur der Deutlichkeithalber gemacht, weil ich dazwischen geschrieben habe.
Den Code
allleds_a = 0                              ' alle Ports A ausschalten
allleds_b = 0                              ' alle Ports B ausschalten

habe ich in einem Beitrag gefunden. Leider habe ich in der Doku keinerlei Info zu diesem recht speziellen Befehl gefunden. Allerdings habe ich beim Testen schon bemerkt, dass er auf alle Ports wirkt.
Zitat Doku:
Byteport
Mit dem Befehl wird ein 8-Bit-Digitalport definiert. Daraufhin können PORT[1] bis PORT[6] und PORT[9] bis PORT[16] im Byteformat angesprochen werden. Das entspricht PORTA und PORTB vom OM-Kontroller.
Nach der Portdefinition kann das aber Ein- und Ausgang sein .?

Aber ich teste es heute abend mal ohne byteport.

Das  man if <resource>= On then <Befehl> einfacher schreiben kann weiß ich. Das ist jetzt nur der schnelleren Ãœbersichtlichkeit halber so gemacht. Im richtigen Programm ist das nicht so. Das ist hier ja nur ein Test, um Herauszufinden warum keine Abfrage erfolgt.

Und, ja ich habe Widerstände nach GND an den Tasten-Ports. Genaugenommen bräuchte ich aber nur einen Befehl, der die Pullups von Port 1 und 2
pullupa = &b00111101      ' Schaltet die internen Pull-Up-Widerstände von Port1 und Port2 au
und von Port 14 und 15 ausschaltet. Und letzteren weiß ich nicht wie die Adresse lautet bzw. wie das Schema aufgebaut ist, was dahinter steckt.

danke für die Code-Tag-Anleitung - hatte ich nicht gesehen ;-)

Andreas

> Hallo Andreas,
>
> Dein Programm kann nicht funktionieren, da Du alle Ports auf Ausgang setzt:
> define allleds_a byteport[1]  ' Sammelfestlegung aller LEDs an Port a
> define allleds_b byteport[2]  ' Sammelfestlegung aller LEDs an Port b
> ...
> allleds_a = 0                              ' alle Ports A ausschalten
> allleds_b = 0                              ' alle Ports B ausschalten
>
> Wie willst Du da eine Taste abfragen können, wenn alle Ports auf Ausgang stehen?
>
> Ãœbrigens brauchst Du Abfragen wie if <resource>=On then <Befehl> einfacher schreiben:
> if <resource> then <Befehl>
> Das Statement beim If wird auf ungleich 0 geprüft. Wenn man nur True und False unterscheidet, ist
> daher diese vereinfachte Abfrage sinnvoller. Nebenbei spart diese noch zwei Byte bei den OMs.
> Beachte auch, daß bei den Open-Micro/-Mini/-Midi nur Byte als größter Datentyp zur Verfügung steht.
> Werte größer 255, sowie negative Werte sind nicht direkt möglich.
> "On" wird daher bei der OM auf 255 gestutzt.
>
> Was mit noch auffällt: Du hast die internen Pull-Widerstände deaktiviert. Ich hoffe, Du hast
> externe Pull-Widerstände an den Tasten. Sonst wird wird die Abfrage auch deshalb nichts.
>
> MfG André H.
>
> PS: Benutze bitte die Code-Tags, wie oberhalb vom Eingabefeld beschrieben. Dann liest sich
>        Quellcode deutlich besser, als wenn Du ihn kursiv formatierst.

 Antwort schreiben

Bisherige Antworten: