The code can be exercised (by the IDE), by using "call" to invoke /pcf2123 for initialization, sdt to set the date and rdt to read the date. Values for "sdt" can be pushed onto the node's stack by using "lit". I used a logic analyzer to look at the results.
There was a lot of setup to get this going, and I am not going to cover that right now.
I need to get the plumbing (wiring) right. Getting 1 node to talk to another is not as intuitive as I hoped. I also fear that the IDE gets critically in the way (hook et al can wipe out your node's RAM when creating paths). This will mean that the IDE will be less useful for stuff that is very node position dependent (i.e. GPIO nodes).
I don't fully grok the inter-node comms yet. In particular, I am not sure how to "push" numbers from one node to another. The IDE does this fine with "lit", but if my node isn't wired by the IDE all I have is "warm/await". The apparent exemplar for passing values between nodes is to explicitly have the target node "fetch" values from the port. Unfortunately, as you can see from the code below, I am out of room (0x40 max words per node and I am at 0x3d). I could shrink the code a bit more, but...
this is a brutally simple interface for the crnxp pcf2123 calendar clock module. crpin 1 - chip select crpin 3 - clock crpin 5 - mosi crpin 17 - miso crckwait pauses for an effective rate of 2mhz cr-ckwait asserts the clock line low for 2mhz crcs asserts the chip select line high cr-cs asserts the chip select line low cr/pcf2123 initializes the pcf2123 clock crrdt reads date and time sets data and time |
850 list
todd's simple pcf2123 clock code cr8 node 0 org crckwait 00 4A for unext ; approx. 2mhz cr-ckwait 03 2B !b ckwait ; 05 io b! -ckwait ; 07 29 !b ; 09 if drop 10 then 2F . + !b ckwait -ckw 10 b- 80 7 for over over and spiw1 2/ ne 17 -b 0 7 for 2* dup or spiw1 @b . -if d 1 or dup then drop next 2/ ; 21 cs 10 spiw8 58 spiw8 -cs ; 27 -smhwdmy cs 92 spiw8 spir8 spir8 spir8 32 ymdwhms- cs 12 spiw8 spiw8 spiw8 spiw8 cr3D |
No comments:
Post a Comment