1
0
mirror of https://github.com/hsoft/collapseos.git synced 2024-11-06 14:28:06 +11:00
collapseos/blk/691
Virgil Dupras 85f8543e17 avrspi: first steps
After having done my initial handshaking, I thought the rest of the
job was only a matter of implementing the protocol, but I was wrong.
There were many issues to fix before I could reliably communicate
with my 328P, mostly timing.

Now, I seem to be able to reliably extract fuse information, but
only in batch mode (that is, run "asp$ aspfl@" directly, then
running "(spid)" before running the next command). If I try to
interact with the chip in a single asp$ session, I sometimes get
wrong values (but no sync error! that's worrying...).
2020-08-30 08:01:09 -04:00

15 lines
567 B
Plaintext

: _cmd ( b4 b3 b2 b1 -- r4 )
(spix) DROP DUP (spix) DROP SWAP (spix) = ( b4 f )
SWAP (spix) SWAP ( r4 f ) NOT IF ABORT" AVR err" THEN ;
: asp$ ( -- )
( RESET pulse ) (spie) (spid) (spie)
( wait 20ms ) 2000 0 DO LOOP
( enable prog ) 0 0 0x53 0xac _cmd DROP ;
: asprdy ( -- f ) 0 0 0 0xf0 _cmd NOT ;
: aspfl@ ( -- lfuse ) 0 0 0 0x50 _cmd ;
: aspfh@ ( -- hfuse ) 0 0 0x08 0x58 _cmd ;
: aspfe@ ( -- efuse ) 0 0 0x00 0x58 _cmd ;
: aspfl! ( lfuse -- ) 0 0xa0 0xac _cmd ;
: aspfh! ( hfuse -- ) 0 0xa8 0xac _cmd ;
: aspfe! ( efuse -- ) 0 0xa4 0xac _cmd ;