реклама на сайте
подробности

 
 
> Глюк с Мега8, Странно работает ТС1
Skif_A
сообщение Jul 4 2007, 17:57
Сообщение #1





Группа: Новичок
Сообщений: 4
Регистрация: 10-07-06
Пользователь №: 18 713



Здравствуйте.
Начинаю изучать программирование АВР. Задача - сделать суточный таймер.
Написано два варианта программы. Оба работают на эмуляторе стабильно и на контроллере при условии что установлены малые промежутки времени либо малые значения предделителя таймера. На больших промежутках времени контроллер не выполняет необходимое действие. Всё время работает и не сбрасывается. Оба задействованых таймера считают. ТС2 в асинхронном режиме от кварца 32768 считает секундные импульсы, передаёт импульсы со своей ноги на входную ногу ТС1, который их подсчитывает. Контроллер на время простоя крутится в замкнутом цикле.
Всё перепроверено и, повторюсь, прекрасно работает если задавать время выполнения действия менее 15 мин. Или если ускорить процесс установкой маленького значения предделителя ТС2.

Подскажите в чём может быть загводка??? Почему работающий ТС1 не входит в прерывание по сравнению через 30 и более минут???
Во втором варианте программы не использовалось прерывание от сравнения, каждую секунду считывались показания ТС1 и сравнивались с установленными. Ситуация такая же - если установить 10-15 мин то работает, если более то нет....

Я в панике.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
SasaVitebsk
сообщение Jul 5 2007, 17:17
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Выбор за Вами, естественно.

Я взял посмотреть Вашу программу. Я не собираюсь Вас в чём-то убеждать, но предложу Вам некоторые кусочки из моей старой программы. Сразу оговорюсь что сейчас я коментирую ещё более подробно.

Код
...

; PC.0    - Vol0    \  Громкость
;    1    - Vol1    /  динамика
;    2
;    3    - OH    - Трубка снята (0)
;    4    - DTR    - Готовность компьютера
;    5    - DCD    - Обнаружение несущей

...

; Порт D

.equ    RxD    = pd0; Вход с RS232С
.equ    TxD    = pd1; Выход на RS232С
.equ    ReadyL    = pd2; Готовность 1200

...

.equ    ONTONE    = $85; начало гудка
.equ    ONPAUSE    = $86; конец гудка
.equ    CARRIER    = $ff; Несущая
.equ    CONNECTA= $b0; Соединение установить на ответ
.equ    CONNECTD= $b1; Соединение установить на передачу

...

.def    tmpsreg    = r2; для сохранения sreg в прерываниях
.def    TBH    = r3; Начало буфера передачи
.def    TBE    = r4; Конец буфера передачи

...

s22:    .byte    1; XON
s23:    .byte    1; XOFF
s24:    .byte    1; Побитно устанавливаемый регистр
.equ    bl0    = 0; d0 \  Громкость звука динамика
.equ    bl1    = 1; d1 /
.equ    becho    = 2; d2 - ECHO

...

ComC0:
    ld    wl,    Y+; Прочитать следующий символ
    lds    wh,    s3; Код CR
    cp    wl,    wh; Конец команды?
    breq    ComEnd    ; если да, то закончить
    cpi    wl,    $61; Если это малые буквы, то
    brlo    ComC1    ; оставить как есть
    andi    wl,    $df; а иначе сделать их большими
ComC1:    brts    ComC2
    cpi    wl,    $44; "D"
...


Дело не в том, что нам неудобно читать Вашу программу и угадывать её смысл. Главное, что через малый промежуток времени, Вы будете сами с трудом догадываться что Вы хотели написать. Так как у Вас изменятся подходы, взгляды, частично Вы забудите. И будете в голос ругать того безобразника, который это написал. smile.gif

Это конечно мой взгляд на вещи и я Вам его не навязываю.

По существу вопроса.
У меня в последнем изделии есть часы на м48 (будет и на м8 работать) и как минимум на два-три месяца у меня к ним претензий нет. В остальном я советовал бы прислушаться к defunct. И сделать таймер на базе одного таймера. Если же Вам нужны секундные (или любые другие) импульсы на ноге, то выводите их не стесняйтесь. А учёт ведите внутри, а не по внешним событиям. А то заочно бороться с помехами, - как то не катит.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 28th July 2025 - 10:22
Рейтинг@Mail.ru


Страница сгенерированна за 0.01384 секунд с 7
ELECTRONIX ©2004-2016