> 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.

First of all which MCU are you using exactly? The C8051F340 as in the URL
name does not run the internal RC oscillator at 24.5MHz but runs at 12MHz.
And the default OSCICN value makes SYSCLK=HFRCO/8. Next there is a 4x
clock multiplier which if off after reset (CLKMUL). And CLKSEL can choose
this multiplied clock /2 or /1.

Maarten

------------------------------------------------------------------------------
_______________________________________________
Sdcc-user mailing list
Sdcc-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sdcc-user

Reply via email to