Changes for page API контроллеров AZ®
Last modified by Max on 2025/03/02 15:18
Summary
-
Page properties (1 modified, 0 added, 0 removed)
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 регистркомандисостояния(CSR)589 -AZ$DR регистрданных(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бросAZ592 +; 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вбуферсадресаADREEPROMMEM609 -; результатR3 -адрес,еслиR3=0ошибка610 -; статусчтениявR1 0 - ok611 -; 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 регистркомандисостояния(CSR)663 -AZ$DR регистрданных(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бросAZ664 +; 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 EEPROM679 +; 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