_____________
Никак не могу понять в ДВУХ эмуляторах VMlab и Proteus этот код работает,
а в РЕАЛЬНОМ устройстве нет...
ПОЧЕМУ?...
_____________
Набросал програмку(
20060410.zip ( 2.94 килобайт )
Кол-во скачиваний: 126),
собрал макетку.
Только на AT90S2313, выход сделал на светодиоды,
пробовал с одной несщей и одной модулирующей,
пробовал и на AVRStudio.
1
if((PINx.x)&&(PINx.x)){...
if((PORTx.x)&&(PORTx.x)){...
оба варианта нормально работают, проверил на макетке.
2
Возможные причины неработы, мое мнение:
- хомут в остальной части программы,
- хомут в железе (короткое, испорченый чип)
3
В предыдущей своей теме "Генератор, меандры..."
Вы написали:
_____________
"...Вопрос 2. Дискретность установки частоты у 8-разрядного таймера оставляет желать лучшего даже при 1/8 кдел., т.е. получается допустим 420+-2Гц (иногда и больше) (многовато, нужно хотя бы +- 1Гц). "
_____________
Я очень сомневаюсь, что используя CodeVisionAVR Вы получите
такую точность.
Поясню:
(1/420)-(1/421)=0.000 005 655 сек, то есть 5 мксек
Когда я гонял програмку в AVRStudio, то видно что период
прерывания всегда больше вычисленного (сохраняется куча регистров
перед переустановкой таймера),
и, что хуже каждый раз другой, прыгает в пределах более 20 мксек
(при кварце 4 МГц).
Может как и можно это устранить, но я не знаю.
По моему, это можно сделать только в ассемблере.
Или повысить частоту кварца.
Или подумать нужна ли такая точность.
____________________
Александр
2006 04 11