Forum: Mikrocontroller und Digitale Elektronik Pegel am Pin in ein Byte lesen


von St.Norbertus (Gast)


Lesenswert?

Hallo,
ich bin sicher, das ist schon mal diskutiert worden - aber wo finde ich
das nur?

Also, an einen Pin vom mega64 steht von extern ein serieller Datenstrom
an. Der Clock hierzu wird vom mega64 geliefert. Die Daten, die ankommen,
müssen in einer Variablen(Byte) abgelegt werden.

Mein Problem ist, wie füge ich die einzelnen Pin-Informationen in meine
Variable ein.

Mein Compiler: CodeVision

Schönen Gruß Norbert

von OldBug (Gast)


Lesenswert?

Aus dem Kopf (ungetestet):

uint8_t
getbyte(void)
{
    unit8_t bitcnt = 0, retval = 0;

    for(bitcnt = 0; bitcnt < 8; bitcnt++)
    {
        retval <<= 1;

        if(PINx & (1 << Pxx))
            retval |= 1;
        else
            retval &= ~1;
    }

    return retval;
}

von St.Norbertus (Gast)


Lesenswert?

Hallo OldBug,

besten Dank, für diesen Code. Werde den übers Wochenende austesten.
Da ich, evtl., auch eine ulong-Variable beschreiben möchte, kann ich
den Code ja leicht anpassen.


Schönen Gruß Norbert

von OldBug (Gast)


Lesenswert?

Richtig, einfach die schleife und die Datentypen anpassen!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.