-         

Ergebnis 1 bis 6 von 6

Thema: Abfragen aller 8 Taster am STK500, wie mach ich das?

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    24.05.2006
    Beiträge
    27

    Abfragen aller 8 Taster am STK500, wie mach ich das?

    Anzeige

    Hallo,
    versuche gerade ein Programm zu schreiben, dass eine Übertragung zum PC startet, wenn eine der 8 Taster am STK500 gedrückt wurde. Bis jetzt habe ich immer nur einzelne Taster abgefragt, z.B. if(!bit_is_set(PINA,PINA0)), wie mach ich das elegant für den ganzen PORTA?

    Gibt es eigentlich irgendwo eine gute Beschreibung der ganzen Befehle, von WinAVR, wie z.B. bit_is_set usw?

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    02.11.2005
    Alter
    42
    Beiträge
    1.140
    Ganz einfach:
    if (PINA != 0xFF) oder noch eleganter
    if (~PINA)

    Eine Beschreibung der Befehle der libc findest Du in Deinem WinAVR-Verzeichnis unter \doc\avr-libc\avr-libc-user-manual-1.4.4.pdf

    Gruß,
    askazo

  3. #3
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.801
    "if (~PINA)" ist zwar elegant, wird aber nicht funktionieren, denn
    -- das liest PINA
    -- expandiert PINA zu 16 bit (PINA ist unsigned char)
    -- mach das 1-er komplement darauf (bildet 0xff also auf 0xff00 ab)
    -- guckt nach, ob das 0 ist oder nicht

    Das ist was anderes als if (~(signed char) PINA)
    Disclaimer: none. Sue me.

  4. #4
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    02.11.2005
    Alter
    42
    Beiträge
    1.140
    Oha, wusste nicht, dass PINA 16 bit breit ist.
    Wieder was gelernt

    Mögliche Lösungen sind also:

    if (PINA != 0xFF) oder
    if (~(signed char)PINA) oder
    if (~PINA & 0xFF)

    Gruß,
    askazo

  5. #5
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.801
    nein PINA ist nicht 16 bit breit. Das ist ein Effekt von if zusammen mit ~ und der C-Spezifikation.
    Disclaimer: none. Sue me.

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    24.05.2006
    Beiträge
    27
    Hi,
    danke erstmal!

    Gibt es auch noch eineleichte Möglichkeit den Taster zu entprellen und um zu testen ob man länger auf den Knopf drückt, damit nicht mit einem langen Druck 100 mal übertragen wird?

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •