![]() |
Forum Index : Microcontroller and PC projects : PicoMite VGA Edition beta releases
![]() ![]() ![]() ![]() |
|||||
Author | Message | ||||
Mixtel90![]() Guru ![]() Joined: 05/10/2019 Location: United KingdomPosts: 7496 |
That's not bad at all! I'm going to have to get one set up to play with it. Perhaps this weekend. I've been spending too much time playing with Sprint Layout. :) Does the variables hash table speed up execution much? Mick Zilog Inside! nascom.info for Nascom & Gemini Preliminary MMBasic docs & my PCB designs |
||||
matherp Guru ![]() Joined: 11/12/2012 Location: United KingdomPosts: 10045 |
PicoMiteVGAV5.07.01b4.zip Fixes a bug in writing to the colour screen with black text Just for fun I added some small level of original Colour Maximite graphics compatibility like the CMM2 Available in the PRINT statement is the @ function for locating the cursor (see CMM2 manual) OPTION LEGACY ON/OFF is a temporary option to be used in a program. It affects the following commands COLOUR - uses colours 0-7, see original colour Maximite manual PIXEL - see original colour Maximite manual LINE - see original colour Maximite manual CIRCLE - see original colour Maximite manual To prove compatibility here is David Murray's Tetris implementation running with no changes on the PicoMite VGA edition ![]() 'Colour Maximite tetris by David Murray *edited by Daedan Bamkin Option LEGACY ON 'mode 5 Dim GRID(10,20) Dim rx(4,4):Dim ry(4,4) Dim PIECEX(4) Dim PIECEY(4) STARTSCREEN: For X=0 To 9 For Y=0 To 19 GRID(X,Y)=0 Next Y,X L=0 S=0 Colour 7,1:CLS Print @(80,30)"Welcome to " Print @(45,40)"COLOUR PICOMITE TETRIS" Print @(70,50)"By David Murray" Print @(15,90)" Please select level diff iculty" Print " between 1-10[0] default being 2 " Print " 10 being Ridiculous, Good Luck !" Line (181,35)-(210,78),7,B Line (10,21)-(210,200),7,B T2=0 Do While T2=0 T1=Asc(Inkey$) If T1=48 Then T2=50 'key 0 If T1=49 Then T2=500 'key 1 If T1=50 Or T1=13 Then T1=50: T2=450 ' key 2 or Enter If T1=51 Then T2=400 'key 3 If T1=52 Then T2=350 'key 4 If T1=53 Then T2=300 'key 5 If T1=54 Then T2=250 'key 6 If T1=55 Then T2=200 'key 7 If T1=56 Then T2=150 'key 8 If T1=57 Then T2=100 'key 9 If Timer>=350 Then GoSub PREVIEW:Timer =0 Loop CLS SETUPSCREEN: Print " Colour Picomite Tetris by David Murray" Print " CURSOR NE XT" Print " KEYS" Print " MOVE" Print " UP/SPACE" Print " to ROTATE" Print " Z to DROP" Print @(170,180,1) "ESC to" Print @(170,190,1) "PAUSE/EXIT" Print @(183,90,1) "LINES" Print @(183,140,1) "SCORE" Line (181,35)-(210,78),7,B Line (68,13)-(160,215),7,B Line (69,14)-(159,214),0,BF Line (181,101)-(214,120),7,B Line (182,102)-(213,119),0,BF Line (181,151)-(214,170),7,B Line (182,152)-(213,169),0,BF Colour 7,0 Print @(182,106) S Print @(182,155) T1 GoSub PREVIEW GoSub NEWPIECE GoSub DRAWPIECE READKEYBOARD: A=Asc(Inkey$) If A=129 Then GoSub MOVEDOWN If A=130 Then GoSub MOVELEFT If A=131 Then GoSub MOVERIGHT If A=122 Or A=90 Then GoSub LEAVEPIECE If A=128 Or A=32 Then GoSub ROTATE If A=27 Then GoSub ENDSUB If Timer>=T2 Then GoSub MOVEDOWN:Timer =L GoTo READKEYBOARD LEAVEPIECE: GoSub MOVEDOWN GoSub DRAWPIECE Return MOVERIGHT: GoSub ERASEPIECE E=0 For P=1 To 4:If PIECEX(P)=9 Then E=1 Next P If E=1 Then GoSub DRAWPIECE:Return For P=1 To 4 If GRID(PIECEX(P)+1,PIECEY(P))<>0 Th en E=1 Next P If E=1 Then GoSub DRAWPIECE:Return For P=1 To 4:PIECEX(P)=PIECEX(P)+1:Nex t P GoSub DRAWPIECE Return MOVELEFT: GoSub ERASEPIECE E=0 For P=1 To 4:If PIECEX(P)=0 Then E=1 Next P If E=1 Then GoSub DRAWPIECE:Return For P=1 To 4 If GRID(PIECEX(P)-1,PIECEY(P))<>0 Th en E=1 Next P If E=1 Then GoSub DRAWPIECE:Return For P=1 To 4:PIECEX(P)=PIECEX(P)-1:Nex t P GoSub DRAWPIECE Return MOVEDOWN: GoSub ERASEPIECE E=0 For P=1 To 4:If PIECEY(P)=19 Then E=1 Next P If E=1 Then GoSub DRAWPIECE:GoSub NEWP IECE:Return For P=1 To 4 If GRID(PIECEX(P),PIECEY(P)+1)<>0 Th en E=1 Next P If E=1 Then GoSub DRAWPIECE:GoSub NEWP IECE:Return For P=1 To 4:PIECEY(P)=PIECEY(P)+1:Nex t P GoSub DRAWPIECE If A=90 Or A=122 Then GoSub MOVEDOWN A=0 Return ROTATE: GoSub erasepiece For P=1 To 4 PIECEX(P)=PIECEX(P)+RX(ROT,P) PIECEY(P)=PIECEY(P)+RY(ROT,P) Next P ROT=ROT+1:If ROT=5 Then ROT=1 GoSub DRAWPIECE Return CHECKGRID: For CY=0 To 19 ROW=0 For X=0 To 9 If GRID(X,CY)<>0 Then ROW=ROW+1 Next X If ROW=10 Then GoSub DROPGRID If CY=0 And ROW>0 Then GoSub GAMEOVE RMAN Next CY Return DROPGRID: GoSub CLEARSCREENGRID For X=0 To 9 For YY= CY To 1 Step-1 GRID(X,YY)=GRID(X,YY-1) Next YY,X L=L+1 S=S+T1 Print @(182,106) L Print @(182,155) S GoSub REDRAWSCREENGRID Return CLEARSCREENGRID: Line (69,14)-(159,214),0,BF Return REDRAWSCREENGRID: For Y=0 To 19 For X=0 To 9 XT=X*9:YT=Y*10 Line (XT+70,YT+15)-(XT+77,YT+23),GRID( X,Y),BF Line (XT+71,YT+16)-(XT+76,YT+16),0 Line (XT+76,YT+16)-(XT+76,YT+22),0 Next X,Y Return DRAWPIECE: For P=1 To 4 X=PIECEX(P):Y=PIECEY(P) GRID(X,Y)=PC XT=X*9:YT=Y*10 Line (XT+70,YT+15)-(XT+77,YT+23),PC,BF Line (XT+71,YT+16)-(XT+76,YT+16),0 Line (XT+76,YT+16)-(XT+76,YT+22),0 Next P Return ERASEPIECE: For P=1 To 4 X=PIECEX(P):Y=PIECEY(P) GRID(X,Y)=0 Line (X*9+70,Y*10+15)-(X*9+77,Y*10+23) ,0,BF Next P Return NEWPIECE: GoSub CHECKGRID ROT=1 PC=PP GoSub PREVIEW If PC=1 Then GoSub DEFINEPIECE1 If PC=2 Then GoSub DEFINEPIECE2 If PC=3 Then GoSub DEFINEPIECE3 If PC=4 Then GoSub DEFINEPIECE4 If PC=5 Then GoSub DEFINEPIECE5 If PC=6 Then GoSub DEFINEPIECE6 If PC=7 Then GoSub DEFINEPIECE7 Return DEFINEPIECE1: Rem BLUE J PIECE8 PIECEX(1)=5:PIECEY(1)=0 PIECEX(2)=5:PIECEY(2)=1 PIECEX(3)=5:PIECEY(3)=2 PIECEX(4)=4:PIECEY(4)=2 rx(1,1)=-1:ry(1,1)=1 rx(1,2)=0:ry(1,2)=0 rx(1,3)=1:ry(1,3)=-1 rx(1,4)=2:ry(1,4)=0 rx(2,1)=1:ry(2,1)=1 rx(2,2)=0:ry(2,2)=0 rx(2,3)=-1:ry(2,3)=-1 rx(2,4)=0:ry(2,4)=-2 rx(3,1)=1:ry(3,1)=-1 rx(3,2)=0:ry(3,2)=0 rx(3,3)=-1:ry(3,3)=1 rx(3,4)=-2:ry(3,4)=0 rx(4,1)=-1:ry(4,1)=-1 rx(4,2)=0:ry(4,2)=0 rx(4,3)=1:ry(4,3)=1 rx(4,4)=0:ry(4,4)=2 Return DEFINEPIECE2: Rem GREEN S PIECE PIECEX(1)=4:PIECEY(1)=0 PIECEX(2)=4:PIECEY(2)=1 PIECEX(3)=5:PIECEY(3)=1 PIECEX(4)=5:PIECEY(4)=2 rx(1,1)=-1:ry(1,1)=1 rx(1,2)=0:ry(1,2)=0 rx(1,3)=-1:ry(1,3)=-1 rx(1,4)=0:ry(1,4)=-2 rx(2,1)=1:ry(2,1)=1 rx(2,2)=0:ry(2,2)=0 rx(2,3)=-1:ry(2,3)=1 rx(2,4)=-2:ry(2,4)=0 rx(3,1)=1:ry(3,1)=-1 rx(3,2)=0:ry(3,2)=0 rx(3,3)=1:ry(3,3)=1 rx(3,4)=0:ry(3,4)=2 rx(4,1)=-1:ry(4,1)=-1 rx(4,2)=0:ry(4,2)=0 rx(4,3)=1:ry(4,3)=-1 rx(4,4)=2:ry(4,4)=0 Return DEFINEPIECE3: Rem CYAN L PIECE PIECEX(1)=4:PIECEY(1)=0 PIECEX(2)=4:PIECEY(2)=1 PIECEX(3)=4:PIECEY(3)=2 PIECEX(4)=5:PIECEY(4)=2 rx(1,1)=-1:ry(1,1)=1 rx(1,2)=0:ry(1,2)=0 rx(1,3)=1:ry(1,3)=-1 rx(1,4)=0:ry(1,4)=-2 rx(2,1)=1:ry(2,1)=1 rx(2,2)=0:ry(2,2)=0 rx(2,3)=-1:ry(2,3)=-1 rx(2,4)=-2:ry(2,4)=0 rx(3,1)=1:ry(3,1)=-1 rx(3,2)=0:ry(3,2)=0 rx(3,3)=-1:ry(3,3)=1 rx(3,4)=0:ry(3,4)=2 rx(4,1)=-1:ry(4,1)=-1 rx(4,2)=0:ry(4,2)=0 rx(4,3)=1:ry(4,3)=1 rx(4,4)=2:ry(4,4)=0 Return DEFINEPIECE4: Rem RED Z PIECE PIECEX(1)=5:PIECEY(1)=0 PIECEX(2)=5:PIECEY(2)=1 PIECEX(3)=4:PIECEY(3)=1 PIECEX(4)=4:PIECEY(4)=2 rx(1,1)=-1:ry(1,1)=1 rx(1,2)=0:ry(1,2)=0 rx(1,3)=1:ry(1,3)=1 rx(1,4)=2:ry(1,4)=0 rx(2,1)=1:ry(2,1)=-1 rx(2,2)=0:ry(2,2)=0 rx(2,3)=-1:ry(2,3)=-1 rx(2,4)=-2:ry(2,4)=0 rx(3,1)=-1:ry(3,1)=1 rx(3,2)=0:ry(3,2)=0 rx(3,3)=1:ry(3,3)=1 rx(3,4)=2:ry(3,4)=0 rx(4,1)=1:ry(4,1)=-1 rx(4,2)=0:ry(4,2)=0 rx(4,3)=-1:ry(4,3)=-1 rx(4,4)=-2:ry(4,4)=0 Return DEFINEPIECE5: Rem PURPLE T PIECE PIECEX(1)=5:PIECEY(1)=0 PIECEX(2)=4:PIECEY(2)=1 PIECEX(3)=5:PIECEY(3)=1 PIECEX(4)=6:PIECEY(4)=1 rx(1,1)=-1:ry(1,1)=1 rx(1,2)=1:ry(1,2)=1 rx(1,3)=0:ry(1,3)=0 rx(1,4)=-1:ry(1,4)=-1 rx(2,1)=1:ry(2,1)=1 rx(2,2)=1:ry(2,2)=-1 rx(2,3)=0:ry(2,3)=0 rx(2,4)=-1:ry(2,4)=1 rx(3,1)=1:ry(3,1)=-1 rx(3,2)=-1:ry(3,2)=-1 rx(3,3)=0:ry(3,3)=0 rx(3,4)=1:ry(3,4)=1 rx(4,1)=-1:ry(4,1)=-1 rx(4,2)=-1:ry(4,2)=1 rx(4,3)=0:ry(4,3)=0 rx(4,4)=1:ry(4,4)=-1 Return DEFINEPIECE6: Rem YELLOW O PIECE PIECEX(1)=4:PIECEY(1)=0 PIECEX(2)=5:PIECEY(2)=0 PIECEX(3)=4:PIECEY(3)=1 PIECEX(4)=5:PIECEY(4)=1 rx(1,1)=0:ry(1,1)=0 rx(1,2)=0:ry(1,2)=0 rx(1,3)=0:ry(1,3)=0 rx(1,4)=0:ry(1,4)=0 rx(2,1)=0:ry(2,1)=0 rx(2,2)=0:ry(2,2)=0 rx(2,3)=0:ry(2,3)=0 rx(2,4)=0:ry(2,4)=0 rx(3,1)=0:ry(3,1)=0 rx(3,2)=0:ry(3,2)=0 rx(3,3)=0:ry(3,3)=0 rx(3,4)=0:ry(3,4)=0 rx(4,1)=0:ry(4,1)=0 rx(4,2)=0:ry(4,2)=0 rx(4,3)=0:ry(4,3)=0 rx(4,4)=0:ry(4,4)=0 Return DEFINEPIECE7: Rem WHITE I PIECE PIECEX(1)=5:PIECEY(1)=0 PIECEX(2)=5:PIECEY(2)=1 PIECEX(3)=5:PIECEY(3)=2 PIECEX(4)=5:PIECEY(4)=3 rx(1,1)=-1:ry(1,1)=1 rx(1,2)=0:ry(1,2)=0 rx(1,3)=1:ry(1,3)=-1 rx(1,4)=2:ry(1,4)=-2 rx(2,1)=1:ry(2,1)=-1 rx(2,2)=0:ry(2,2)=0 rx(2,3)=-1:ry(2,3)=1 rx(2,4)=-2:ry(2,4)=2 rx(3,1)=-1:ry(3,1)=1 rx(3,2)=0:ry(3,2)=0 rx(3,3)=1:ry(3,3)=-1 rx(3,4)=2:ry(3,4)=-2 rx(4,1)=1:ry(4,1)=-1 rx(4,2)=0:ry(4,2)=0 rx(4,3)=-1:ry(4,3)=1 rx(4,4)=-2:Ry(4,4)=2 Return PREVIEW: Line (182,36)-(209,77),0,BF PP=Int(Rnd(1)*7)+1 If PP=1 Then GoSub DEFINEPIECE1 If PP=2 Then GoSub DEFINEPIECE2 If PP=3 Then GoSub DEFINEPIECE3 If PP=4 Then GoSub DEFINEPIECE4 If PP=5 Then GoSub DEFINEPIECE5 If PP=6 Then GoSub DEFINEPIECE6 If PP=7 Then GoSub DEFINEPIECE7 For P=1 To 4 X=PIECEX(P):Y=PIECEY(P) XT=X*9+77:YT=Y*10+22 Line (XT+70,YT+15)-(XT+77,YT+23),PP, BF Line (XT+71,YT+16)-(XT+76,YT+16),0 Line (XT+76,YT+16)-(XT+76,YT+22),0 Next P Return GAMEOVERMAN: Print @(85,55,2) " GAME OVER" Print @(85,65,2) " ---------" Print @(69,75,2) " WOULD YOU LIKE" Print @(69,85,2) "TO PLAY ANOTHER" Print @(85,95,2) " GAME Y/N?" ENDGAME: E=Asc(Inkey$) If E=89 Or E=121 Then GoSub STARTSCR EEN If E=27 Or E=78 Or E=110 Then Print @(55,110,2) " THANKS FOR PLAYING ":End GoTo ENDGAME ENDSUB: Print @(80,15,1) "QUITING? ARE " Print @(78,25,1) "YOU SURE Y/N?" END1: E=Asc(Inkey$) If E=89 Or E=121 Then GoSub GAMEOVERMA N If E=27 Or E=78 Or E=110 Then Colour 0 Print @(80,15,1) "QUITING? ARE " Print @(78,25,1) "YOU SURE Y/N?" Colour 7 Return EndIf GoTo END1 Program dependent but for anything with over say 20 variables it starts to make a big difference. Originally developed for the CMM2 Edited 2021-12-18 00:24 by matherp |
||||
Mixtel90![]() Guru ![]() Joined: 05/10/2019 Location: United KingdomPosts: 7496 |
This is good. :) It's sort of a Maximite version whereas the PicoMite is a Minimite version. Same module, different purpose. Mick Zilog Inside! nascom.info for Nascom & Gemini Preliminary MMBasic docs & my PCB designs |
||||
matherp Guru ![]() Joined: 11/12/2012 Location: United KingdomPosts: 10045 |
PicoMiteVGAV5.07.01b5.zip Fixes a bug that stopped a program with OPTION BASE from running a second time without reset Fixes a bug that the LIST command to linewrap too early New Functionality: FLASH LIST n [,all] allows you to list the file in a flash slot exactly like the main program FLASH EXECUTE n run a program direct from the flash slot without changing the main program |
||||
twofingers Guru ![]() Joined: 02/06/2014 Location: GermanyPosts: 1524 |
Thanks Peter! With/without clearing the variables? Similar to a chain command? Regards Michael causality ≠ correlation ≠ coincidence |
||||
matherp Guru ![]() Joined: 11/12/2012 Location: United KingdomPosts: 10045 |
Similar to run command i.e. variables are cleared PicoMiteVGAV5.07.01b6.zip Fixes a bug introduced when increasing the maximum number of files in that can be displayed by the FILES commandPicoMiteVGAV5.07.01b5 Edited 2021-12-18 05:18 by matherp |
||||
twofingers Guru ![]() Joined: 02/06/2014 Location: GermanyPosts: 1524 |
THX! ![]() causality ≠ correlation ≠ coincidence |
||||
phil99![]() Guru ![]() Joined: 11/02/2018 Location: AustraliaPosts: 2413 |
An alternative 2 bit green mixer. Might make PCB layout a bit easier. The calculated values are for linear spacing of the steps but that isn't overly important. Choose what looks best to you, as long as the parallel combination is about 204 ohm. This is less than the 220 ohm on red and blue because of the diodes. ![]() ![]() Edited 2021-12-18 09:33 by phil99 |
||||
matherp Guru ![]() Joined: 11/12/2012 Location: United KingdomPosts: 10045 |
Phil99's circuits miss the critical issue. It is not the balance of half green to full green that matters. The key one is the balance of RED/BLUE with FULL GREEN otherwise there will be a colour cast to white text and the eye is VERY sensitive to this My component values were what gave me a clean white image but for more certainty replace the 150ohm resistor in my circuit with a 220ohm trimmer The values in the R2R DAC don't matter as much as long as you can tune the white balance. The advantage of an R2R DAC is that it is by definition correct and has a defined impedance (always equal to R regardless of the number of bits) |
||||
phil99![]() Guru ![]() Joined: 11/02/2018 Location: AustraliaPosts: 2413 |
"there will be a colour cast to white text and the eye is VERY sensitive to this" Yes, good point so scrub the bottom one but the top one with 2 trimmers making up the odd resistor values could get that balance. |
||||
Volhout Guru ![]() Joined: 05/03/2018 Location: NetherlandsPosts: 4843 |
I have been kicked out of the forum again while writing a long essay about the mm basic retro style computers. I will not retype this again, only put down the conclusion. The PicoMite VGA is is nice proof of concept, but it brings nothin new to the CMM1, that exists for 10 years, appart from the newer basic. It feels a bit cheaper, but if you assemble it to a computer with pcb connectors real time clock etc.. you are getting close to 55 dollar I payed for the CMM1, in a housing. II fail to see the need for this new platform. Similar the VGAmite (rip) Maybe porting the new mm basic to the CMM1 is possible? Edited 2021-12-18 23:10 by Volhout PicomiteVGA PETSCII ROBOTS |
||||
matherp Guru ![]() Joined: 11/12/2012 Location: United KingdomPosts: 10045 |
PIC32 for CMM1 from Farnell Back order today stock arriving week commencing 24/10/22 Notify me when back in stock GBP12.540 ( inc VAT ) RP2040 Faster More memory Standard VGA sizes with square pixels Modern MMBasic (no-one has the inclination to Update CMM1 firmware - big job as IDE has changed) Easier to flash firmware etc... |
||||
flasherror Senior Member ![]() Joined: 07/01/2019 Location: United StatesPosts: 159 |
I think the newer basic is important (go back to using Duinomite MMBASIC v4.5 and you start missing some things). But, the more important issues are availability and long term supply. RaspPi will make millions of these things, and long term availability will be good. Not to mention easy to solder/asssemble as no SMD if you solder headers to it. And, with regular PicoMite firmware (not VGA) you can make a nice little embedded controller. I believe Picomite VGA is faster than the CMM1 (someone correct me if I'm wrong). However, I feel MMBasic can be improved in some ways: Built in ESP8266 AT command firmware support to make sending/receiving data super easy. In the same way that the advanced GUI features make it easy to display a button and MMBASIC handles the dirty work behind the scenes (transparent to the programmer) is the same way data communication could be handled. CRC generation faster than basic The ability to "pause" tick interrupts created with SETTICK and then being able to resume them without resetting/restarting the tick count. I think the right way to view PicoMite is another iteration of the same low-cost computer concept. Chips get obsolete/expensive and are gradually phased out or lose popularity but the concept of a low cost computer that uses whatever the best price/features chip or module will always be around. Nothing wrong with periodically refreshing the concept to take advantage of the current cheap/popular chip! Edited 2021-12-19 00:20 by flasherror |
||||
matherp Guru ![]() Joined: 11/12/2012 Location: United KingdomPosts: 10045 |
Please explain further How about you write me an outline spec? I've often thought about this but can't see an obvious syntax and structure |
||||
CaptainBoing![]() Guru ![]() Joined: 07/09/2016 Location: United KingdomPosts: 2137 |
which flavour of CRC? there are a few and if you try to cover all bases you'll miss someone's favourite. I wrote a more flexible tick handler and the above was one reason why. I prefer to poll for ticks and not block my code with an ISR. this pack gives you up to 63 timers and you can run them at whatever speed you like. When a tick occurs, all it does is set a flag - you can then take action or not when you see the flag. You can also Dis/Enable the timers across the board, stop any timer, see how much time is left on a timer... As written the timers tick every second but you could drop that down to whatever works for you and is practical. I have things that run at ten ticks per second with no problem. Very easy to configure one-shot and multi-shot, no subs required. might help |
||||
JohnS Guru ![]() Joined: 18/11/2011 Location: United KingdomPosts: 3994 |
Also, RP2040 is just the first in its family. I expect more, with larger ROM & RAM :) John |
||||
flasherror Senior Member ![]() Joined: 07/01/2019 Location: United StatesPosts: 159 |
You can setup/start a timer with SETTICK 4,MY_ISR,2 But, if for some reason you wanted to disable (pause) a timer WITHOUT LOSING THE CURRENT COUNT with a view towards restarting it you can't do this. While you can disable the timer with SETTICK 0,0,2 the next time you do SETTICK 4,MY_ISR,2 it basically reinitializes the timer so that it starts count from 0. There is no command to "pause" a timer interrupt so that it can resume with the count value at the time it was paused. How about you write me an outline spec? I've often thought about this but can't see an obvious syntax and structure I'll have to spend some time researching/thinking about this. I've read others talking about Annex Basic, not sure how it handles data transmission/reception. Edited 2021-12-19 01:18 by flasherror |
||||
flasherror Senior Member ![]() Joined: 07/01/2019 Location: United StatesPosts: 159 |
CRC generation faster than basic which flavour of CRC? there are a few and if you try to cover all bases you'll miss someone's favourite. Maybe support a few popular ones? Have initialization to specify? I wrote a more flexible tick handler and the above was one reason why. I prefer to poll for ticks and not block my code with an ISR. this pack gives you up to 63 timers and you can run them at whatever speed you like. When a tick occurs, all it does is set a flag - you can then take action or not when you see the flag. You can also Dis/Enable the timers across the board, stop any timer, see how much time is left on a timer... As written the timers tick every second but you could drop that down to whatever works for you and is practical. I have things that run at ten ticks per second with no problem. Very easy to configure one-shot and multi-shot, no subs required. might help Thanks, I will check this out. |
||||
flasherror Senior Member ![]() Joined: 07/01/2019 Location: United StatesPosts: 159 |
I expect more, with larger ROM & RAM :) John I suspect they may introduce a version with Wifi/Bluetooth at some point. One issue currently is that there is effectively no code protection as the Flash is off-chip (same as ESP8266, which probably was the reason for the ESP8285 - to better secure code as the Flash is on-chip). Edited 2021-12-19 01:47 by flasherror |
||||
Mixtel90![]() Guru ![]() Joined: 05/10/2019 Location: United KingdomPosts: 7496 |
I suspect that, in the case of the RP2040, you have to start somewhere. RPi had no idea if their chip would find any sort of acceptance - it's a big risk. Keeping price very low and not depending on anyone else's patents for such things as wi-fi, bluetooth and flash encryption was probably very important. Mick Zilog Inside! nascom.info for Nascom & Gemini Preliminary MMBasic docs & my PCB designs |
||||
![]() ![]() ![]() ![]() |
![]() |
![]() |
The Back Shed's forum code is written, and hosted, in Australia. | © JAQ Software 2025 |