Практична №2
Тема: Дизайн систем.
Мета: Навчитися використовувати надбані знання для дизайну систем
та поглибити навички роботи з мікроконтроллерами.
Вступ.
Для побудови системи або для створення пристрою недостатньо лише аналізу мети та аналізу його функцій. Основне, що необхідно зробити – це сформулювати ідею, на основі якої він буде функціонувати. Для генерування ідей використовується спеціальна технологія “мозкового штурму”, в результаті якої спеціалісти з різних галузей висувають ідеї (можливо навіть фантастичні) щодо розв’язання певної проблеми або стосовно побудови та функціонування тої чи іншої системи або пристрою. Під час мозкового штурму учасники повинні максимально використовувати та розвивати ідеї співбесідників. Після закінчення висунення ідей в списку залишають лише найбільш перспективні і розвинуті ідеї, і подальшу увагу зосереджують лише на них.
Для того, щоб сконцентрувати зусилля учасників мозкового штурму, їм необхідно дати напрямок, а також показати певні приклади, які мають аналогію з пристроєм, що розробляється. Наприклад, необхідно проаналізувати, які можна розробити мікроконтроллерні пристрої, що використовують механічні коливання. У зв’язку з даним напрямком у учасників виникають асоціації, які пов’язані з раніше отриманими знаннями що можуть механічні коливання:
руйнувати; перемішувати; відокремлювати; синхронізувати; допомагати; вступати в резонанс; розповсюджуватись; передавати інформацію; передавати енергію; надавати форму; циклічно змінювати; перетворювати.
Після цього до кожної переліченої властивості необхідно додати іншу властивість, ознаку, дію, або об’єкт. При цьому не треба боятися парадоксальності отриманої комбінації, а необхідно її лише ретельно їх проаналізувати. Безглузді та шкідливі комбінації відкидаються, а решта залишаються. Наприклад:
руйнувати молекули, сполуки; руйнувати бактерії, віруси; руйнувати пухлини;...
перемішувати землю; перемішувати пральну суміш; перемішувати їжу;...
відокремлювати сміття; відокремлювати великі і малі, тверді та м’які;...
синхронізувати роботу; синхронізувати напрямок; синхронізувати однотипні;...
допомагати просувати; допомагати фіксувати; допомагати обробляти;...
вступати в резонанс для розпізнавання, підсилення; вступати в резонанс по черзі;...
розповсюджуватись як хвиля, як сигнал; розповсюджуватись з різним часом;...
передавати інформацію про об’єкт, дзвінок, про небезпеку, про форму;...
передавати енергію на відстань; передавати енергію у майбутнє, в іншу систему;...
надавати форму, різати, малювати, трамбувати, штампувати, видовжувати;...
циклічно змінювати, пиляти, качати, довбати, рівняти; циклічно масажувати;...
перетворювати вібрацію на рух, штовхати, плисти, повсти, підкидати, стрибати ...
Після цього необхідно вибрати, що для вас є найбільш важливим, і продукувати ідеї у вибраному напрямку. Припустимо, що ви вибрали напрямок “передавати інформацію про відстань до об’єкта”. Для цього можна використовувати неповторні кодові послідовності, якими можна вимірювати відстань, наприклад:
0000001010110100110011111100010010111101010000110111001000111011000000
Одиничку і нуль можна кодувати різними частотами, або використовувати манчестерське кодування зі зміною фази на (. Легко перевірити, що, всі фрагменти довжиною шість біт в даній послідовності між собою відрізняються. Нижче наведено їх десяткове представлення:
0,1,2,5,10,21,43,22,45,26,52,41,19,38,12,25,51,39,15,31,63,62,60,56,49,34,4,9,18,37,11,23,4,30,61,58,53,42,20,40,16,33,3,6,13,27,55,46,28,57,50,36,8,17,35,7,14,29,59,54,44,24,48,32
Для генерації коливань можна використовувати мікроконтроллер. В мікроконтроллерах ST7FLITE29 є вбудований 12-бітний таймер (CNTR1 – комірки $0E,$0F), який постійно працює на збільшення. Його можна використовувати для широтно-імпульсної модуляції (ШИМ). При переповненні в цей таймер завантажується початкове значення (ATR1) з комірок $10,$11 (див. Файл Metod_ST7). Для генерації імпульсів керованої ширини в мікроконтроллер введені комірки DCR0–DCR3 за адресами $17–$1E, які дозволяють керувати шириною імпульсів на ніжках PA2–PA5.
Керування шириною імпульсів відбувається завдяки порівнянню лічильника CNTR1 з кожним значенням DCRx. Наприклад, якщо CNTR1<DCR1, то на ніжці PA3 буде “1”, інакше – “0”. Для вибору ніжок, які працюють з ШИМ використовується комірка $12, а для дозволу зміни ширини імпульсів використовується комірка $21 (див. Файл Metod_ST7).
Для того, щоб включити ШИМ необхідно:
Включити ніжку PA2–PA5 в режим звичайного логічного виходу;
Встановити джерело таймеру від тактової частоти;
Встановити інтервал роботи таймера через ATR1;
Вибрати ніжку PA2–PA5 для виводу широтно-модульованих імпульсів;
Завантажити значення модуляції;
Дати дозвіл на зміну модуляції.
main:
RSP
clr $81 ; sin
ld A,#31
ld $82,A ; cos
;--------------------------------
LD A,#%00001000 ; завантажити маску: PA3 – на вивід
LD $1,A ; напрямок виводу ніжок
LD $2,A ; звичайний логічний вихід

LD A,#%00010000 ; завантажити маску джерела таймеру
LD $0D,A ; джерело таймеру CNTR1 від так тової частоти
LD A,#%00001111
LD $10,A ; ATR1 high
LD $19,A ; DCR1 high
LD A,#%11000000
LD $11,A ; ATR1 low (0..63)
LD A,#%00000100 ; завантажити маску вибору ШИМ на PA3
LD $12,A ; вибір ШИМ
M1:
bset $2e,#6 ; watchdog reset (скинути сторожовий таймер)
ld A,$81 ; sin
sra A
sra A
sra A
sra A
sub A,$82 ; cos = cos - sin*dt
neg A
ld $82,A ; cos
sra A
sra A
sra A
sra A
add A,$81 ;sin =sin + cos*dt
ld $81,A
;----------------
LD A,$81
add A,#64 ; MAX
or A,#%11000000
LD $1A,A ; записати в комірку ширини імпульсів
;----------------
LD A,#1 ; завантажити маску дозволу зміни ширини
LD $21,A ; дати дозвіл на зміну ширини імпульсу
;---------------
ld A,$80 ; змінна пауза
swap A
and A,#$0f
inc A
M2:
dec A
jrne M2
inc $80 ; змінна пауза
;-------------
jp M1