out MCUCR, tmp
; enable interrupts
sei
; USART init
rcall USART_Init
// Unmask timer 0 overflov interrupt
ldi tmp, (1<<TOIE0)
out TIMSK, tmp
// Stop timer0
ldi tmp, 0b00000000
out TCCR0, tmp
clr RX_Flag
clr RX_Complete
ldi tmp, 0
out DDRB, tmp
ldi tmp, 0b11111111
out PORTB, tmp
loop:
wdr
cpi RX_Complete, 1
breq c_l0
rjmp l0
c_l0:
// reset RX_Complete
clr RX_Complete
// mask RXCIE
ldi tmp, (1<<TXEN) | (1<<RXEN)
out UCSRB, tmp
// reset RX_Buffer
ldi YL, low(RX_Buffer)
ldi YH, high(RX_Buffer)
ldi tmp3, 0xFF
// do command
mov tmp, command
andi tmp, 0b11100000
lsr tmp
lsr tmp
lsr tmp
lsr tmp
lsr tmp
cpi tmp, 0
brne dc_l0
WAIT_PUSK
ANALYZE_CLK_6
Rjmp dc_end
dc_l0:
cpi tmp, 1
brne dc_l1
WAIT_PUSK
ANALYZE_CLK_8
Rjmp dc_end
dc_l1:
cpi tmp, 2
brne dc_l2
WAIT_PUSK
ANALYZE_CLK_16
Rjmp dc_end
dc_l2:
cpi tmp, 3
brne dc_l3
WAIT_PUSK
ANALYZE_CLK_32
Rjmp dc_end
dc_l3:
cpi tmp, 4
brne dc_l4
WAIT_PUSK
ANALYZE_CLK_64
Rjmp dc_end
dc_l4:
cpi tmp, 5
brne dc_l5
WAIT_PUSK
ANALYZE_CLK_128
Rjmp dc_end
dc_l5:
cpi tmp, 6
brne dc_l6
WAIT_PUSK
ANALYZE_CLK_256
Rjmp dc_end
dc_l6:
cpi tmp, 7
breq cdc_unk
rjmp dc_unk
cdc_unk:
WAIT_PUSK
ANALYZE_CLK_VN
dc_end:
/*
// wait if need befor pusk
WAIT_PUSK
// analyse and store (6 cycles)
// clock time (1/7372800Mhz)*6 = 813,8ns
ANALYZE_CLK_6
*/
// reset RX_Buffer
ldi YL, low(RX_Buffer)
ldi YH, high(RX_Buffer)
// transmitt data
l1:
ld tmp, Y+
USART_TRANSMITT_M
Dec tmp3
brne l1
dec tmp3
l2:
ld tmp, Y+
USART_TRANSMITT_M
Dec tmp3
brne l2
ld tmp, Y+
USART_TRANSMITT_M
dc_unk:
// unmask RXCIE
ldi tmp, (1<<TXEN)|(1<<RXEN)|(1<<RXCIE)
out UCSRB, tmp
l0:
rjmp loop
////////////////////////////////////////////////////
// USART receive complete ISR
USART_RXC:
Push tmp
in tmp, SREG
push tmp
// tmp <- RX
in tmp, UDR
// if (RX_Flag == 1) goto urxc_l0
cpi RX_Flag, 1
breq urxc_l0
// if (RX == AA)
cpi tmp, 0xAA
brne urxc_end
// init timeout
ldi tmp, 0b00000101
out TCCR0, tmp
clr tmp
out TCNT0, tmp
// set recive_flag
ldi RX_Flag, 1
// reset RX_Buffer
ldi YL, low(RX_Buffer)
ldi YH, high(RX_Buffer)
clr RX_Counter
ldi tmp, 0xAA
urxc_l0:
// push RX to buffer
st Y+, tmp
inc RX_Counter
urxc_end:
pop tmp
out SREG, tmp
pop tmp
reti
////////////////////////////////////////////////////
// Timer0 overflow ISR
TIMER0_OVF:
Push tmp
Push tmp1
In tmp, SREG
push tmp
// Stop timer0
ldi tmp, 0b00000000
out TCCR0, tmp
// reset RX_Buffer
ldi YL, low(RX_Buffer)
ldi YH, high(RX_Buffer)
cpi RX_Counter, 3
brne t0ovf_l0
ld tmp, Y+
cpi tmp, 0xAA
brne t0ovf_l0
ld tmp, Y+
cpi tmp, 0x3A
brne t0ovf_l0
ld tmp, Y+
mov command, tmp
ldi RX_Complete, 1
//clear buffer
ldi YL, low(RX_Buffer)
ldi YH, high(RX_Buffer)
clr tmp
st Y+, tmp
st Y+, tmp
st Y+, tmp
st Y+, tmp
st Y+, tmp
t0ovf_l0:
// clear recive_flag
clr RX_Flag
pop tmp
out SREG, tmp
pop tmp1
pop tmp
reti
////////////////////////////////////////////////////
// USART init routine
// uses: tmp, tmp1
USART_Init:
Ldi tmp, (1<<TXEN) | (1<<RXEN) | (1<<RXCIE)
Out UCSRB, tmp
Ldi tmp, (1<<UCSZ0) | 1<<UCSZ1)
Out UCSRC, tmp
Ldi tmp, 0
Ldi tmp1, 23
Out UBRRH, tmp
Out UBRRL, tmp1
Ldi tmp, 0b00000001
Sts UC_REG, tmp
ret
////////////////////////////////////////////////////
// USART transmit routine
// uses: tmp
USART_Transmit:
cli
ut_l0:
wdr
sbis UCSRA, UDRE
rjmp ut_l0
out UDR, tmp
sei
ret
МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ УНІВЕРСИТЕТ
“ХАРКІВСЬКИЙ ПОЛІТЕХНІЧНИЙ ІНСТИТУТ”
Кафедра: “Обчислювальна техніка та програмування”
Завідуючий кафедрою ОТП
__________ /xxxx./
"___" __________ 2009р.
ВІРТУАЛЬНИЙ ВИМІРЮВАЛЬНИЙ КОМПЛЕКС НА БАЗІ УЧБОВОГО ЛАБОРАТОРНОГО СТЕНДУ EV8031
Опис програми
ЛИСТ ЗАТВЕРДЖЕННЯ
xxxxx.03077-01 13 01-1-ЛЗ
РОЗРОБНИКИ Керівник проекту /xxxxxxxxx./ “_____”____________2009р. Виконавець студент групи xxxxx /xxxx./ “_____”_______________2009р. |
Харків 2009
ЗАТВЕРДЖЕНО
xxx.03077-01 13 01-1-ЛЗ
ВІРТУАЛЬНИЙ ВИМІРЮВАЛЬНИЙ КОМПЛЕКС НА БАЗІ УЧБОВОГО ЛАБОРАТОРНОГО СТЕНДУ EV8031
Опис програми
xxxx.03077-01 13 01-1
Листів _8_
Харків 2009
АНОТАЦІЯ
Даний документ містить у собі опис програми, методів та алгоритмів, що використовуються, опис потреб та особливостей функціонування продукту, розробленого у межах дипломного проектування “віртуального вимірювального комплексу”. Система призначена для тестування різноманітних цифрових пристроїв.
ABSTRACT
The given document contains the description of programs, methods and algorithms which were used. It describes the requirements and peculiarities of operation of the product developed within the framework of degree projection of a virtual analyze complex. The program implementation of the methods of analysis of self-descriptiveness and diagnostics.
ЗМІСТ
1. ЗАГАЛЬНІ ВІДОМОСТІ
1.1 Позначення і найменування програми
1.2 Програмне забезпечення, необхідне для функціонування програми
1.3 Обрана мова програмування
2. ФУНКЦІОНАЛЬНЕ ПРИЗНАЧЕННЯ
2.1 Призначення програми
2.2 Функціональні обмеження
3. ОПИС ЛОГІЧНОЇ СТРУКТУРИ ПРОГРАМИ
3.1 Алгоритм програми
4. ВИКОРИСТАНІ ТЕХНІЧНІ ЗАСОБИ
5. ВИКЛИК І ЗАВАНТАЖЕННЯ
5.1 Виклик програми
5.2 Точки входу в програму
5.3 Використання оперативної пам’яті
6. ВХІДНІ ДАНІ ПРОГРАМИ
7. ВИХІДНІ ДАНІ ПРОГРАМИ
Програмний продукт має найменування „Віртуальний вимірювальний пристрій ”. Відповідно головний завантажувальний модуль системи має назву “BBK.exe”(складається с перших букв слів імені продукту), головний модуль також підключає додаткові функціональні модулі, які виконують окремі функції. Це такі модулі:
- Модуль, який предоставляє користувачу вибір необхідних віртуальних пристроїв;
- Модуль, який предоставляє інтерфейс користувача логічного аналізатора;
- Модуль який предоставляє інтерфейс генератора слів.
Для функціонування програми необхідні:
- операційна система Windows2000/XP.
При виборі комп’ютерної техніки доцільно використовувати IBM-сумісні системи через їхнє велике поширення і доступність. На комп’ютерах цієї серії найбільш поширені операційні системи Microsoft Windows NT/2000/XP. Тому реалізація програми була здійсннена для операційних систем Microsoft Windows 2000/XP на IBM-сумісних комп’ютерах.
Існує досить багато сучасних середовищ і мов програмування. При обиранні мови програмування були розглянуті декіка важливих факторів, які повинні як найбільше відповідати висунутим до продукту вимогам.
Вимоги до програмного продукту:
- зручний інтерфейс з користувачем;
- простота використання, не вимагаючи спеціального навчання користувача;
- наочність вихідних даних;
- обробка великих структур даних;
- вимоги до середовища розробки;
- простота програмування;
- великий набір компонентів;
- зручний інтерфейс середовища;
- можливість створення зручного інтерфейсу;
- невисокі вимоги до обладнання;
- простота налагодження програм.
Враховуючи всі вищенаведені вимоги к мовам програмування, було прийнято рішення для створення системи використовувати наступні мови програмування:
- програмне забеспечення ПК – Delphi 7;
- програмне забеспечення МК – AVRStudio;
- Завантаження пошивки до мікроконтроллеру AVReal32.
Програмний продукт призначений для налагодження різноманітних цифрових пристроїв. А також отримання проаналізованих данних тестуємого пристрою(логічний аналізатор), після подачі на нього тестової послідовності(генератор слів).
Програмний продукт відповідає поставленим до нього вимогам і у межах обумовлених ними не має функціональних обмежень.
Розроблене програмне забезпечення функціонує за наступним загальним алгоритмом: cтворюється головне вікно програми на якому розташовані елементи керування. Програма складається з троьох вікон. Перше вікно дозволяє обирати необхідний віртуальний пристрій. Друге і третє вікно – інтерфейс користувача логічного аналізатора та генератора слів. Обидва вікна очікують налаштовувань пристрою, та оброблюють елементи керування. Елемент керування запуском та зупинненням виконує передачу введених налаштовувань, за допомогою інтерфейса користувача, і передає налаштовування і данні за допомогою COM порту у мікроконтроллер. Після цього програма очікує прийом відповіді. Після прийому відповіді переходить у обробку елементів керування.
Для роботи програмного продукту необхідна IBM PC/AT сумісна персональна ЕОМ, наявність процесору Pentium II 433МГц та вище з обсягом оперативної пам’яті 128Мб або більше, наявністю відео адаптеру VGA або SVGA, а також послідовного приємопередавача СОМ порта або RS-232.
Необхідний об’єм на жорсткому диску 5 Мб для продукту.
При розробці використовувалася ПЕОМ з наступними параметрами: Pentium Tualatin, 512 Мб RIMM ОЗП, жорсткий диск ємністю 80 Гб, відеокарта GeForce2 MX 400 32Мб.
Програмне запеспечення ПК інсталляції не потребує, потрібно тільки зробити копію програмного модуля у зручне місце, і завантажувати стандартними засобами операційної системи.
Програмне забеспечення мікроконтроллера потребує наявності встановленого пакету внутрішньосистемного програматору AVReal32. Також на момент програмування цільова ситема повинна бути підєднана спеціальним кабелем – програматором, також цільва система повинна бути підключена до блоку живлення(допускається живлення від USB). Програмування починається запуском спеціально підготовленого *.bat файлу.яки містить командну строку із необхідними налаштовуваннями програмування цілевої системи. Файл який містить завантажувальний код має розширення *.hex.
Точкою входу до будь-якого з модулів програми є запуск головного модуля „ВВК.ехе”, що здійснює створення головного вікна програми, де є можливість обирати подальші дії.