On 28.08.2016 10:48, Philipp Klaus Krause wrote: > I have some trouble understanding the C8051 clock and timers. > In the tutorial code at > http://www.colecovision.eu/mcs51/C8051F340%20380%20LED.shtml I get a > timer interrupt at 1000 Hz. But I got the values for configuring the > timer experimentally, and can't seem to get them from the datasheet. > > According to the datsheet, at startup the internal oscillator is running > at 24.5 Mhz (OSCICL reset value), then gets divided by 128 (OSCICN reset > value) and then used for SYSCLK (CLKSEL rest value). > > Thus SYSCLK is 24.5 Mhz / 128 about 0.1914 Mhz. > > In the timer, this then gets divided by 12 (CKCON reset value) adn then > sued as the frequency for incrementing the timer (TMOD value as in the > tutorial code). > > Thus the timer increment frequency is 24.5 Mhz / 128 / 12 about 0.0159 Mhz. > > The tutorial code ssets the timer register to (65536 - 125) in the > interrupt handler. > > Thus the timer interrupt frequency is 24.5 Mhz / 128 / 12 / 125 about > 127 Hz. > > So from the datasheet I get 127 Hz. But on the hardware I see 1000 Hz. > > Philipp
P.S.: I have verified that the OSCICN, CLKSEL and CKCON reset values are as in the datasheet. Initializing these registers explicitly to their reset value does not change anything. ------------------------------------------------------------------------------ _______________________________________________ Sdcc-user mailing list Sdcc-user@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/sdcc-user