Hallo NG, wie kann ich denn eine der beiden Taste auf meinem AT91SAM7256 abfragen? bis jetzt versuche ich: ldr r0, =0xFFFFF400 taste ldr r1, [r0, #0x08] and r1, r1, #10000000000000000000b cmp r1, #10000000000000000000b bne taste Leider tut sich nichts. Es sollte halt eine der beiden Tasten (an PA19 oder PA20) abgefragt werden... Verständnisfrage: Sind automatisch alle PINS, die nicht über 0xFFFFF410 auf Ausgang gesetzt sind, auf Input? Wenn nicht -> wie kann man denn dann PINS für die Eingabe konfigurieren? Vielen Dank für jeden Hinweis! Peter
Nach einem Reset, sind bei den AT91 alle PIOs als Eingänge mit aktivem Pullups konfiguriert. Warum benutzt du keinen Compiler? Grüße
> Warum benutzt du keinen Compiler? Ich weiß nicht, ich mache so viel den ganzen Tag mit irgendwelchen Hochsprachen. Irgendwie vergisst man bei all den GHz was da eigentlich für eine Leistung dahinter steckt. Auf dem ARM möchte ich mich halt ein bischen abreagieren. Ausgabe klappt jetzt schon ganz gut. Ein kleines Beispiel für das Warten auf einen Tastendruck würde mich sehr freuen. Grüße, Peter
Jetzt habe ich im Manual gesehen, dass ich wahrscheinlich an der falschen Stelle nach Änderungen an den Pins suche. Gefunden habe ich: 0x003C Pin Data Status Register(3) PIO_PDSR Read-only aber funktionieren tuts trotzdem nicht. Kann mir jemand sagen, was ich falsch mache? ldr r0, =0xFFFFF400 taste ldr r1, [r0, #0x3c] and r1, r1, #10000000000000000000b cmp r1, #10000000000000000000b bne taste
Hallo Peter, hast du daran gedacht, dem PIO den Takt zuzuführen? Ich weiß das Register nicht aus dem Kopf, aber dort kannst du den Takt für den PIO (USB, etc.) freischalten. Nach einem Reset ist das Bit 0 -> kein Takt. Gruß, Greg.
>hast du daran gedacht, dem PIO den Takt zuzuführen? >Ich weiß das Register nicht aus dem Kopf, aber dort kannst du den Takt >für den PIO (USB, etc.) freischalten. >Nach einem Reset ist das Bit 0 -> kein Takt. Für was ist der Takt genau notwendig? Benötigt man den Takt nur für Input? Gilt der Takt für alle Pins, oder kann man das festlegen? ...Weil dia Ausgabe auf meine LEDs funktioniert ja bereits... Danke!
Hallo Peter, der Takt wird für das gesamte PIO-Modul geschaltet. Ich schalte stets den Takt zu, wenn ich auf das PIO-modul zugreifen will. Gruß, Greg.
Hallo NG, jetzt habe ich wieder mal alles mögliche probiert. Aber leider klappt es immer noch nicht. Im Manual-PDF (AT91 ARM Thumb-based Microcontrollers) habe ich auf Seite 81 (Kap 15.5) genau das gefunden, was ich machen will. Kann mir mal bitte jemand verraten, wie ich die Beispiele oben mit der Tabelle darunter in Verbindung sehen darf? Ich denke, dann könnte ich wieder ein paar Schritte weiterkommen... Vielen Dank! Peter
Hi du brauchst zwingend einen Takt im PIO Block sonst werden keine Eingänge eingelesen. Ausgänge funktionieren dagegen. Das ganze hängt damit zusammen das man in schnellen Logikdesigns alle internen Signale synchron zum Takt haben will weshalb Eingangssignale mit einem FF synchronisiert werden und dazu brauchts eben einen Takt -> PMC Matthias
>synchronisiert werden und dazu brauchts eben einen Takt -> PMC
Ok, verstehe ich das richtig - Du meinst den
Power-Management-Controller?
Da gibt es mehrere Clocks... welche muss ich mir denn genauer anschauen?
Hi es geht um die Peripheral Clocks. Wenn du das Register das diese aktiviert auf 0xFFFFFFFF setzt werden alle Peripheriegeräte mit Takt versorgt. Nicht optimal sollte aber erstmal helfen. Matthias
@Matthias hey, das ist ja total GENIAL! Die Taste tuts! Habe am Anfang noch: ldr r0, =0xFFFFFC00 ldr r1, =0xFFFFFFFF str r1, [r0, #0x10] hinzugefügt. Und das klappt! VIELEN DANK! Eine Frage hätte ich aber noch: wenn 0xFFFFFFFF in 0xFFFFFC00 nicht so optimal ist - was wäre denn dann Optimal?
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.