Hallo, ich steige gerade ein, mich mit dem AT91SAM7A3 zu beschäftigen, habe mir ein Board selbst geschnitzt und versuche gerade einige Sachen darauf zu programmieren. Jetzt hänge ich, weil ich es einfach nicht schaffe, den Zustand eines Pins einzulesen - irgendwie bin ich anscheinend zu blöd. Ich habe PIOA folgendermaßen initialisiert: *AT91C_PIOA_PER = 0x03FC0003; *AT91C_PIOA_PDR =~0x03FC0003; *AT91C_PIOA_OER= 0x03FC0002; *AT91C_PIOA_ODR=~0x03FC0002; *AT91C_PIOA_IFER= 0x00000000; *AT91C_PIOA_IFDR= 0xFFFFFFFF; *AT91C_PIOA_IER= 0x00000000; *AT91C_PIOA_IDR= 0xFFFFFFFF; *AT91C_PIOA_MDER= 0x00000000; *AT91C_PIOA_MDDR= 0xFFFFFFFF; *AT91C_PIOA_PUER= 0x00000001; *AT91C_PIOA_PUDR= 0xFFFFFFFE; *AT91C_PIOA_ASR= 0x0000000C; *AT91C_PIOA_BSR= 0x00000000; *AT91C_PIOA_OWER= 0x01C00002; *AT91C_PIOA_OWDR=~0x01C00002; *AT91C_PIOA_SODR= 0x01C00000; *AT91C_PIOA_CODR=~0x01C00000; nun möchte ich den Zustand von Pin 22 = PA0 wissen, bekomme aber mit a=*AT91C_PIOA_PDSR; immer null, egal welcher Pegel am Pin anliegt. Was mache ich falsch? Den Pin wackeln lassen kann ich, wenn er als Ausgang initialisiert ist, UART0 neben dran tut auch, aber als Zustand der I/Os bekomme ich immer 0. Danke schon mal Ray
Hast du die Clock für die PIO enabled? Falls nicht, funktionieren Interrupt und Einlesen nicht. Nach dem Reset ist die PIO-Clock übrigens disabled. Zu finden ist das ganze im Kapitel PMC.
Danke, das scheint es gewesen zu sein - auf den Gedanken, dass dem IO-Block der Takt fehlen könnte, bin ich gar nicht gekommen - schliesslich funktionierte die Ausgabe (Set/Clr) von Pins. Dies benötigt offensichtlich keinen Takt. Danke nochmal Ray
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.