MCPcopy Create free account
hub / github.com/WiringPi/WiringPi / gpioClockSet

Function gpioClockSet

wiringPi/wiringPi.c:1617–1639  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1615 */
1616
1617void gpioClockSet (int pin, int freq)
1618{
1619 int divi, divr, divf ;
1620
1621 FailOnModel5("gpioClockSet");
1622 if (!ToBCMPin(&pin)) {
1623 return;
1624 }
1625
1626 divi = 19200000 / freq ;
1627 divr = 19200000 % freq ;
1628 divf = (int)((double)divr * 4096.0 / 19200000.0) ;
1629
1630 if (divi > PWMCLK_DIVI_MAX) {
1631 divi = PWMCLK_DIVI_MAX;
1632 }
1633 *(clk + gpioToClkCon [pin]) = BCM_PASSWORD | GPIO_CLOCK_SOURCE ; // Stop GPIO Clock
1634 while ((*(clk + gpioToClkCon [pin]) & 0x80) != 0) // ... and wait
1635 ;
1636
1637 *(clk + gpioToClkDiv [pin]) = BCM_PASSWORD | (divi << 12) | divf ; // Set dividers
1638 *(clk + gpioToClkCon [pin]) = BCM_PASSWORD | 0x10 | GPIO_CLOCK_SOURCE ; // Start Clock
1639}
1640
1641
1642/*

Callers 2

doClockFunction · 0.85
pinModeFunction · 0.85

Calls 2

FailOnModel5Function · 0.85
ToBCMPinFunction · 0.85

Tested by

no test coverage detected