www.horizontautomatics.ru

Программирование, автоматизация.

Вывод для сброса таймера .

Модератор: Евгений

Re: Вывод для сброса таймера .

Сообщение mush25 » 08 июн 2018, 16:07

Куда надо скопировать ?
mush25
 
Сообщения: 144
Зарегистрирован: 05 июн 2018, 15:54

Re: Вывод для сброса таймера .

Сообщение Евгений » 08 июн 2018, 16:07

Код блока time_TOFF.inc:
Код: Выделить всё
#ifndef _FBD45_
#define _FBD45_ FBD45
#message define FBD45 time off
;Размер FBD блока
;1 байт  -вход
;2 байта -период
;1 байт  -выход
;Оперативная память:
;  1 байт  - состояние
;  2 байта - отсечка времени

FBD45_run:
  ld    A,    X+                                   ;читаем байт состояния
  ld    Uz1L, X+                                   ;отсечка времени Lw
  ld    Uz1H, X+                                   ;отсечка времени Hw
  sbiw  XL,   3                                    ;Возвращаем указатель

  rcall Read_cfg_Load_Uz2                          ;вход
  rcall Read_cfg                                   ;Читаем длительность  Lw
  mov   C, Addr_Data                               ;Читаем длительность  Lw
  rcall Read_cfg                                   ;Читаем длительность  Hg
  mov   D, Addr_Data                               ;Читаем длительность  Hg
  mov Uz3L, Zero                                   ;Предварительная установка "0"
//***************** Отслеживаем сигнал **********************
  sbrc Uz2L, 0
  rjmp FBD45_start
//*********** Проверка сигнала запуска **********************
  tst  A                     //Тест бита (отсчет времени)
  brpl FBD45_end             //Тест бита (отсчет времени)
//************* Нет сигнала запуска *************************
  rcall Timer_Diff           //Вычисляем разницу времени
  cp   ZL,  C                //Сраниваем
  cpc  ZH,  D                //Сраниваем
  brmi FBD45_one
  andi A, 0b01111111         //(сбрасываем бит отсчет времени)

FBD45_end:
  st   X+,   A               //сохраняем
  st   X+,   Uz1L            //сохраняем
  st   X+,   Uz1H            //сохраняем
  rcall Read_cfg_Save_Uz3    //выводим состояние
  ret

FBD45_start:
  mov  Uz3L, One                            //выводим 1
  ori  A,   0b10000000                      //(устанавливаем бит отсчет времени)
  lds  Uz1L, TimerCounter0_DATA_RAM+1       //Отсечка времени старта
  lds  Uz1H, TimerCounter0_DATA_RAM+2       //Отсечка времени старта
  rjmp FBD45_end                            //

FBD45_one:
  mov  Uz3L, One               //выводим 1
  rjmp FBD45_end

FBD45:
 .db 4, 3            //Размер FBD блока, необходимая оперативная память
 .dw FBD45_run, Init_default


#else
 #error redeclared FBD45 __FILE__
#endif
Аватара пользователя
Евгений
Администратор
 
Сообщения: 325
Зарегистрирован: 08 окт 2014, 11:36

Re: Вывод для сброса таймера .

Сообщение Евгений » 08 июн 2018, 16:10

Создай файл time_TOFF_R.inc и туда скопируй вышеприведенный код.

Сейчас думаю как его подправить.
Аватара пользователя
Евгений
Администратор
 
Сообщения: 325
Зарегистрирован: 08 окт 2014, 11:36

Re: Вывод для сброса таймера .

Сообщение mush25 » 08 июн 2018, 16:12

В какой папке именно создать её ? в software ?
mush25
 
Сообщения: 144
Зарегистрирован: 05 июн 2018, 15:54

Re: Вывод для сброса таймера .

Сообщение mush25 » 08 июн 2018, 16:14

Таймер с задержкой отключения и уст 0 не пойдёт как название ? или надо на инглише ?
mush25
 
Сообщения: 144
Зарегистрирован: 05 июн 2018, 15:54

Re: Вывод для сброса таймера .

Сообщение Евгений » 08 июн 2018, 16:24

латиница, там где xml файл

Скорректированный код:
Код: Выделить всё
#ifndef _FBD45_
#define _FBD45_ FBD45
#message define FBD45 time off reset
;Размер FBD блока
;1 байт  -вход
;2 байта -период
;1 байт  -выход
;Оперативная память:
;  1 байт  - состояние
;  2 байта - отсечка времени

FBD45_run:
  ld    A,    X+                                   ;читаем байт состояния
  ld    Uz1L, X+                                   ;отсечка времени Lw
  ld    Uz1H, X+                                   ;отсечка времени Hw
  sbiw  XL,   3                                    ;Возвращаем указатель

  rcall Read_cfg_Load_Uz2                          ;вход  I
  rcall Read_cfg_Load_Uz3                          ;вход  R
  tst   Uz3L                                       ;Тестируем состояние входа R
  breq  FBD45_no_res                               ;Проыверяем, переходим если 0
  andi  A, 0b01111111         //(сбрасываем бит отсчет времени)
FBD45_no_res:
  rcall Read_cfg                                   ;Читаем длительность  Lw
  mov   C, Addr_Data                               ;Читаем длительность  Lw
  rcall Read_cfg                                   ;Читаем длительность  Hg
  mov   D, Addr_Data                               ;Читаем длительность  Hg
  mov Uz3L, Zero                                   ;Предварительная установка "0"
//***************** Отслеживаем сигнал **********************
  sbrc Uz2L, 0
  rjmp FBD45_start
//*********** Проверка сигнала запуска **********************
  tst  A                     //Тест бита (отсчет времени)
  brpl FBD45_end             //Тест бита (отсчет времени)
//************* Нет сигнала запуска *************************
  rcall Timer_Diff           //Вычисляем разницу времени
  cp   ZL,  C                //Сраниваем
  cpc  ZH,  D                //Сраниваем
  brmi FBD45_one
  andi A, 0b01111111         //(сбрасываем бит отсчет времени)

FBD45_end:
  st   X+,   A               //сохраняем
  st   X+,   Uz1L            //сохраняем
  st   X+,   Uz1H            //сохраняем
  rcall Read_cfg_Save_Uz3    //выводим состояние
  ret

FBD45_start:
  mov  Uz3L, One                            //выводим 1
  ori  A,   0b10000000                      //(устанавливаем бит отсчет времени)
  lds  Uz1L, TimerCounter0_DATA_RAM+1       //Отсечка времени старта
  lds  Uz1H, TimerCounter0_DATA_RAM+2       //Отсечка времени старта
  rjmp FBD45_end                            //

FBD45_one:
  mov  Uz3L, One               //выводим 1
  rjmp FBD45_end

FBD45:
 .db 4, 3            //Размер FBD блока, необходимая оперативная память
 .dw FBD45_run, Init_default


#else
 #error redeclared FBD45 __FILE__
#endif
Аватара пользователя
Евгений
Администратор
 
Сообщения: 325
Зарегистрирован: 08 окт 2014, 11:36

Re: Вывод для сброса таймера .

Сообщение Евгений » 08 июн 2018, 16:25

Пробуй, выложи скрин полученного FBD блока
Аватара пользователя
Евгений
Администратор
 
Сообщения: 325
Зарегистрирован: 08 окт 2014, 11:36

Re: Вывод для сброса таймера .

Сообщение mush25 » 08 июн 2018, 16:40

скрин
Вложения
time_TOFF_R.inc
(2.58 КБ) Скачиваний: 289
mush25
 
Сообщения: 144
Зарегистрирован: 05 июн 2018, 15:54

Re: Вывод для сброса таймера .

Сообщение mush25 » 08 июн 2018, 17:00

скрин
Вложения
t1.jpg
mush25
 
Сообщения: 144
Зарегистрирован: 05 июн 2018, 15:54

Re: Вывод для сброса таймера .

Сообщение mush25 » 08 июн 2018, 17:03

скрин
Вложения
t.jpg
mush25
 
Сообщения: 144
Зарегистрирован: 05 июн 2018, 15:54

Пред.След.

Вернуться в Микроконтроллеры AVR

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

cron