Port Pin direkt ansteuern via Bitfeld?

OP Gast #2146136
Lesenswert?

Hallo ich habe folgendes Problem:

Ich würde gerne meine I/O's direkt vie Pin-Befehl ansteuern.

BSP: IO.PRD.BIT.B0 = 1;

Ich arbeite gerade mit dem Attiny 2313 und aus dem Datenblatt habe ich 
die Adresse für das Register DDRD entnommen (0x11)

Ich habe folgendes Bitfeld aufgesetzt:
1
struct st_io {                                          /* struct IO    */
2
             union {                                    /* PRD          */
3
                   unsigned char BYTE;                  /*  Byte Access */
4
                   struct {                             /*  Bit  Access */
5
                          unsigned char B0:1;           /*    Bit 0     */
6
                          unsigned char B1:1;           /*    Bit 1     */
7
                          unsigned char B2:1;           /*    Bit 2     */
8
                          unsigned char B3:1;           /*    Bit 3     */
9
                          unsigned char B4:1;           /*    Bit 4     */
10
                          unsigned char B5:1;           /*    Bit 5     */
11
                          unsigned char B6:1;           /*    Bit 6     */
12
                          unsigned char :1;             /*    Bit 7     */
13
                          }      BIT;                   /*              */
14
                   }            PRD;                    /*              */
15
};                                                      /*              */
16

17
#define IO      (*(volatile struct st_io    *)0x11)     /* IO    Address*/

Nur funktioniert es leider nicht... weiss jemand was ich falsch gemacht 
habe? wird ja bei anderen uC auch so gelöst...

Ich hoffe ihr habt eine Idee

Gruss
OP Gast #2146175
Lesenswert?

ah jaaa geht danke :D
mit dem richtigen register und +0x20 gehts steht auch iwas in der Art im 
Datenblatt thx
1
struct st_io {                                          /* struct IO    */
2
             union {                                    /* PRD          */
3
                   unsigned char BYTE;                  /*  Byte Access */
4
                   struct {                             /*  Bit  Access */
5
                          unsigned char B0:1;           /*    Bit 0     */
6
                          unsigned char B1:1;           /*    Bit 1     */
7
                          unsigned char B2:1;           /*    Bit 2     */
8
                          unsigned char B3:1;           /*    Bit 3     */
9
                          unsigned char B4:1;           /*    Bit 4     */
10
                          unsigned char B5:1;           /*    Bit 5     */
11
                          unsigned char B6:1;           /*    Bit 6     */
12
                          unsigned char :1;             /*    Bit 7     */
13
                          }      BIT;                   /*              */
14
                   }            PRD;                    /*              */
15
};                                                      /*              */
16

17
#define IO      (*(volatile struct st_io    *)0x32) /* IO    Address*/

aber geht warscheindlich jetzt nur wenn die Pins als Input definiert 
sind, da als Output ja ein anderes Register verwendet wird.
--> Währe warscheindlich besser das struct um zu bennenen in st_o und 
ein zweites st_i zu schreiben

Danke vielmals für die schnelle Antwort Ernst :D

Greetz Stefan

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren