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

From version 2.38
edited by Max
on 2025/02/25 14:31
Change comment: (Autosaved)
To version 2.46
edited by Max
on 2025/02/25 15:07
Change comment: (Autosaved)

Summary

Details

Page properties
Content
... ... @@ -579,24 +579,24 @@
579 579  == 022: Transfer the read block of non-volatile memory from the buffer to the bus ==
580 580  
581 581  (% class="wikigeneratedid" %)
582 -Код команды 022, данная команда обеспечивает передачу буфера энергонезависимой памяти в регистр DR для считывания.
582 +Command code 022, this command ensures that the non-volatile memory buffer is transferred to the DR register for reading.
583 583  
584 584  (% class="wikigeneratedid" %)
585 -Пример программы
585 +Example program
586 586  
587 587  {{code language="assembler"}}
588 -AZ$CSR = 177220; регистр команд и состояния (CSR)
589 -AZ$DR = 177222; регистр данных (DR)
588 +AZ$CSR = 177220; command and status register (CSR)
589 +AZ$DR = 177222; data register (DR)
590 590  
591 591  
592 -; trap 50 - cброс AZ
592 +; trap 50 - reset AZ
593 593  ; результат в R1 =0 ok
594 594  AZreset: MOV #AZ$CSR,R1
595 -1$: CLR (R1); Пошлем команду "Сброс"
596 - TSTB (R1); Проверим готовность контроллера
597 - BPL 1$; Если не готов, сбрасываем еще
598 - ; раз и проверяем снова
599 - TST (R1); Проверим на ошибку,
595 +1$: CLR (R1); Send the "Reset" command
596 + TSTB (R1); Check the controller readiness
597 + BPL 1$; If not ready, reset again
598 +; once and check again
599 + TST (R1); Check for an error,
600 600   BMI 0ERR$
601 601   CLR R1
602 602   return
... ... @@ -605,30 +605,30 @@
605 605   return
606 606  
607 607  
608 -; trap 54 - чтение энергонезависимой памяти блока 1 EEPROM в буфер с адреса ADREEPROMMEM
609 -; результат R3 - адрес, если R3=0 ошибка
610 -; статус чтения в R1 0 - ok
611 -; 1 - размер не соответствует сохраненному
612 -; 2 - oшибка версии
613 -; 3 - oшибка контрольной суммы
608 +; trap 54 - reading non-volatile memory of block 1 EEPROM to the buffer from the address ADREEPROMMEM
609 +; result R3 - address, if R3=0 error
610 +; read status in R1 0 - ok
611 +; 1 - size does not match saved
612 +; 2 - version error
613 +; 3 - checksum error
614 614  ReadEEPROM: push R2
615 - call AZreset; сбросим
615 + call AZreset; reset
616 616   tst R1
617 617   bne 0ERR$
618 618  ; теперь читаем
619 619   MOV #AZ$CSR,R1
620 - mov #21,(R1); считать блок 1 энергонезависимой памяти в буфер
621 -0$: TSTB (R1); проверяем результат выполнения
622 - BPL 0$; ждем
623 - mov #22,(R1); отдать на шину считанный блок энергонезависимой памяти из буфера
624 -1$: TSTB (R1); проверяем результат выполнения
625 - BPL 1$; ждем
626 - TST (R1)+; инкрементируем
620 + mov #21,(R1); read block 1 of non-volatile memory into buffer
621 +0$: TSTB (R1); check execution result
622 + BPL 0$; wait
623 + mov #22,(R1); send read block of non-volatile memory from buffer to bus
624 +1$: TSTB (R1); check execution result
625 + BPL 1$; wait
626 + TST (R1)+; increment
627 627   mov #ADREEPROMMEM,R3
628 - mov #256.,R2; читаем 256. слов; первое слово - результат чтения
629 -2$: mov (R1),(R3)+; читаем блок слов в память
628 + mov #256.,R2; read 256. words; first word is reading result
629 +2$: mov (R1),(R3)+; read block of words into memory
630 630   sob R2,2$
631 - mov #ADREEPROMMEM,R3; успешно
631 + mov #ADREEPROMMEM,R3; successful
632 632   mov (R3),R1
633 633   br 0END$
634 634  0ERR$: CLR R3
... ... @@ -636,41 +636,39 @@
636 636   return
637 637  {{/code}}
638 638  
639 -очевидно, после считывания памяти необходимо проверить код результата в первом слове - см расшифровку кодов ошибок
640 -\\Примеры возвращаемых данных по командам
641 -\\последовательная подача команды 021 и затем 022 позволит считать 256. слов
642 -из энергонезависимой памяти
643 -**Внимание! **первое слово это будет статус успешности чтения
644 -
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 +\\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
645 645  
646 646  * 0 - ok
647 -* 1 - размер не соответствует сохраненному
648 -* 2 - oшибка версии
649 -* 3 - oшибка контрольной суммы
645 +* 1 - size does not match saved
646 +* 2 - version error
647 +* 3 - checksum error
650 650  
651 -== **023: Принять с шины в буфер данные для последующей записи в буфер** ==
649 +== 023: Receive data from the bus into the buffer for subsequent writing into the buffer ==
652 652  
653 -Код команды 023, данная команда позволяет наполнить буфер энергонезависимой памяти
651 +Command code 023, this command allows you to fill the non-volatile memory buffer
654 654  
655 -== **024: Записать из буфера в блок энергонезависимой памяти** ==
653 +== 024: Write from buffer to non-volatile memory block ==
656 656  
657 -Код команды 024, данная команда вызывает запись блока энергонезависимой памяти из буфера энергонезависимой памяти.
655 +Command code 024, this command causes a non-volatile memory block to be written from the non-volatile memory buffer.
658 658  
659 -Пример программы
657 +Example program
660 660  
661 661  {{code language="assembler"}}
662 -AZ$CSR = 177220; регистр команд и состояния (CSR)
663 -AZ$DR = 177222; регистр данных (DR)
660 +AZ$CSR = 177220; Command and Status Register (CSR)
661 +AZ$DR = 177222; Data Register (DR)
664 664  
665 665  
666 -; trap 50 - cброс AZ
664 +; trap 50 - reset AZ
667 667  ; результат в R1 =0 ok
668 668  AZreset: MOV #AZ$CSR,R1
669 -1$: CLR (R1); Пошлем команду "Сброс"
670 - TSTB (R1); Проверим готовность контроллера
671 - BPL 1$; Если не готов, сбрасываем еще
672 - ; раз и проверяем снова
673 - 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,
674 674   BMI 0ERR$
675 675   CLR R1
676 676   return
... ... @@ -678,27 +678,27 @@
678 678   COM R1
679 679   return
680 680  
681 -; trap 55 - запись энергонезависимой памяти из буфера с адреса ADREEPROMMEM в блок 1 EEPROM
679 +; trap 55 - write non-volatile memory from the buffer at address ADREEPROMMEM в блок 1 EEPROM
682 682  WriteEEPROM: push R1
683 683   push R2
684 684   push R3
685 - call AZreset; сбросим
683 + call AZreset; reset
686 686   tst R1
687 687   bne 0ERR$
688 688  
689 689   MOV #AZ$CSR,R1
690 - mov #23,(R1); командуем что будем писать данные в буфер
691 -0$: TSTB (R1); проверяем результат выполнения
692 - BPL 0$; ждем
693 - 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
694 694   mov #ADREEPROMMEM+2,R3
695 - mov #255.,R2; пишем 255. слов; первое слово пропускаем - результат чтения
696 -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
697 697   sob R2,1$
698 - tst -(R1); декрементируем
699 - mov #24,(R1); записать из буфера в блок 1 энергонезависимой памяти
700 -2$: TSTB (R1); проверяем результат выполнения
701 - 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
702 702   br 0END$
703 703  0ERR$: CLR R3
704 704  0END$: pop R3
... ... @@ -707,11 +707,11 @@
707 707   return
708 708  {{/code}}
709 709  
710 -**Обращаю внимание**, при записи, буфер идет сразу с данными, те нет первого слова со статусом.
708 +**Please note** that when recording, the buffer immediately comes with the data, i.e. there is no first word with the statu
711 711  
712 712  
713 713  
714 -= Блок команд для работы с RTC и NTP =
712 += Block of commands for working with RTC and NTP =
715 715  
716 716  В контроллере AZ®  есть 2 источника получения даты-времени, первый это RTC встроенный в STM32, второй это часы в стеке TCP/IP.  Часы RTC работают автономно при наличии установленной батарейки 2032. Часы в стеке TCP/IP устанавливаются на основании данных с NTP-сервера.
717 717