Ime delavnice: Delavnica mikrokrmilnikov PIC in ARM

Izvajalec: prof.dr. Matjaž Vidmar, univ.dipl.inž.el.
Asistent: Aljaž Blatnik, mag.inž.el.
Laborant: Simon Stanič, dipl.inž.fiz.

Vrsta dejavnosti: 6. Raziskave/znanost/projekti, ki niso del obveznih sestavin študijskih programov
Študijski program: Elektrotehnika (MAG), ali ekvivalentni študijski program UL
Stopnja: 2. stopnja UN
Letnik: 1. letnik 2. stopnje ali višje
Semester: Letni semester

Vrsta dejavnosti: Izbirni
Jezik izvajanja dejavnosti: slovenščina

Pogoji za vključitev v delo oz. za opravljanje študijskih obveznosti

Splošna znanja elektrotehnike, ki jih študentje pridobijo tekom prvega letnika študija.
V primeru večjega števila študentov, kot je razpisanih prostih mest za praktični del tečaja, se izvede omejitev vključitve v projekt po kriterijih, ki so objavljeni pred odprtjem vpisa.

Vsebina

Groba razčlenitev vsebine:
Podrobna razčlenitev vsebine:
Teoretični del:
  1. Uvod v mikrokrmilnike: PIC, AVR, ARM, MIPS itd
  2. Zgledi mikrokrmilnikov in zgledi uporabe PIC
  3. Arhitektura mikroprocesorjev von Neumann in Harvard
  4. Vodila, pomnilniki in vmesniki mikrokrmilnikov PIC
  5. Načini pisanja programov za mikrokrmilnike PIC
  6. Struktura pisanja programa v zbirniku, osnovni ukazi
  7. Različni programatorji za FLASH mikrokrmilnikov PIC
  8. Nabor in struktura ukazov mikrokrmilnika PIC
  9. Klicanje podprogramov in delovanje sklada mikrokrmilnikov PIC
  10. Izjemi reset in prekinitev mikrokrmilnikov PIC, povratek iz prekinive
  11. Računske operacije v PIC: ADD, AND, SUB, IOR, XOR, MOVF
  12. Posebnost PIC: rezultat je eden od obeh operandov W ali f
  13. Nepredznačena in predznačena cela števila, seštevanje in odštevanje
  14. Širina seštevanja, 8bit+8bit=9bit, prenos Carry bit (štejem dalje)
  15. Zgled: 16-bitno seštevanje z 8-bitnim procesorjem, uporaba prenosa
  16. Celoštevilsko odštevanje, problem izposoje, logika bita Borrow
  17. Izvedba logičnih operacij AND, IOR, XOR v registru CPU
  18. Zgled: IPv4 naslov, domena in maska, ugotavljanje zunaj/znotraj domene
  19. Organizacija pomnilnika PIC: vmesniki, RAM, banke, skupni registri
  20. Notranje vezje I/O portov PIC, registri PORT, TRIS in ANSEL
  21. Zgled: preprost program za dvojiški števec z LEDikami na PORTB
  22. Konfuguracija PIC (fuse bits): nastavitve v pekaču oziroma v programu
  23. Notanje možnosti PIC 16F88: notranji RESET in notranja ura
  24. Dodatna zanka za upočasnitev programa PIC, praktična uporaba programatorja
  25. Delovanje A/D pretovrnika s sukcesivno aproksimacijo
  26. Sample-and-hold oziroma track-and-hold v PIC, izbira vhoda
  27. Registri A/D pretvornika v PIC in njihova inicializacija
  28. Preprost program za uporabo A/D pretvornika: vzorčenje, zagon pretvorbe, čakanje na konec pretvorbe in prikaz rezultata
  29. Praktično programiranje A/D pretvornika v PIC
  30. Lastnosti jedra ARM, primerjava s CORTEX, PIC, AVR, MIPS
  31. Različni nabori ukazov ARM, registri ARM in različna jedra ARM
  32. Nabor ukazov ARM4 in lastnosti jedra ARM7TDMI z zgodovino, dokumenti
  33. Struktura ukazov jedra ARM, pipeline in pogojno izvajanje vseh ukazov
  34. Računski ukazi jedra ARM: aritmetika, logika, množenje, ARM shifter operand
  35. Zakaj programiranje v zbirniku ARM namesto Crash++?
  36. Dostop do pomnilnika jedra ARM, ukazi LDR in STR različnih oblik
  37. Delo s skladi, preinkrementiranje in postinkrementiranje kazalcev
  38. Klicanje podprogramov v jedru ARM, uporaba link registra
  39. Izjeme jedra ARM, napake in prekinitve, tabela izjem na začetku
  40. Zbirnik ARM, način zapisa ukazov, glava, rep in komentarji
  41. Psevdo ukazi zbirnika ARM: LDR=, LTORG, ALIGN, SPACE, DCD...
  42. Vsebina mikrokrmilnika LPC2138, procesor, pomnilnik, periferija
  43. Praktični zgled programa v zbirniku ARM, uporaba label, LTORG, ALIGN
  44. Notranja zgradba mikrokrmilnika LPC2138, razdelitev pomnilnika
  45. Dostop do pomnilnika FLASH v mikrokrmilnikih ARM
  46. Delovanje cevovoda MAM v mikrokmilnikih LPC, 128+EDAC, uporaba ALIGN 16
  47. Izogibanje zankam v zbirniku, uporaba makrojev
  48. PLL za množenje ure v LPC2138 in njegova uporaba
  49. Razvod ure znotraj mikrokrmilnika LPC2138
  50. RESET mikrokrmilnika ARM, zagon BOOTLOADER, programiranje FLASH in zaščita vsebine
  51. Prevajanje z zbirnikom ARM: uporaba ARMASM, ARMLINK in FROMELF
  52. Posebnosti zbirnika GNU, uporaba AS, LD in OBJCOPY
  53. Vpis pomnilnika FLASH s programom FlashMagic
  54. Gonilniki FTDI in terminalski program s preizkusom
  55. Alternativni programi za vpis pomnilnika FLASH
  56. Praktični zgled programiranja, prevajanja in pečenja FLASH LPC2138
  57. Krmiljenje LCD prikazovalnika s krmilnikom HD44780
  58. A/D in D/A pretvorniki v mikrokrmilniku LPC2138
  59. Proženje A/D pretovrnika v burst mode v LPC2138
  60. Proženje prekinitev IRQ in FIQ v mikrokrmilniku LPC2138, nastavitev VIC in PSR
  61. Praktično programiranje A/D in D/A, izračun vzorčevalne frekvence
  62. Prevrenjanje delovanja A/D in D/A s funkcijskim generatorjem in osciloskopom
  63. Preprosto nizkoprepustno IIR sito, analogija RC členu LPF, izračun Tau=RC
  64. Izvedba RC LPF na mikrokrmilniku ARM, uporaba LSR za deljenje, popravek velikosti rezultata
  65. Zaporedna vezava dveh IIR LPF, primerjava prevajalne funkcije
  66. Izvedba visokoprepustnega IIR sita, analogija RC členu HPF
  67. Vprašanje predznačenega rezultata, nastavitev delovne točke DAC
  68. Zaporedna vezava dveh visokoprepustnih IIR sit
  69. Izvedba polnovalnega usmernika v DSP, obračanje predznaka
  70. Glajenje izhoda polnovalnega usmernika z dodatnim IIR nizkoprepustnim sitom
  71. Izvedba LC nihajnega kroga v DSP, izračun rezonančne frekvence
  72. Nastavitev kvalitete DPS rezonatorja
  73. Praktična izvedba DSP nihajnega kroga z dvema spremenljivkama in ukazi MUL
  74. Preverjanje odziva DSP pasovnega sita z nihajnim krogom
Praktični del:
  1. Sestavljanje preprostega mikrokrmilnika
  2. Popravljanje napak pri spajkanju.
  3. Zamenjava napačno vgrajenih in poškodovanih gradnikov.