por proex » 29 Jan 2008 07:55
Aqui tem um exemplo tirado do datasheet. Em assembler mas serve pra ter uma idéia.
ldr r0,=0xe01fc1a0 /*register address--enable fast port*/
mov r1,#0x1
str r1,[r0] /*enable fast port0*/
ldr r1,=0xffffffff
ldr r0,=0x3fffc000 /*direction of fast port0*/
str r1,[r0]
ldr r0,=0xe0028018 /*direction of slow port 1*/
str r1,[r0]
ldr r0,=0x3fffc018 /*FIO0SET -- fast port0 register*
ldr r1,=0x3fffc01c /*FIO0CLR0 -- fast port0 register
ldr r2,=0xC0010000 /*select fast port 0.16 for toggle
ldr r3,=0xE0028014 /*IO1SET -- slow port1 register*/
ldr r4,=0xE002801C /*IO1CLR -- slow port1 register*/
ldr r5,=0x00100000 /*select slow port 1.20 for toggle*/
/*Generate 2 pulses on the fast port*/
str r2,[r0]
str r2,[r1]
str r2,[r0]
str r2,[r1]
/*Generate 2 pulses on the slow port*/
str r5,[r3]
str r5,[r4]
str r5,[r3]
str r5,[r4]
loop: b loop
O código acima gera 2 pulsos no I/O no modo Fast e, 2 pulsos no modo Slow.
Nao esqueça de configurar no MAM, o maior clock possível para os I/Os.