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 - Commandcode022,thiscommandensuresthatthenon-volatilememorybufferistransferred to theDRregisterfor reading.582 +Код команды 022, данная команда обеспечивает передачу буфера энергонезависимой памяти в регистр DR для считывания. 583 583 584 584 (% class="wikigeneratedid" %) 585 - Exampleprogram585 +Пример программы 586 586 587 587 {{code language="assembler"}} 588 -AZ$CSR = 177220; commandandstatusregister(CSR)589 -AZ$DR = 177222; dataregister(DR)588 +AZ$CSR = 177220; регистр команд и состояния (CSR) 589 +AZ$DR = 177222; регистр данных (DR) 590 590 591 591 592 -; trap 50 - resetAZ592 +; trap 50 - cброс AZ 593 593 ; результат в R1 =0 ok 594 594 AZreset: MOV #AZ$CSR,R1 595 -1$: CLR (R1); Sendthe"Reset"command596 - TSTB (R1); Checkthecontroller readiness597 - BPL 1$; Ifnotready,resetagain598 -; onceandcheckagain599 - TST (R1); Checkforan error,595 +1$: CLR (R1); Пошлем команду "Сброс" 596 + TSTB (R1); Проверим готовность контроллера 597 + BPL 1$; Если не готов, сбрасываем еще 598 + ; раз и проверяем снова 599 + TST (R1); Проверим на ошибку, 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 - readingnon-volatilememoryofblock1 EEPROMtothebufferfromthe addressADREEPROMMEM609 -; resultR3 -address,ifR3=0error610 -; readstatusinR1 0 - ok611 -; 1 - sizedoesnotmatch saved612 -; 2 - versionerror613 -; 3 - checksum error608 +; trap 54 - чтение энергонезависимой памяти блока 1 EEPROM в буфер с адреса ADREEPROMMEM 609 +; результат R3 - адрес, если R3=0 ошибка 610 +; статус чтения в R1 0 - ok 611 +; 1 - размер не соответствует сохраненному 612 +; 2 - oшибка версии 613 +; 3 - oшибка контрольной суммы 614 614 ReadEEPROM: push R2 615 - call AZreset; reset615 + call AZreset; сбросим 616 616 tst R1 617 617 bne 0ERR$ 618 618 ; теперь читаем 619 619 MOV #AZ$CSR,R1 620 - mov #21,(R1); readblock1ofnon-volatilememoryinto buffer621 -0$: TSTB (R1); checkexecutionresult622 - BPL 0$; wait623 - mov #22,(R1); sendreadblockofnon-volatilememoryfrombuffertobus624 -1$: TSTB (R1); checkexecutionresult625 - BPL 1$; wait626 - TST (R1)+; increment620 + 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)+; инкрементируем 627 627 mov #ADREEPROMMEM,R3 628 - mov #256.,R2; read256.words;firstwordisreadingresult629 -2$: mov (R1),(R3)+; readblockofwordsinto memory628 + mov #256.,R2; читаем 256. слов; первое слово - результат чтения 629 +2$: mov (R1),(R3)+; читаем блок слов в память 630 630 sob R2,2$ 631 - mov #ADREEPROMMEM,R3; successful631 + mov #ADREEPROMMEM,R3; успешно 632 632 mov (R3),R1 633 633 br 0END$ 634 634 0ERR$: CLR R3 ... ... @@ -636,11 +636,12 @@ 636 636 return 637 637 {{/code}} 638 638 639 - obviously,afterreadingthememory,itisnecessarytochecktheresult code in the first word-seethedecodingof error codes639 +очевидно, после считывания памяти необходимо проверить код результата в первом слове - см расшифровку кодов ошибок 640 640 \\Примеры возвращаемых данных по командам 641 641 \\последовательная подача команды 021 и затем 022 позволит считать 256. слов 642 642 из энергонезависимой памяти 643 643 **Внимание! **первое слово это будет статус успешности чтения 644 + 644 644 645 645 * 0 - ok 646 646 * 1 - размер не соответствует сохраненному