ARM7 parallel input/output fråga

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
strombom
Inlägg: 3305
Blev medlem: 27 maj 2003, 10:50:20
Ort: Västra Götaland
Kontakt:

ARM7 parallel input/output fråga

Inlägg av strombom »

Ny tråd nu när jag fått igång ARM:en...

Tänkte testa att skriva och läsa lite till in/utgångarna

Finns det någon guide till hur man använder PIO-kontrollern? Trodde det skulle vara lätt att använda in/utgångarna men bara PIO-kontrollern har minst 30 olika register, man blir mörkrädd :)

(Fortfarande AT91SAM7S128)

/Johan
Användarvisningsbild
erixon
Inlägg: 380
Blev medlem: 27 augusti 2003, 10:21:58

Inlägg av erixon »

Tja...
Vad ska man säga...

För att slippa läsa in hela porten för att sätta en pine på porten så har man valt att göra två register till nästan varje funktion plus en för avläsning...

så för att enabla pull up på pinne 0
PIO_PUER = 1
och för att disabla
PIO_PUDR = 1
Detta gör att man slipper maska ut den bit man är intreserad av att ändra..


Så om man kollar så har varje "register" tre addresser
En för enabel och en för disabel och en för avläsning

Här kommer en kort förklaring på vad registerna är:

PIO_PxR (PIO x Register)
Används för att välja mellan I/O eller peripheral

PIO_PUxR (Pull-up x Register)
Pull-up (vad mer kan säga)

PIO_ASR (A Select Register)
PIO_BSR (B Select Register)
PIO_ABSR (AB Select Status Register)
Är till för att välja vilken peripheral som ska vara på
respektive pinne A eller B

PIO_PxR
Anger om det ska vara outport eller input,
om någe peripheral ansluten till porten kommer den att bestämma vad den ska vara

PIO_MDxR
Anger om utgångarna ska var Open Drain eller inte

PIO_SODR (Set Output Data Register) och
PIO_CODR (Clear Output Data Register)
Används för att sätta respetive slå av utgångarna

PIO_ODSR (Output Data Status Register) och
PIO_OWxR (Output Writen x Register)
Används om man vill skriva parrallet ut på porten
PIO_OWxR används för att maska ut de bitar som ska skrivas och PIO_ODSR för att skriva till porten


PIO_PDSR (Pin Data Status Register)
Läser av pinnarna

PIO_IFxR (Input Filter x Register)
Anväds för filtera bort spikar, delvis när den enabla så måste singnalen vara hör minst 1.5 cycles

PIO_IxR (Interrupt x Register)
Interrupt on changes

Tja jag tror inte jag har glömt någe....
PIO på ARM är en aningen krånligare än på AVR... men när man satt sej in är det ganska smart uppbyggd :D
Användarvisningsbild
strombom
Inlägg: 3305
Blev medlem: 27 maj 2003, 10:50:20
Ort: Västra Götaland
Kontakt:

Inlägg av strombom »

oj förlåt för att jag fick dig att skriva så mycket!

jag läste igenom databladet lite noggrannare och det var ju inte så klurigt ändå :)

jag ska nog lägga upp en hemsida med allt som behövs när jag rett ut alla trådar... det verkar som om alla förutsätter att man köper utvecklingsverktyg för många tusentals kronor men det _ska_ gå att komma undan billigare tycker jag :D

/Johan
Användarvisningsbild
strombom
Inlägg: 3305
Blev medlem: 27 maj 2003, 10:50:20
Ort: Västra Götaland
Kontakt:

Inlägg av strombom »

Det tog lite tid men nu fungerar det :D

http://www.mtek.chalmers.se/~strombom/b ... /blink.mov

3meg, om ni har långsam uppkoppling så är det inte värt besväret :wink:

Edit: framgången var alltså att jag lyckats kompilera med GCC

/Johan
Användarvisningsbild
DuckHead
Inlägg: 146
Blev medlem: 12 februari 2005, 23:48:39
Ort: Malmö (org: Gbg)
Kontakt:

Inlägg av DuckHead »

Jättetufft med ARM!
Visa gärna mer av det... eller ännu bättre, skriv gärna en tutorial.
:wink:
Skriver du i assembler, eller är det högnivå? Kan man debugga den? Singelsteppa osv... ?
(Jag skaffade för något år sedan CCS för PIC, men är lite sne på den. Skulle vilja byta "familj" liksom. Tittat på AVR, men ARM verkar mycket roligare. Säkert mycket svårare också.
Hur som helst. Tufft!
Användarvisningsbild
strombom
Inlägg: 3305
Blev medlem: 27 maj 2003, 10:50:20
Ort: Västra Götaland
Kontakt:

Inlägg av strombom »

Jo det är kul :)

Ska självklart lägga ut mer info när jag kommer vidare. Försöker skriva en bootloader, men jag är inte så snabb. Grejen är att jag först måste göra en bootloader som ligger i SRAM som skriver in i FLASH, sen måste jag skriva en bootloader som ligger i FLASH som jag sedan kan använda för att lägga in egna program. :? Ska detta verkligen vara nödvändigt? :)

Jag använder WinARM: http://www.siwawi.arubi.uni-kl.de/avr_p ... ts/#winarm

Dock fanns inte stöd för AT91SAM7S64 så jag fick ändra lite i makefilen och fixa andra includefiler. Trodde det skulle vara svårare men det fungerar ganska bra.

Det här känns som en vanlig enchipsdator precis som PIC och AVR eftersom kretsen innehåller allt man behöver. Till och med usb 2.0. Realtidskontroller, timer, spi, twi, usart, pwm, a/d. Kärnan körs på 1.9 Volt men det är inbyggd DC/DC omvandlare som bara kräver en kondensator, hur smidigt som helst.

Edit: ja just det, jag använder jtag för att föra över program till sram:et, sedan kan jag singelsteppa, ändra register, ändra pc och köra i realtid. visserligen är gratisdebuggern textbaserad men det funkar fint.

/Johan
Användarvisningsbild
Icecap
Inlägg: 26647
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Inlägg av Icecap »

Jag använder en Fujitsu MCU och har en rutin till att spara data i "överbliven" flashminne. Den rutin måste exekveras från RAM då flashminnet ska ha en viss sekvens för att radera/programmera.

Om du skrivar den sekvens på samma gång som du hämtar instruktioner från flashen förstörs sekvensen direkt så av den anledning måste koden exekveras från RAM.
cyr
Inlägg: 2712
Blev medlem: 27 maj 2003, 16:02:39
Ort: linköping
Kontakt:

Inlägg av cyr »

Har du något smidigt (command-line) prog som skickar över din kod till SRAM?

I så fall skit i att lägga någon bootloader i flash, gör ett script som först skickar över bootloadern (till RAM) och sedan startar den och skickar över din applikation via någon port...

Gjorde något liknande när jag lekte med en coldfire-processor.
Användarvisningsbild
strombom
Inlägg: 3305
Blev medlem: 27 maj 2003, 10:50:20
Ort: Västra Götaland
Kontakt:

Inlägg av strombom »

Edit: hittade ett script... http://www.siwawi.arubi.uni-kl.de/avr_p ... ler_intro/
Edit2: det verkade inte göra så mycket nytta... man kan inte automatiskt ladda över en fil :evil:

Edit: hittade en kompilator med studentlicens för $99 http://www.rowley.co.uk/arm/index.htm , har i varje fall laddat ner 30-dagars demo. den laddar över en liten loader till sram och för sen över programmet genom serieporten till flash precis som cyr tänkte.

/Johan
Skriv svar