Hi Rob,

The PIC that I used, the 12F1840, has an on-chip Phased Locked Loop and it 
can be enabled in the Configuration Word (what I called the Hardware 
setting) or by setting the appropriate bit in the OSCCON register (what I 
called the Software setting).  I tested both ways in case there was some 
silicon bug.

The I2C device that I used is a 128x32 OLED display, which I've previously 
used with a different microcontroller (not PIC), and running the I2C clock 
at more than 20MHz.

The 12F1840 does indeed have hardware I2C functionality, but I was 
deliberately testing the I2C Software library to see if "speed=255" was 
feasible at reasonable PIC oscillator speeds.

Regards,
Mike

On Monday, March 2, 2026 at 12:30:32 PM UTC-5 Rob CJ wrote:

> Hi Mike,
>
> Some questions. What does PLL HW/SW mean and what does undefined mean?
>
> The speed also depends on the speed of I2C device. If things go too fast, 
> it might apply clock stretching to slow down the I2C host. Do you know if 
> that is the case?
>
> And would or high speeds I2C hardware be an option?
>
> Kind regards,
>
> Rob
>
> ------------------------------
> *Van:* 'Mike' via jallib <[email protected]>
> *Verzonden:* zondag 1 maart 2026 16:20
>
> *Aan:* jallib <[email protected]>
> *Onderwerp:* Re: [jallib] Re: I2C software library request
> Here's some Sunday morning testing trivia.  I was surprised how slow 
> everything was.
> All testing was done on a 12F1840, since it is software selectable up to 
> 32MHz.
>
> [image: Screenshot from 2026-03-01 10-13-42.png]
>
> On Sunday, March 1, 2026 at 3:33:48 AM UTC-5 Rob CJ wrote:
>
> Hi Mike,
>
> Thanks for testing. I added the update to Github. I saw that the bee 
> package was already made so it will be in the next version.
>
> Kind regards,
>
> Rob
>
> ------------------------------
> *Van:* 'Mike' via jallib <[email protected]>
> *Verzonden:* zaterdag 28 februari 2026 23:14
> *Aan:* jallib <[email protected]>
> *Onderwerp:* Re: [jallib] Re: I2C software library request 
>  
> Hi Rob,
>
> I tested the "no delay" speed setting on a 12F683 running on the 8MHz 
> internal oscillator and connected to a 128x32 I2C OLED display and it 
> worked just fine.  I'll try faster (crystals) at some point, as well as the 
> 32MHz internal oscillator of the 12F1840 and 16F1825 that I know I have.
>
> Regards,
> Mike
>
>
> On Saturday, February 28, 2026 at 11:18:12 AM UTC-5 Rob CJ wrote:
>
> Hi Mike,
>
> Seems like a good addtion. I updated the library with your suggestion. If 
> you are OK with it, I will add it to Jallib.
>
> I also added some extra info about the bus speeds.
>
> Kind regards,
>
> Rob
>
> ------------------------------
> *Van:* 'Mike' via jallib <[email protected]>
> *Verzonden:* zaterdag 28 februari 2026 16:56
> *Aan:* jallib <[email protected]>
> *Onderwerp:* [jallib] Re: I2C software library request 
>  
> The code should have been this:
>
> procedure  _i2c_wait() is
>    
>    if i2c_bus_speed == 255 then
>       return
>    elsif _i2c_bus_speed == 10 then 
>       ; i2c_1MHz
>       delay_1us()
>       return
>    elsif _i2c_bus_speed == 4  then 
>       ; i2c_400kHz
>       delay_2us()
>       return
>    else                           
>       ; i2c_100kHz
>       delay_5us()
>       return
>    end if
>    
> end procedure
>
> On Saturday, February 28, 2026 at 10:51:01 AM UTC-5 Mike wrote:
>
> The current I2C software library supports three speeds: 1MHz, 400kHz, and 
> 100kHz.  But many aftermarket I2C devices can go much faster than that, 
> such as the small OLED displays.
>
> Long ago I modified my local copy of the library to support an "unlimited" 
> speed and I'm asking that this option be added to jallib.  See below.
>
> Regards,
> Mike
>
> procedure  _i2c_wait() is
>    
>    if i2c_bus_speed == 255 then
>       return
>    if _i2c_bus_speed == 10 then 
>       ; i2c_1MHz
>       delay_1us()
>       return
>    elsif _i2c_bus_speed == 4  then 
>       ; i2c_400kHz
>       delay_2us()
>       return
>    else                           
>       ; i2c_100kHz
>       delay_5us()
>       return
>    end if
>    
> end procedure
>
> -- 
> You received this message because you are subscribed to the Google Groups 
> "jallib" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to [email protected].
> To view this discussion visit 
> https://groups.google.com/d/msgid/jallib/5a402fef-1c22-4228-8d65-9caf569c4346n%40googlegroups.com
>  
> <https://groups.google.com/d/msgid/jallib/5a402fef-1c22-4228-8d65-9caf569c4346n%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>
> -- 
> You received this message because you are subscribed to the Google Groups 
> "jallib" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to [email protected].
> To view this discussion visit 
> https://groups.google.com/d/msgid/jallib/5c386650-0eb8-4b9d-ba00-333ca4fee698n%40googlegroups.com
>  
> <https://groups.google.com/d/msgid/jallib/5c386650-0eb8-4b9d-ba00-333ca4fee698n%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>
> -- 
> You received this message because you are subscribed to the Google Groups 
> "jallib" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to [email protected].
> To view this discussion visit 
> https://groups.google.com/d/msgid/jallib/0eca8088-1242-4390-b996-b5169a4b25a2n%40googlegroups.com
>  
> <https://groups.google.com/d/msgid/jallib/0eca8088-1242-4390-b996-b5169a4b25a2n%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>

-- 
You received this message because you are subscribed to the Google Groups 
"jallib" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion visit 
https://groups.google.com/d/msgid/jallib/09f8d7d8-a79c-454f-ba5e-fc78b252cabfn%40googlegroups.com.

Reply via email to