Just send each byte individually... the result will be the same since SHIFTOUT really does it that way too.
WREG = $C0 + row
call SHOUT
WREG = col
call SHOUT
THE BOOK of DT's INTERRUPTS is an
organization of interrupt service
routines and other works written by Darrel Taylor, RIP. Interrupt routines are arranged per Darrel's original list. Darrel Taylor's Instant Interrupts are an extension of the work of Tim Box whom in October of 2002 wrote INT_CTRL.pbp Many of the forum members felt this is a long overdue project. THE BOOK of DT's INTERRUPTS will be a valuable resource and a tribute to Darrel Taylor the "Fanatical Contributor". THE BOOK of DT's INTERRUPTS is located at http://dt.picbasic.co.uk/ |
Type: Posts; User: tumbleweed; Keyword(s):
Just send each byte individually... the result will be the same since SHIFTOUT really does it that way too.
WREG = $C0 + row
call SHOUT
WREG = col
call SHOUT
which PIC device are you using?
looking at some old posts, this thread here http://www.picbasic.co.uk/forum/showthread.php?t=5568 has a number of issues.
I2C operations are slower to begin with, but you could speed things up over the stock routines.
Having the pins be set in software is what usually slows things down. I've implemented these before...
I don't have any 20MHz xtals to try.
FWIW, I was able to get an 18F26K80 running at 80MHz with an external 20MHz osc into OSC1/CLKIN (using CONFIG = EC3).
The 4x PLL worked using either CONFIG...
How are you verifying the freq?
Could you post your whole setup, including the config?
Overclocking it 25% might be asking a lot, but assuming it's running at 80MHz those serial settings look to be correct.
You might have better luck powering up @ 20MHZ and then enabling the PLL by...
You may find that routine is actually too fast for the hardware you're controlling.
If so, you can add NOPs to slow it down a bit...
SHDAT = 0
if WREG.0 then
SHDAT = 1
endif
asm NOP...
Sure.
Here's some code that would shift out a byte without using asm or anything special... should be much faster than SHIFTOUT since it's format is dedicated and loop is unrolled. Just set WREG...
I forgot to mention - the updated library files for the Q43 also include a fix for the EEPROM read routine, where reading eeprom did not work unless a write was done first.
I posted a version of DT-INTS for the K42/K83/Q43 families over on the melabs forum:
DT_INTS-18xv for 18F K42, K83, and Q43 families
along with updated libraries for PBP 316 to optimize the...
If you don't disable it you'll be getting resets when the wdt times out.
That'll set the pins as inputs, so they'll be floating instead of low.
PORTB has no analog functions on the 16F87.
Have you disabled the WDT?
What voltage are you measuring? Which PORTB pins are you using?
That's probably because you're setting the CCP1CON CCP1X and CCP1Y bits, which control the duty cycle lsb's.
Clear those two bits (ie CCP1CON = $0C for PWM mode).
You should be able to get 125KHz...
I don't need the editor to work or anything... just be able to compile and load it so I can debug, even at the asm level.
I thought that part still worked, but maybe I'll try treating it as an asm...
Not really that I can think of.
I thought I'd try and load it into MPLABX so I could debug it, but it's been so long since I've used it w/PBP I can't seem to get the two so I can build and debug...
On the Q43 (and most recent PIC18's with the VIC), the SFR registers have been moved down in memory starting at BANK 0,
so general purpose RAM no longer starts there. The access bank used to be part...
From what I can tell the basic interrupt structure looks to be ok.
Unfortunately, the way the various files are written, all of the ReEnterPBP routines don't appear in the .lst files, so it makes...
In your main file you need to uncomment the 'define use_lowpriority' and rearrange the DT-INTS setup section.
Try:
' ---------- Set up DT_INTS-18 Routine for Instant Interrupt handling ...
Oops, that one's on me! I forgot that they re-arranged things with the new VIC module and there's only GIE/GIEH and GIEL.
You can just kill that line.
I'm gonna have to take a closer look at...
... and one I forgot.
In your Timer0_Count routine, stop messing around with the PIE bits. You can't get another TMR0 interrupt while you're already inside the ISR.
Timer0_Count:
'...
I don't see anything wrong with ReEnterPBP-18LP.bas, but there are a few other things I noticed.
First off, as I said, you can't have just a low-priority interrupt.
If you don't define a...
Could be, but I don't have any PBP version even remotely up to date to test it with.
Could you post the .lst and .hex files that go along with that?
One thing I never see... the INTCON0.GIE bit...
Keep us posted on if it works.
That should have read '4K boundary'
If you're feeling adventurous you could try the attached.
It's a modified version of the DT_INTS-18_K42b.bas code from post #9 with the context save stuff removed (now done in hdw) and the MOVFF...