Forum: Mikrocontroller und Digitale Elektronik PIO Pullup ausschalten


von Philipp (Gast)


Lesenswert?

Guten tag,

ich habe folgendes Problem. Ich will den PIO_Pullup abschalten da sie 
beim AT91Sam7x256 direkt nach dem Reset auf High stehen. Ich habe schon 
viele definitionen gesehen aber die meisten ergeben für mich einfach 
keinen Sinn.

Ich will am Anfang das PIO_PUSR <--"Falls es so heist" setzen also das 
Statusregister und dann mit PIO_PUDR <--"Falls es so heist" den Resistor 
Disablen.

Wo ich das mache ist mir wohl klar ich weiß halt einfach nur nicht wie 
man den Befehl schreibt und ob dieses PIO_P*** für meinen 
Mikrocontroller korrekt ist. Ich hab auch schon Befehle gesehen die so 
aussahen

PIO_PSR, PIO_PUSR, PIO_PPUSR = Pull-up Enable Register
PIO_PDR, PIO_PUDR, PIO_PPUDR = Pull-up Disable Register

Bitte helft mir ich dreh hier sonst noch am rad ^^

Gruß Philipp

von kurz (Gast)


Lesenswert?

Stehts im Datenblatt, wie es geht?

>Ich habe schon viele definitionen gesehen aber die meisten ergeben für mich 
>einfach keinen Sinn.

Warum willst Du dann hier eine neue MEINUNG einholen? Glaubst Du der 
Meinung dann ? Schau in die Unterlagen zum uP.

und gut.

von Philipp (Gast)


Lesenswert?

im Datenblatt steht nur ein kurzer Text das man die PIO enablen und 
disablen kann aber nicht wie der Befehl dazu aussehen muss. Die 
schreiben das zwar so:

PIO_PSR = PIO Status Register
PIO_PER = PIO Enable Register
PIO_PDR = PIO Disable Register

aber kein Befehl beispiel!!!

von Philipp (Gast)


Lesenswert?

ok also um den PULL-UP aus, ein und auslesen zukönnen brauche ich diese 
Definition:
PIO_PUSR = Pull-up Status Register
PIO_PUER = Pull-up Enable Register
PIO_PUDR = Pull-up Disable Register

nun weiß ich trotzdem noch nicht wie ich den Befehl schreibe.
hab schon folgendes ausprobiert:
1
#define NUT_PIO_STATUS  (0xFFFF0068) //Basisaddresse (PIO_BASE) + PIO_PUSR
2
#define NUT_PIO_DISABLE  (0xFFFF0060) //Basisaddresse (PIO_BASE) + PIO_PUDR
3
#define E_FA_GELB 23 //Der Eingang den ich Disablen möchte
4
5
int main (void)
6
{
7
unsigned int pio;
8
9
pio = inr (NUT_PIO_DISABLE);  //Schreibe den Inhalt des Registers in pio
10
pio = pio | (1<<E_FA_GELB);  //Setze Bit für den entsprechenden Eingang
11
outr(NUT_PIO_DISABLE, pio); //Schreibe den Inhalt wieder ins Register
12
}

aber das funktioniert auch nicht. Denke aber das ich der Sache schon 
näher komme.

von Philipp (Gast)


Lesenswert?

Weiß wirklich niemand wie man diese doofen Pull-ups ausschaltet?

von Philipp (Gast)


Lesenswert?

Ok alles klar habs jetzt selbst hinbekommen. Für alle anderen:

Es ist wichtig dem MC zu sagen um welchen Port es sich handelt. Sprich 
Basisaddresse von Port A ist nicht 0xFFFF0000(PIO_BASE) sondern 
0xFFFFF400 (PIOA_BASE).

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.