Assembly question
Good Day ,
Do you know why this code works ( blink Led P23 on Quickstart Board)
and this doesnt ( blink the Led P19(!) on Quickstart Board)
Thanks
Do you know why this code works ( blink Led P23 on Quickstart Board)
CON _clkmode = xtal1 + pll16x _xinfreq = 5_000_000 PUB Main {Launch cog to toggle P16 endlessly} cognew(@Toggle, 0) 'Launch new cog DAT {Toggle P16} org 0 'Begin at Cog RAM addr 0 Toggle mov dira, port 'Set Pin to output mov Time, cnt 'Calculate delay time add Time, #9 'Set minimum delay here :loop waitcnt Time, Delay 'Wait xor outa, Pin23 'Toggle Pin jmp #:loop 'Loop endlessly Pin16 long |< 16 'Pin number Pin23 long |< 23 'Pin number Port long $FFFFFFFF Delay long 6_000_000 'Clock cycles to delay Time res 1
and this doesnt ( blink the Led P19(!) on Quickstart Board)
CON _clkmode = xtal1 + pll16x _xinfreq = 5_000_000 PUB Main {Launch cog to toggle P16 endlessly} cognew(@Toggle, 0) 'Launch new cog DAT Toggle org 0 mov dira,port rdlong delay, #0 mov t1, cnt ' setup add t1, delay ' first add :loop waitcnt t1, delay 'all subsequent adds use the waitcnt xor outa,Pin23 jmp #:loop '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 'delay @80MHz delay long 80_000_000 delay18ms long 1_440_000 delay200us long 16_000 t1 res 1 cmd byte data byte RS long |< 16 RW long |< 17 EN long |< 18 DB4 long |< 19 DB5 long |< 20 DB6 long |< 21 DB7 long |< 22 Pin23 long |< 23 port long $FFFFFFFF
Thanks
Comments
Make the rdlong a comment and your program should toggle with 0,5Hz.
By the way ... with your
mov dira,port
you switch all pins to output-mode. That's a bad idea! You should only switch the pins which are really used as output. Otherwise you can accidently produce shortcuts. For example the PropPlug of course uses one PIN for transmitting data to the propeller. You are lucky that the propeller plug has a protecting resistor which limits the currency.
Another note is that you get the entire set of pins (all 32) as an output with the "mov dira,port" instruction (with port having all bits set to 1 -- as you have it).
EDIT: I see MagIO2 added this on to his post.