
CCS #use delay проблем s 16F721
Не че не съм на път да си напиша мой delay но рядко изобщо използвам delay и не съм се занимавал. Та как ли не го конфигурирах това но не може да докарам да генерира закъснение дори близо до това което се очаква. Подозирам проблема е свързан с реазлизация на клока при конкретният контролер, има 500 khz вътрешен генератор, PLL х32 и постскалер, съответно варианта е или 500 khz и съответно надолу до 62.5 или 16, 8 , 4,2 Mhz. PLL-а се управлява от конфигурационната дума и там нещата изглеждат наред. Реално и честотата си е наред, пускам го на 2 Mhz, и поне последно като гледах със скопа на толкова си и работи.
Проблема обаче е в калкулацията на времената за delay_ms, изчислява ги за всичко друго но не и за 2 Mhz :
#use delay(internal=2 Mhz, RESTART_WDT) генерира делей като за
'8 Mhz' 16 Mhz клок
#use delay(internal = 500khz, clock=2000000, RESTART_WDT) това също работи като за
'8Mhz' 16 Mhzклок
Опитах и всякакви други комбинации но резултата е един и същ.
'Сега защо генерира за 8Mhz не ми е ясно, след като изхода на PLL е 16'. Опитах да го излъжа, че работи на 500 khz но плаче когато сетвам осцилатора на 2 и 8 mhz. Сетването може да го направя и с моя функция, но пък задам ли му 500 khz бута и конфигурационната дума. Реално дори като го направи на 500 khz, delayпродължава да го смята на 8 Mhz база и от 4 пъти по-дълго става 20 пъти по-дълго

Не, че толкова ми пречи, но дразни, иначе има 1000 workarounda, ама защо не се конфигурира както си трябва. Някой борил ли го е това?
едит .. нещо ми куца умножението, 2х8 е 16, та за 16 Mhz клок се сетва, това в апострофите е старото ми писание, ама да не го трия ако някой вече го е чел.