Last modified by Max on 2025/03/02 15:18

From version 2.39
edited by Max
on 2025/02/25 14:36
Change comment: (Autosaved)
To version 2.48
edited by Max
on 2025/02/25 15:16
Change comment: There is no comment for this version

Summary

Details

Page properties
Content
... ... @@ -637,39 +637,38 @@
637 637  {{/code}}
638 638  
639 639  obviously, after reading the memory, it is necessary to check the result code in the first word - see the decoding of error codes
640 -\\Примеры возвращаемых данных по командам
641 -\\последовательная подача команды 021 и затем 022 позволит считать 256. слов
642 -из энергонезависимой памяти
643 -**Внимание! **первое слово это будет статус успешности чтения
640 +\\Examples of returned data for commands
641 +\\sequentially issuing the command 021 and then 022 will allow reading 256 words from non-volatile memory
642 +Attention! The first word will be the reading success status
644 644  
645 645  * 0 - ok
646 -* 1 - размер не соответствует сохраненному
647 -* 2 - oшибка версии
648 -* 3 - oшибка контрольной суммы
645 +* 1 - size does not match saved
646 +* 2 - version error
647 +* 3 - checksum error
649 649  
650 -== **023: Принять с шины в буфер данные для последующей записи в буфер** ==
649 +== 023: Receive data from the bus into the buffer for subsequent writing into the buffer ==
651 651  
652 -Код команды 023, данная команда позволяет наполнить буфер энергонезависимой памяти
651 +Command code 023, this command allows you to fill the non-volatile memory buffer
653 653  
654 -== **024: Записать из буфера в блок энергонезависимой памяти** ==
653 +== 024: Write from buffer to non-volatile memory block ==
655 655  
656 -Код команды 024, данная команда вызывает запись блока энергонезависимой памяти из буфера энергонезависимой памяти.
655 +Command code 024, this command causes a non-volatile memory block to be written from the non-volatile memory buffer.
657 657  
658 -Пример программы
657 +Example program
659 659  
660 660  {{code language="assembler"}}
661 -AZ$CSR = 177220; регистр команд и состояния (CSR)
662 -AZ$DR = 177222; регистр данных (DR)
660 +AZ$CSR = 177220; Command and Status Register (CSR)
661 +AZ$DR = 177222; Data Register (DR)
663 663  
664 664  
665 -; trap 50 - cброс AZ
664 +; trap 50 - reset AZ
666 666  ; результат в R1 =0 ok
667 667  AZreset: MOV #AZ$CSR,R1
668 -1$: CLR (R1); Пошлем команду "Сброс"
669 - TSTB (R1); Проверим готовность контроллера
670 - BPL 1$; Если не готов, сбрасываем еще
671 - ; раз и проверяем снова
672 - TST (R1); Проверим на ошибку,
667 +1$: CLR (R1); Send the "Reset" command
668 + TSTB (R1); Check the controller readiness
669 + BPL 1$; If not ready, reset again
670 +; once and check again
671 + TST (R1); Check for an error,
673 673   BMI 0ERR$
674 674   CLR R1
675 675   return
... ... @@ -677,27 +677,27 @@
677 677   COM R1
678 678   return
679 679  
680 -; trap 55 - запись энергонезависимой памяти из буфера с адреса ADREEPROMMEM в блок 1 EEPROM
679 +; trap 55 - write non-volatile memory from the buffer at address ADREEPROMMEM в блок 1 EEPROM
681 681  WriteEEPROM: push R1
682 682   push R2
683 683   push R3
684 - call AZreset; сбросим
683 + call AZreset; reset
685 685   tst R1
686 686   bne 0ERR$
687 687  
688 688   MOV #AZ$CSR,R1
689 - mov #23,(R1); командуем что будем писать данные в буфер
690 -0$: TSTB (R1); проверяем результат выполнения
691 - BPL 0$; ждем
692 - TST (R1)+; инкрементируем
688 + mov #23,(R1);command that we will write data to the buffer
689 +0$: TSTB (R1); check the result of executio
690 + BPL 0$; wait
691 + TST (R1)+; increment
693 693   mov #ADREEPROMMEM+2,R3
694 - mov #255.,R2; пишем 255. слов; первое слово пропускаем - результат чтения
695 -1$: mov (R3)+,(R1); отдаем в контроллер
693 + mov #255.,R2; write 255. words; skip the first word - the result of reading
694 +1$: mov (R3)+,(R1); send to the controller
696 696   sob R2,1$
697 - tst -(R1); декрементируем
698 - mov #24,(R1); записать из буфера в блок 1 энергонезависимой памяти
699 -2$: TSTB (R1); проверяем результат выполнения
700 - BPL 2$; ждем
696 + tst -(R1); decrement
697 + mov #24,(R1); write from the buffer to block 1 of non-volatile memory
698 +2$: TSTB (R1); check the result of execution
699 + BPL 2$; we are waiting
701 701   br 0END$
702 702  0ERR$: CLR R3
703 703  0END$: pop R3
... ... @@ -706,23 +706,21 @@
706 706   return
707 707  {{/code}}
708 708  
709 -**Обращаю внимание**, при записи, буфер идет сразу с данными, те нет первого слова со статусом.
708 +**Please note** that when recording, the buffer immediately comes with the data, i.e. there is no first word with the statu
710 710  
711 711  
712 712  
713 -= Блок команд для работы с RTC и NTP =
712 += Block of commands for working with RTC and NTP =
714 714  
715 -В контроллере AZ®  есть 2 источника получения даты-времени, первый это RTC встроенный в STM32, второй это часы в стеке TCP/IP.  Часы RTC работают автономно при наличии установленной батарейки 2032. Часы в стеке TCP/IP устанавливаются на основании данных с NTP-сервера.
714 +The AZ® controller has 2 sources of date-time, the first is the RTC built into the STM32, the second is the clock in the TCP/IP stack. The RTC clock works autonomously with a 2032 battery installed. The clock in the TCP/IP stack is set based on data from the NTP server.
716 716  
717 717  
718 -== Формат буфера timestamp (доступен по чтению) ==
717 +== Buffer format timestamp (readable) ==
719 719  
720 -API контроллера сразу готовит время в нескольких форматах, дабы его было удобно применить на стороне PDP-11
719 +The controller API immediately prepares time in several formats, so that it can be conveniently used on the PDP-11 side
721 721  
722 722  {{info}}
723 -формат буфера даты-времени
724 -offset в восьмеричной системе - те слова
725 -формат буфера даты-времени
722 +datetime buffer format octal offset - those words datetime buffer format
726 726  \\[0]=rtc_rt11date();
727 727  [2]=rt11 time 50Hz big word;
728 728  [4]=rt11 time 50Hz little word;
... ... @@ -740,72 +740,72 @@
740 740  {{/info}}
741 741  
742 742  
743 -== Формат буфера SimpleIN (при записи) ==
740 +== SimpleIN buffer format (when writing) ==
744 744  
745 -формат максимально упрощен, для работы со стороны PDP-11
742 +the format is simplified as much as possible, for work with PDP-11
746 746  
747 747  {{info}}
748 -offset в восьмеричной системе - те слова
745 +offset in octal - those words
749 749  
750 -[0]=year       год, младшие две цифры - те 22 а не 2022(!)
751 -[2]=month;     месяц
752 -[4]=day;       день
753 -[6]=wday;      день недели =0 не установлен, 1- понедельник 2 - вторник итд
754 -[10]=hour;     час
755 -[12]=min;      минута
756 -[14]=sec;      секунда
747 +[0]=year, the lower two digits are 22 and not 2022(!)
748 +[2]=month; month
749 +[4]=day; day
750 +[6]=wday; day of the week =0 not set, 1 - Monday 2 - Tuesday etc.
751 +[10]=hour; hour
752 +[12]=min; minute
753 +[14]=sec; second
757 757  {{/info}}
758 758  
759 759  
760 -== **031:  Получить время из RTC в буфер timestamp** ==
757 +== 031: Get time from RTC to timestamp buffer ==
761 761  
762 -Код команды 031, данная команда использует RTC часы как источник заполнения буфера timestamp
759 +Command code 031, this command uses RTC clock as a source of filling the timestamp buffer
763 763  
764 -Пример программы:
761 +Example program:
765 765  
766 766  {{code language="assembler"}}
767 -; trap 61 - чтение данных часов из автономных часов RTC
768 -; R3 - адрес буфера куда надо считать
769 -; результат в R3 адрес, если успешно. R3=0 если ошибка
764 +; trap 61 - reading clock data from autonomous RTC clock
765 +; R3 - buffer address where to read
766 +; result in R3 address if successful. R3=0 if error
770 770  GetDateFromRTC: push R0
771 771   push R1
772 772   push R2
773 - call AZreset; сбросим
770 + call AZreset; reset
774 774   tst R1
775 775   bne G60ERR
776 776   MOV #AZ$CSR,R1
777 777   mov #31,(R1)
778 - br G60; идем туда тк дальше код одинаковый
775 + br G60; let's go there because further code is the same
779 779  {{/code}}
780 780  
781 -== **032:  Получить время из буфера timestamp** ==
778 +== 032: Get time from timestamp buffer ==
782 782  
783 -Код команды 032, данная команда отдает на шину содержимое буфера timestamp
780 +Command code 032, this command sends the contents of the timestamp buffer to the bus
784 784  
785 785  {{code language="assembler"}}
786 -; работа с часами
787 -; trap 60 - чтение данных часов из TCP/IP стека
788 -; R3 - адрес буфера куда надо считать
789 -; результат в R3 адрес, если успешно. R3=0 если ошибка
783 +; working with clock
784 +; trap 60 - reading clock data from TCP/IP stack
785 +; R3 - buffer address where to read
786 +; result in R3 address if successful. R3=0 if error
790 790  GetDateFromLAN: push R0
791 791   push R1
792 792   push R2
793 - call AZreset; сбросим
790 + call AZreset; reset
794 794   tst R1
795 795   bne G60ERR
796 796   MOV #AZ$CSR,R1
797 797   mov #42,(R1)
798 -G60: TSTB (R1); проверяем результат выполнения
799 - BPL G60; ждем
795 +G60: TSTB (R1); check execution result
796 + BPL G60; wait
800 800   mov #32,(R1)
801 -1$: TSTB (R1); проверяем результат выполнения
798 +1$: TSTB (R1); check execution result
802 802   BPL 1$; ждем
803 - TST (R1)+; инкрементируем
804 - mov R3,R0; запомним R3 - адрес
805 - mov #10.,R2; читаем 10 слов
806 -2$: mov (R1),(R3)+; читаем блок слов в память
800 + TST (R1)+; increment
801 + mov R3,R0; remember R3 address
802 + mov #10.,R2; read 10 words
803 +2$: mov (R1),(R3)+; read block of words into memory
807 807   sob R2,2$
808 - mov R0,R3; успешно, вернем адрес в R3
805 + mov R0,R3; successful, return address to R3
809 809   br 0END$
810 810  G60ERR: CLR R3
811 811  0END$: pop R2
... ... @@ -814,11 +814,11 @@
814 814   return
815 815  {{/code}}
816 816  
817 -Стоит проверить корректность полученного времени:
814 +It is worth checking the correctness of the received time:
818 818  
819 819  {{code language="assembler"}}
820 -; trap 63 - проверка корректности времени
821 -; R3 - адрес буфера, результат в R3, если адрес буфера то OK, =0 ошибка
817 +; trap 63 - check time correctness
818 +; R3 - buffer address, result in R3, if buffer address then OK, =0 error
822 822  CheckDateTime: Cmp 6(r3),#2021.
823 823   Blos 1err
824 824   Cmp 6(r3),#2100.
... ... @@ -828,41 +828,41 @@
828 828   return
829 829  {{/code}}
830 830  
831 -== **033:  Запись времени-даты в буфер SimpleIN** ==
828 +== 033: Write time-date to SimpleIN buffer ==
832 832  
833 -Код команды 033, данная команда  принимает с шины данные в буфер SimpleIN
830 +Command code 033, this command receives data from the bus into the SimpleIN buffer
834 834  
835 -Работа данной команды аналогична работе команд [[023>>doc:||anchor="H023:41F44043843D44F44244C44144843843D44B43243144344443544043443043D43D44B43543443B44F43F43E44143B43543444344E44943543943743043F438441438432431443444435440"]] и [[016>>doc:||anchor="H016:A041F44043843D44F44244C43143B43E43A43443043D43D44B445432431443444435440"]].
832 +The operation of this command is similar to the operation of commands 023 and 016.
836 836  
837 -== **034:  Установка RTC на основании данных из буфера** ==
834 +== 034: Set RTC based on buffer data ==
838 838  
839 -Код команды 034, данная команда  устанавливает RTC на основании данных в буфере SimpleIN
836 +Command code 034, this command sets the RTC based on the data in the SimpleIN buffer
840 840  
841 -Данная команда выполняется быстро, но для исключения проблем цикл ожидания выполнения рекомендуется.
838 +This command executes quickly, but to avoid problems, a wait loop is recommended.
842 842  
843 -== **035:  Стимуляция запроса времени с NTP сервера, установка на основании ответа** ==
840 +== 035: Stimulate time request from NTP server, set based on response ==
844 844  
845 -Код команды 035, данная команда отправляет запрос на NTP cервер (установленный в AZ.INI файле или полученный от DHCP) и устанавливает часы в стеке TCP/IP.
842 +Command code 035, this command sends a request to the NTP server (set in the AZ.INI file or received from DHCP) and sets the clock in the TCP/IP stack.
846 846  
847 -Пример программы: отсылка запроса на установку времени с NTP сервера
844 +Example program: sending a request to set the time from an NTP server
848 848  
849 849  {{code language="assembler"}}
850 -; trap 62 - отсылка запроса на установку времени с NTP сервера
847 +; trap 62 - sending a request to set the time from the NTP server
851 851  GetDateNTPtoNET:push R1
852 - call AZreset; сбросим
849 + call AZreset; reset
853 853   tst R1
854 854   bne 0ERR$
855 855   MOV #AZ$CSR,R1
856 856   mov #35,(R1)
857 -0$: TSTB (R1); проверяем результат выполнения
858 - BPL 0$; ждем
854 +0$: TSTB (R1); check the result of execution
855 + BPL 0$; wait
859 859  0ERR$: pop R1
860 860   return
861 861  {{/code}}
862 862  
863 -Выполнение команды занимает 1-2 секунды в среднем. Данная команда требует работы стека TCP/IP, соответственно нужны циклы ожидания при включенном стеке.
860 +The command execution takes 1-2 seconds on average. This command requires the TCP/IP stack to work, so waiting cycles are needed when the stack is enabled.
864 864  
865 -Пример цикла опроса с целью получить время с сети
862 +An example of a polling cycle to get time from the network
866 866  
867 867  {{code language="assembler"}}
868 868  ; дата-время