DevioLab CRYPTO TRADING AUTOMATION
LIVE
AUTOMATED CRYPTO TRADING • BINANCE
Автоматизуйте свій криптопортфель
Торгові боти DevioLab аналізують крипторинок, автоматично відкривають і закривають позиції та керують вашим портфелем на Binance 24/7.
CRYPTO 80 Bots
BINANCE Spot Trading
TRADING 24 / 7
Спробувати DevioLab
deviolab.com

Лабораторна робота №2

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Кафедра ЕОМ

Інформація про роботу

Рік:
2013
Тип роботи:
Лабораторна робота
Предмет:
Інші
Група:
СКС

Частина тексту файла (без зображень, графіків і формул):

Міністерство освіти і науки України Національний університет „Львівська політехніка” Кафедра ЕОМ Лабораторна робота №2 „Використання модуля UART для зв’язку з комп'ютером” Мета роботи Ознайомитись з модулем UART. Теоретичні відомості. Особливості і Короткий Огляд • Асинхронний одержувач і відправник • Формат даних сумісний з послідовним форматом даних RS-232. • Норма передачі до 6 Mbits/second • Пакет даних складається з старту, перевірки парності, і бітів зупинки • Масковане переривання при отриманні регістр переповнений і/або буфер передачі порожній • Парність, вихід за межі, і виявлення помилки в пакетах. • Функції передачі і прийому на високому рівні. Модуль UART - це 8-розрядний універсальний асинхронний приймач передавач який підтримує дуплексний режим сумісний з RS-232, і послідовну передачу даних по двох і більше лініях.Підтримується програмоване тактування і масковані переривання.Функції API дозволяють ініціалізувати, конфігурувати і працювати з модулем UART. Додатковий високорівневий API підтримує роботу з рядками  Функціональний Опис Модуль UART включає послідовні приймач і передавач.В PSoC UART розділений на два блоки, які реалізують TX і RX, в Редакторі Пристрою PSoC. Блок TX PSoC забезпечує функціональність передавача і блок RX PSoC забезпечує функціональність приймача.RX і TX діять незалежно. Кожний має свій власний регістр статусу, контроль, програмоване переривання, в/в, буферний регістр, і регістр зсуву. Вони розділяють сигнал дозволу, тактування, і формат даних. Установка біту дозволу в регістрах контролю RX і TX включає UART. Дозвіл і блокування виконується, використовуючи функції API. Сигнал тактування в модулі UART є спільним для RX і TX. Частота тактування Має бути у вісім разів більша частоти передачі розряду даних.Частота конфігурується використовуючи Редактора Пристрою Конструктора PSoC. Дані отримані і передані є потік бітів який складається з стартового біта, вісім розрядів даних, контроль парності, і бітів зупинки.. Як RX так і TX є набором до тієї ж конфігурації паритету. Текст програми. include "m8c.inc" include "memory.inc" include "UART_2.inc" export UART_2_SetTxIntMode export _UART_2_SetTxIntMode export UART_2_EnableInt export _UART_2_EnableInt export UART_2_DisableInt export _UART_2_DisableInt export UART_2_Start export _UART_2_Start export UART_2_Stop export _UART_2_Stop export UART_2_SendData export _UART_2_SendData export UART_2_bReadTxStatus export _UART_2_bReadTxStatus export UART_2_bReadRxData export _UART_2_bReadRxData export UART_2_bReadRxStatus export _UART_2_bReadRxStatus export UART_2_IntCntl export _UART_2_IntCntl export UART_2_TxIntMode export _UART_2_TxIntMode export UART_2_PutSHexByte export _UART_2_PutSHexByte export UART_2_PutSHexInt export _UART_2_PutSHexInt export UART_2_CPutString export _UART_2_CPutString export UART_2_PutString export _UART_2_PutString export UART_2_PutChar export _UART_2_PutChar export UART_2_Write export _UART_2_Write export UART_2_CWrite export _UART_2_CWrite export UART_2_cGetChar export _UART_2_cGetChar export UART_2_cReadChar export _UART_2_cReadChar export UART_2_iReadChar export _UART_2_iReadChar export UART_2_PutCRLF export _UART_2_PutCRLF IF (UART_2_RXBUF_ENABLE) export UART_2_CmdReset export _UART_2_CmdReset export UART_2_bCmdCheck export _UART_2_bCmdCheck export UART_2_bCmdLength export _UART_2_bCmdLength export UART_2_bErrCheck export _UART_2_bErrCheck export UART_2_szGetParam export _UART_2_szGetParam export UART_2_szGetRestOfParams export _UART_2_szGetRestOfParams ENDIF ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; WARNING WARNING WARNING ; The following exports are for backwards compatibility only and should ; not be used for new designs. They may be eliminated in a future release. ; Their status is "NO FURTHER MAINTENANCE". ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; export bUART_2_ReadTxStatus export _bUART_2_ReadTxStatus export bUART_2_ReadRxData export _bUART_2_ReadRxData export bUART_2_ReadRxStatus export _bUART_2_ReadRxStatus ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; END WARNING ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;----------------------------------------------- ; Variable Allocation ;----------------------------------------------- IF (UART_2_RXBUF_ENABLE) area UART_2_RAM (RAM, REL, CON) ptrParam: BLK 1 ENDIF area text (ROM,REL) ;----------------------------------------------- ; EQUATES ;----------------------------------------------- bfCONTROL_REG_START_BIT: equ 1 ; Control register start bit bfFUNCTION_REG_TX_INT_MODE_BIT: equ 0x10 ; the TX Int Mode bit area UserModules (ROM, REL, CON) ; UART_2_EnableInt: _UART_2_EnableInt: RAM_PROLOGUE RAM_USE_CLASS_1 M8C_EnableIntMask UART_2_TX_INT_REG, UART_2_TX_INT_MASK M8C_EnableIntMask UART_2_RX_INT_REG, UART_2_RX_INT_MASK RAM_EPILOGUE RAM_USE_CLASS_1 ret .ENDSECTION include "UART_2.inc" include "memory.inc" include "m8c.inc" ;----------------------------------------------- ; Global Symbols ;----------------------------------------------- export _UART_2_TX_ISR export _UART_2_RX_ISR IF (UART_2_RXBUF_ENABLE) export UART_2_aRxBuffer export _UART_2_aRxBuffer export UART_2_bRxCnt export _UART_2_bRxCnt export UART_2_fStatus export _UART_2_fStatus ENDIF ;----------------------------------------------- ; Variable Allocation ;----------------------------------------------- AREA InterruptRAM (RAM, REL, CON) IF (UART_2_RXBUF_ENABLE) UART_2_fStatus: _UART_2_fStatus: BLK 1 UART_2_bRxCnt: _UART_2_bRxCnt: BLK 1 AREA UART_2_RAM (RAM, REL, CON) UART_2_aRxBuffer: _UART_2_aRxBuffer: BLK UART_2_RX_BUFFER_SIZE ENDIF AREA InterruptRAM (RAM, REL, CON) ;@PSoC_UserCode_INIT@ (Do not change this line.) ;--------------------------------------------------- ; Insert your custom declarations below this banner ;--------------------------------------------------- ;------------------------ ; Includes ;------------------------ ;------------------------ ; Constant Definitions ;------------------------ ;------------------------ ; Variable Allocation ;------------------------ ;--------------------------------------------------- ; Insert your custom declarations above this banner ;--------------------------------------------------- ;@PSoC_UserCode_END@ (Do not change this line.) AREA UserModules (ROM, REL, CON) ;----------------------------------------------------------------------------- ; FUNCTION NAME: _UART_2_TX_ISR ; ; DESCRIPTION: ; UART TX interrupt handler for instance UART_2. ; ; This is a place holder function. If the user requires use of an interrupt ; handler for this function, then place code where specified. ;----------------------------------------------------------------------------- _UART_2_TX_ISR: ;@PSoC_UserCode_BODY_1@ (Do not change this line.) ;--------------------------------------------------- ; Insert your custom code below this banner ;--------------------------------------------------- ; NOTE: interrupt service routines must preserve ; the values of the A and X CPU registers. ;--------------------------------------------------- ; Insert your custom code above this banner ;--------------------------------------------------- ;@PSoC_UserCode_END@ (Do not change this line.) reti ;----------------------------------------------------------------------------- ; FUNCTION NAME: _UART_2_RX_ISR ; ; DESCRIPTION: ; UART RX interrupt handler for instance UART_2. ; This ISR handles the background processing of received characters if ; the buffer is enabled. ; ; ; The following assumes that the RX buffer feature has been enabled. ; ; SIDE EFFECTS: ; There are 3 posible errors that may occur with the serial port. ; 1) Parity Error ; 2) Framing Error ; 3) OverRun Error ; ; This user module check for parity and framing error. If either of these ; two errors are detected, the data is read and ignored. When an overRun ; error occurs, the last byte was lost, but the current byte is valid. For ; this reason this error is ignored at this time. Code could be added to ; this ISR to set a flag if an error condition occurs. ; ; THEORY of OPERATION: ; When using the RX buffer feature, the ISR collects received characters ; in a buffer until the user defined command terminator is detected. After ; the command terminator is detected, the command bit is set and all other ; characters will be ignored until the command bit is reset. Up to ; buffer_size - 1 characters will be collected waiting for a command ; terminator. After that, the characters will be discarded, although ; a command determinator will still cause the command bit to be set. ; ;----------------------------------------------------------------------------- _UART_2_RX_ISR: ;@PSoC_UserCode_BODY_2@ (Do not change this line.) ;--------------------------------------------------- ; Insert your custom code below this banner ;--------------------------------------------------- ; NOTE: interrupt service routines must preserve ; the values of the A and X CPU registers. ;--------------------------------------------------- ; Insert your custom code above this banner ;--------------------------------------------------- ;@PSoC_UserCode_END@ (Do not change this line.) IF (UART_2_RXBUF_ENABLE) push A push X IF SYSTEM_LARGE_MEMORY_MODEL REG_PRESERVE IDX_PP ENDIF mov X,[UART_2_bRxCnt] ; Load X with byte counter mov A,REG[UART_2_RX_CONTROL_REG] ; Read the control register push A ; Store copy for later test ; IF real RX interrupt and A,UART_2_RX_REG_FULL ; Did really really get an IRQ jnz .UARTRX_ReadRx ; Data ready, go get it pop A ; Restore stack jmp .RESTORE_IDX_PP .UARTRX_ReadRx: pop A ; Restore status flags ; IF there is no error, get data ; Check for parity or framing error and A,UART_2_RX_ERROR jz .UARTRX_NO_ERROR ; If there is not an Error go read data or [UART_2_fStatus],A ; Set error flags (parity,framing,overrun) bits mov A,REG[UART_2_RX_BUFFER_REG ] ; Read the data buffer to clear it. and A,UART_2_RX_FRAMING_ERROR ; Check for framing error special case jz .RESTORE_IDX_PP ; Not framing error, all done ; Disable and re-enable RX to reset after ; framing error. and REG[UART_2_RX_CONTROL_REG], ~UART_2_RX_ENABLE ; Disable RX or REG[UART_2_RX_CONTROL_REG], UART_2_RX_ENABLE ; Enable RX jmp .RESTORE_IDX_PP ; Done with framing error, leave. .UARTRX_NO_ERROR: mov A,REG[UART_2_RX_BUFFER_REG ] ; Read the data buffer ; IF buffer not full tst [UART_2_fStatus],UART_2_RX_BUF_CMDTERM ; Check for buffer full jnz .RESTORE_IDX_PP ; All done cmp A,UART_2_CMD_TERM ; Check for End of command jnz .UARTRX_CHK_CTLCHAR or [UART_2_fStatus],UART_2_RX_BUF_CMDTERM ; Set command ready bit RAM_SETPAGE_IDX >UART_2_aRxBuffer RAM_CHANGE_PAGE_MODE FLAG_PGMODE_10b mov [X + UART_2_aRxBuffer],00h ; Zero out last data RAM_CHANGE_PAGE_MODE FLAG_PGMODE_00b jmp .RESTORE_IDX_PP .UARTRX_CHK_CTLCHAR: ; Ignore charaters below this value ; If ignore char is set to 0x00, do not ; ignore any characters. IF(UART_2_RX_IGNORE_BELOW) cmp A,UART_2_RX_IGNORE_BELOW jc .RESTORE_IDX_PP ENDIF .UARTRX_CHK_OVFL: ; Check for MAX String here RAM_SETPAGE_IDX >UART_2_aRxBuffer ; using idexed address mode cmp [UART_2_bRxCnt],(UART_2_RX_BUFFER_SIZE - 1) jc .UARTRX_ISR_GETDATA RAM_CHANGE_PAGE_MODE FLAG_PGMODE_10b mov [X + UART_2_aRxBuffer],00h ; Zero out last data in the buffer RAM_CHANGE_PAGE_MODE FLAG_PGMODE_00b or [UART_2_fStatus],UART_2_RX_BUF_OVERRUN ; Set error flags (parity,framing,overrun) bits jmp .RESTORE_IDX_PP .UARTRX_ISR_GETDATA: ; IF input data == "CR", then end of command ; X is already loaded with pointer RAM_CHANGE_PAGE_MODE FLAG_PGMODE_10b mov [X+UART_2_aRxBuffer],A ; store data in array RAM_CHANGE_PAGE_MODE FLAG_PGMODE_00b inc X ; Inc the pointer mov [UART_2_bRxCnt],X ; Restore the pointer ; ENDIF max string size .RESTORE_IDX_PP: IF SYSTEM_LARGE_MEMORY_MODEL REG_RESTORE IDX_PP ENDIF .END_UARTRX_ISR: pop X pop A ENDIF UART_2_RX_ISR_END: reti Висновок Під час лабораторної роботи я дрслідив роботу модуля UART
Антиботан аватар за замовчуванням

31.03.2013 14:51

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!