www.elektronik.si Seznam forumov www.elektronik.si
Forum o elektrotehniki in računalništvu
 
 PomočPomoč  IščiIšči  Seznam članovSeznam članov  SkupineSkupine  StatisticsStatistika  AlbumAlbum  DatotekeFilemanager DokumentacijaDocDB LinksPovezave   Registriraj seRegistriraj se 
  PravilaPravila  LinksBolha  PriponkePriponke  KoledarKoledar  ZapiskiZapiski Tvoj profilTvoj profil Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil PrijavaPrijava 

8-pinski ARM in (simuliran) 16 segmentni prikazovalnik
Pojdi na stran Prejšnja  1, 2, 3  Naslednja
 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> ARM arhitektura
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
mosqito
Član
Član



Pridružen-a: Čet 07 Apr 2016 23:22
Prispevkov: 3531
Aktiv.: 31.54

PrispevekObjavljeno: Ned Avg 14, 2022 10:00 pm    Naslov sporočila:   Odgovori s citatom

V urejevalniku se pojavi datoteka main.c, ki je seveda prazna.

Za začetek napišemo eno minimalno kodo. Lepo je, da ne pozabmo na ustrezen komentar.

Koda:

/**
  * @file    main.c
  * @author  Clan foruma elektronik.si
  * @brief   Moja prva vaja na mikrokontrolerju STM32
  *
   */

int main(void) {
   
   int i=0;
   
   while (1) {
      i++;
   }
}


Pritisnemo "F7" za build in po nekaj trenutkih je naš prvi program preveden. Spodaj v statusnem oknu se izpiše:

Citiram:
Build started: Project: forumvaja1
*** Using Compiler 'V5.06 update 6 (build 750)', folder: 'C:\Keil_v5\ARM\ARMCC\Bin'
Build target 'Target 1'
assembling startup_stm32g031xx.s...
compiling main.c...
compiling system_stm32g0xx.c...
linking...
Program Size: Code=308 RO-data=208 RW-data=0 ZI-data=1632
".\Objects\forumvaja1.axf" - 0 Error(s), 0 Warning(s).
Build Time Elapsed: 00:00:01



prvibuild.jpg
 Opis:
 Velikost datoteke:  72.62 KB
 Pogledana:  4 krat

prvibuild.jpg



_________________
Always going the extra mile.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
mosqito
Član
Član



Pridružen-a: Čet 07 Apr 2016 23:22
Prispevkov: 3531
Aktiv.: 31.54

PrispevekObjavljeno: Ned Avg 14, 2022 10:07 pm    Naslov sporočila:   Odgovori s citatom

Sedaj je pa čas, da si izdelamo modul po shemi iz prve objave in ga priklopimo na ST-link. V tehnologijo izdelave in spajkanja se ne bom vtikal. Bo pa ta modul v kratkem tudi na zalogi v obliki kit kompleta.

V glavnem, ko smo si izdelali tiskanino (priloga je za toner-transfer), predlagam, da gre na tiskanino najprej regulator, sledi preverjanje napajalne napetosti (3,3V), potem pa naspajkamo še vse ostalo.

Tiskanina ima tudi eno prevezavo (TX-Out), ki jo naredimo z žičko.



IMG_20220814_220629.jpg
 Opis:
 Velikost datoteke:  2.05 MB
 Pogledana:  9 krat

IMG_20220814_220629.jpg



fauxNixieTT.pdf
 Opis:

Download
 Ime datoteke:  fauxNixieTT.pdf
 Velikost datoteke:  21.15 KB
 Downloadano:  2 krat


_________________
Always going the extra mile.


Nazadnje urejal/a mosqito Ned Avg 14, 2022 10:15 pm; skupaj popravljeno 1 krat
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
mosqito
Član
Član



Pridružen-a: Čet 07 Apr 2016 23:22
Prispevkov: 3531
Aktiv.: 31.54

PrispevekObjavljeno: Ned Avg 14, 2022 10:14 pm    Naslov sporočila:   Odgovori s citatom

Razpored priključkov za ST-link je viden spodaj (4 blazinice). Za to prvo vajo ne rabimo ničesar drugega, kot 4 žice (SWCLK, SWDIO, GND in +3V3) direktno povezane na ST-link.

Prilagam še KiCad projekt.



pcb.jpg
 Opis:
 Velikost datoteke:  160.11 KB
 Pogledana:  5 krat

pcb.jpg



FauxNIXIE-Display.zip
 Opis:

Download
 Ime datoteke:  FauxNIXIE-Display.zip
 Velikost datoteke:  99.43 KB
 Downloadano:  1 krat


_________________
Always going the extra mile.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
mosqito
Član
Član



Pridružen-a: Čet 07 Apr 2016 23:22
Prispevkov: 3531
Aktiv.: 31.54

PrispevekObjavljeno: Ned Avg 14, 2022 10:20 pm    Naslov sporočila:   Odgovori s citatom

Če je vse skupaj prav priključeno in ima ustrezno napajanje, lahko preverimo, ali je tudi SWD prav priključen.

V uVision IDE kliknemo na "čarobno palico", oz. Options for target.

V zavihku "Debug" izberemo pri izbiri "Use"... ST-Link debugger in kliknemo na "Settings".



optionsfortarget.jpg
 Opis:
 Velikost datoteke:  95.07 KB
 Pogledana:  3 krat

optionsfortarget.jpg



_________________
Always going the extra mile.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
mosqito
Član
Član



Pridružen-a: Čet 07 Apr 2016 23:22
Prispevkov: 3531
Aktiv.: 31.54

PrispevekObjavljeno: Ned Avg 14, 2022 10:24 pm    Naslov sporočila:   Odgovori s citatom

Pojavi se novo okno, v katerem se na levi izpišejo podatki o ST-link vmesniku, na desni pa podatki o mikrokontrolerju. Če kaj od tega manjka, pomeni, da je napaka pri sestavljanju in povezovanju vezja in ST-linka. Preveriti je treba napajanje, razpored povezav in morda kakšne napakae pri spajkanju.

Kliknemo OK in se vrnemo v osnovni urejevalnik.

Če je vse OK, se izpiše takole (serijska številka bo seveda druga).



swdevice.jpg
 Opis:
 Velikost datoteke:  82.9 KB
 Pogledana:  2 krat

swdevice.jpg



_________________
Always going the extra mile.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
mosqito
Član
Član



Pridružen-a: Čet 07 Apr 2016 23:22
Prispevkov: 3531
Aktiv.: 31.54

PrispevekObjavljeno: Ned Avg 14, 2022 10:35 pm    Naslov sporočila:   Odgovori s citatom

Sedaj lahko pritisnemo "F8" ali pa ikono "Load" z dvema puščicama navzdol. S tem sprogramiramo interni flash mikrokontrolerja. V statusnem oknu se izpiše

Citiram:
Load "D:\\!moje\\Projekti\\e.pavlin.si - FauxNIXIE\\SW\\za_forum\\sw\\Objects\\forumvaja1.axf"
Erase Done.
Programming Done.
Verify OK.
Flash Load finished at 22:24:44


Zdaj lahko preverimo, ali naš "program" res deluje. Za to seveda uporabimo debugger. Za razliko od arduino okolja tu ne potrebujemo nikakršnega izpisa na konzolo in podobnega, kar dodatno jemlje prostor v kodi in upočasnjuje delovanje. Za pričetek debugiranja kliknemo na ikonco s povečvalom ali pa pritisnemo Ctrl-F5. Izgled urejevalnika se spremeni in pojavijo se dodatna okna.

Na levi strani je status, ki prikazuje trenutno stanje registrov mikrokontrolerja in način izvajanja. Več o samem delovanju ARM cortex M0 je na voljo v knjižnici v osnovnem oknu urejevalnika na levi strani, kjer je okno Project. Spodaj kliknemo na zavihek "Books".

Sedaj pa se vrnimo na debugiranje: levo so torej eistri, desno je izvorna C koda, zgoraj pa (če nismo že kdaj prej zaprli tega pogleda) še disassemblerska koda, ki se izvaja in ustreza trenutni vrstici v C kodi.



debug.jpg
 Opis:
 Velikost datoteke:  200.24 KB
 Pogledana:  3 krat

debug.jpg



books.jpg
 Opis:
 Velikost datoteke:  104.77 KB
 Pogledana:  1 krat

books.jpg



_________________
Always going the extra mile.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
mosqito
Član
Član



Pridružen-a: Čet 07 Apr 2016 23:22
Prispevkov: 3531
Aktiv.: 31.54

PrispevekObjavljeno: Ned Avg 14, 2022 10:43 pm    Naslov sporočila:   Odgovori s citatom

Preprost primer debugiranja:

V datoteki main.c lahko postavimo break point (tu se bo izvajanje končalo). V sivi coni pred vrstico kliknemo, da se pojavi rdeč krogec. To predstavlja breakpoint. Sedaj pritisnemo na F5 ali kliknemo na ikono RUN (druga z leve v paleti zgoraj). Program se zažene in ustavi na vrstici z breakpointom. Spodaj vidimo trenutno vrednost spremenljivke "i". Program ponovno zaženemo in vsakič, ko se ustavi na breakpointu preverimo vrednost spremenljivke. Ta se povečuje za 1, kar je tudi prav.

Na levi strani lahko opazujemo vrednost registrov. Vidimo, da je prevajalnik za našo spremenljivko "i" uporabil register R0. Ker koda ne dela nič pametnega, je tudi disassembler koda sila enostavna (prištevanje registru R0 sprotno vrednost #1 in v naslednjem koraku skok nazaj na to vrstico):
Koda:
0x080001F0 1C40      ADDS     r0,r0,#1
0x080001F2 E7FD      B        0x080001F0



breakpoint.jpg
 Opis:
 Velikost datoteke:  33.64 KB
 Pogledana:  5 krat

breakpoint.jpg



_________________
Always going the extra mile.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
mosqito
Član
Član



Pridružen-a: Čet 07 Apr 2016 23:22
Prispevkov: 3531
Aktiv.: 31.54

PrispevekObjavljeno: Ned Avg 14, 2022 10:53 pm    Naslov sporočila:   Odgovori s citatom

Toliko za prvo vajo. Sledi priprava in uporaba HAL knjižnice, inicializacija periferije, nastavljanje internega takta in konfiguracija HAL knjižnic.


Če je komu tak način "tečaja" všeč, naj mi prosim napiše. Če sem naredil kakšno napako, me opozorite, da popravim.

Predlagam pa tudi, da bi tole ponovili enkrat v živo. Interesenti se javite v tej temi:
https://www.elektronik.si/phpBB2/viewtopic.php?p=569834#569834

_________________
Always going the extra mile.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Wrecker
Član
Član



Pridružen-a: Pet 11 Feb 2011 22:43
Prispevkov: 254
Aktiv.: 1.45

PrispevekObjavljeno: Tor Avg 16, 2022 7:57 am    Naslov sporočila:   Odgovori s citatom

Res si se s tem fajn potrudil. Bravo. S tem vsak lahko začne od nule.
Jest komaj čakam, da zadeva steče in da boš razkril še kakšne bolj specialne trike in detajle.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
mosqito
Član
Član



Pridružen-a: Čet 07 Apr 2016 23:22
Prispevkov: 3531
Aktiv.: 31.54

PrispevekObjavljeno: Sre Avg 17, 2022 9:46 am    Naslov sporočila:   Odgovori s citatom

Zdaj lahko dodamo HAL knjižnico za STM32G0. V projektu dodamo eno mapo "HAL":

Desni klik na "Target 1" in izberemo Add Group. Preimenujemo "New Group" v "HAL".

Iz GITHUB-a si prenesemo source kodo iz repozitorija (link na začetku):
https://github.com/STMicroelectronics/stm32g0xx_hal_driver

kar direktno v osnovno mapo projekta uVision, ki ga imamo na disku. S tortoise GIT to najlažje naredimo z GIT Clone (Slika spodaj).

Na disku se pojavi mapa "stm32g0xx_hal_driver".

Tako "kloniranje" ima veliko prednost, saj vsakič, ko se pojavi popravek ali nova verzija HAL driverja se enostavno prepiše nova verzija in imamo vedno zadnje stanje brez veliega truda.



gitclone1.jpg
 Opis:
 Velikost datoteke:  90.72 KB
 Pogledana:  3 krat

gitclone1.jpg



_________________
Always going the extra mile.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
mosqito
Član
Član



Pridružen-a: Čet 07 Apr 2016 23:22
Prispevkov: 3531
Aktiv.: 31.54

PrispevekObjavljeno: Sre Avg 17, 2022 9:52 am    Naslov sporočila:   Odgovori s citatom

V projektno skupino "HAL" dodamo vse iz podmape ".\stm32g0xx_hal_driver\Src" na disku, razen nekaj datotek, ki imajo v imenu "template". Na projektni skupini HAL desno kliknemo in izberemo "add existing files to group". Poklikamo na mapo ".\stm32g0xx_hal_driver\Src" in izberemo vse datoteke razen tistih s "template" v imenu.


add_HAL.jpg
 Opis:
 Velikost datoteke:  84.64 KB
 Pogledana:  3 krat

add_HAL.jpg



add_HAL_notemplate.jpg
 Opis:
 Velikost datoteke:  307.57 KB
 Pogledana:  4 krat

add_HAL_notemplate.jpg



_________________
Always going the extra mile.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
mosqito
Član
Član



Pridružen-a: Čet 07 Apr 2016 23:22
Prispevkov: 3531
Aktiv.: 31.54

PrispevekObjavljeno: Sre Avg 17, 2022 10:00 am    Naslov sporočila:   Odgovori s citatom

Na disku v projektni mapi ustvarimo še en direktorij in ga poimenujemo "inc". Tu bodo naše header (.h) datoteke.

Kliknemo na "čarobno palico" (Options for project). V zavihku "C/C++" dodamo to novo include mapo.



inc.jpg
 Opis:
 Velikost datoteke:  35.61 KB
 Pogledana:  1 krat

inc.jpg



inc2.jpg
 Opis:
 Velikost datoteke:  79.65 KB
 Pogledana:  3 krat

inc2.jpg



inc3.jpg
 Opis:
 Velikost datoteke:  124.58 KB
 Pogledana:  1 krat

inc3.jpg



inc4.jpg
 Opis:
 Velikost datoteke:  84.91 KB
 Pogledana:  1 krat

inc4.jpg



_________________
Always going the extra mile.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
mosqito
Član
Član



Pridružen-a: Čet 07 Apr 2016 23:22
Prispevkov: 3531
Aktiv.: 31.54

PrispevekObjavljeno: Sre Avg 17, 2022 10:04 am    Naslov sporočila:   Odgovori s citatom

Enako vajo ponovimo za mapo "stm32g0xx_hal_driver\Inc".


inc5.jpg
 Opis:
 Velikost datoteke:  75.27 KB
 Pogledana:  1 krat

inc5.jpg



_________________
Always going the extra mile.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Proteus
Član
Član



Pridružen-a: Sre 15 Jun 2005 10:03
Prispevkov: 1943
Aktiv.: 8.20

PrispevekObjavljeno: Sre Avg 17, 2022 12:59 pm    Naslov sporočila:   Odgovori s citatom

mosqito je napisal/a:
Prilagam še KiCad projekt.

A to moje oči prav vidijo?
Verjetno je to prvič v zgodovini SLO forumov, da je objavljen source TIV.
In to v programu, ki ga ni potrebno prihvatizirati preko Partis & Co.
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
mosqito
Član
Član



Pridružen-a: Čet 07 Apr 2016 23:22
Prispevkov: 3531
Aktiv.: 31.54

PrispevekObjavljeno: Sre Avg 17, 2022 1:04 pm    Naslov sporočila:   Odgovori s citatom

Haha. Saj imam tudi "baltium" s službeno licenco. Samo se mi ne zdi higienično, pa še to bi bilo spodbujanje piratiziranja, kar je domena ene druge skupnosti Mr. Green
_________________
Always going the extra mile.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> ARM arhitektura Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Pojdi na stran Prejšnja  1, 2, 3  Naslednja
Stran 2 od 3

 
Pojdi na:  
Ne, ne moreš dodajati novih tem v tem forumu
Ne, ne moreš odgovarjati na teme v tem forumu
Ne, ne moreš urejati svojih prispevkov v tem forumu
Ne, ne moreš brisati svojih prispevkov v tem forumu
Ne ne moreš glasovati v anketi v tem forumu
Ne, ne moreš pripeti datotek v tem forumu
Ne, ne moreš povleči datotek v tem forumu

Uptime: 494 dni


Powered by phpBB © 2001, 2005 phpBB Group