Wéi a firwat d'Dateblieder liesen wann Mikrokontroller Ären Hobby sinn

Wéi a firwat d'Dateblieder liesen wann Mikrokontroller Ären Hobby sinn

Microelectronics ass e fashionable Hobby an de leschte Joeren dank dem mageschen Arduino. Awer hei ass de Problem: mat genuch Interessi kënnt Dir séier DigitalWrite (), awer wat Dir maache kënnt ass net ganz kloer. Arduino Entwéckler hunn vill Effort gemaach fir d'Barriär fir d'Entrée an hiren Ökosystem ze senken, awer dobausse gëtt et nach ëmmer en donkele Bësch vu haarde Circuiten, deen fir den Amateur onzougänglech ass.

Zum Beispill, Datenblieder. Et schéngt wéi wann se alles hunn, huelt et a benotzt et. Awer hir Auteure setzen sech kloer net d'Aufgab fir Mikrokontroller ze populariséieren; Heiansdo et schéngtdatt si bewosst onverständlech Begrëffer an Ofkierzungen mëssbrauchen wann se einfach Saache beschreiwen, fir déi Oninitiéiert sou vill wéi méiglech duercherneen ze bréngen. Awer net alles ass sou schlecht; wann Dir wëllt, geet d'Këscht op.

An dësem Artikel wäert ech d'Erfahrung vun engem Geeschteswëssenschaftsspezialist deelen, deen mat Datenblieder fir Hobbyzwecker kommunizéiert. Den Text ass fir Amateuren geduecht, déi aus Arduino Hosen opgewuess sinn; et iwwerhëlt e Verständnis vun de Prinzipien vun der Operatioun vu Mikrokontroller.

Ech fänken un mat der traditioneller

Blénkt eng LED op Arduino

An direkt de Code:

void setup() {
DDRB |= (1<<5);
}

void loop() {
PINB = (1<<5);
for (volatile uint32_t k=0; k<100000; k++);
}

"Wat ass dat? - E sophistikéierte Lieser freet. - Firwat schreift Dir eppes an de PINB Input Register? Et ass nëmme fir ze liesen! Wierklech, Arduino Dokumentatioun, wéi déi meescht pädagogesch Artikelen um Internet, seet, datt dëst Register nëmmen liesen ass. Ech hu selwer geduecht, bis ech et nach eng Kéier gelies hunn Datenblat zu Atmega328p, preparéieren dësem Artikel. An do:

Wéi a firwat d'Dateblieder liesen wann Mikrokontroller Ären Hobby sinn

Dëst ass eng relativ nei Funktionalitéit, et war net op Atmega8, net jidderee weess doriwwer oder gëtt net ernimmt aus Grënn vu Réckkompatibilitéit. Awer et ass ganz gëeegent fir d'Iddi ze demonstréieren datt d'Dateblieder et wäert sinn ze liesen fir all d'Fäegkeeten vum Chip ze benotzen, och wéineg bekannt. An dëst ass net deen eenzege Grond.

Firwat soss Datenblieder liesen?

Normalerweis fänken Arduino Ingenieuren, déi genuch mat LEDs an AnalogWrites gespillt hunn, all Zorte vu Moduler a Chips un de Board ze verbannen, fir déi et scho geschriwwe Bibliothéike gëtt. Fréier oder spéider erschéngt eng Bibliothéik déi net funktionnéiert wéi se soll. Da fänkt den Amateur un et ze plécken fir et ze fixéieren, an dann ...

An do geschitt eppes komplett onverständlech, also musst Dir op Google goen, vill Tutorials liesen, Deeler vun engem passenden Code erauszéien an endlech Äert Zil erreechen. Dëst gëtt e mächtege Sënn vun Erreeche, awer a Wierklechkeet ass de Prozess wéi d'Rad nei ze erfannen andeems e Motorrad ëmgedréint gëtt. Ausserdeem erhéicht d'Verständnis wéi dëse Vëlo funktionnéiert net. Ech weess, well ech dat selwer scho laang gemaach hunn.

Wann ech amplaz vun dëser spannender Aktivitéit e puer Deeg d'Atmega328 Dokumentatioun studéiert hätt, hätt ech vill Zäit gespuert. No allem ass dëst e relativ einfache Mikrokontroller.

Also musst Dir Datenblieder op d'mannst liesen fir Iech virzestellen wéi de Mikrokontroller allgemeng funktionnéiert a wat et maache kann. A weider:

  • fir aner Leit hir Bibliothéiken ze kontrolléieren an ze optimiséieren. Si ginn dacks vun deene selwechten Amateuren geschriwwen, déi d'Rad nei erfannen; oder, am Géigendeel, d'Auteuren maachen se bewosst iwwerduecht. Loosst et dräimol méi grouss a méi lues sinn, awer et wäert definitiv funktionnéieren;

  • Chips ze benotzen an engem Projet fir deen keen eng Bibliothéik geschriwwen huet;

  • fir et méi einfach ze maachen fir Iech vun enger MK-Linn op déi aner ze migréieren;

  • fir endlech Ären alen Code ze optimiséieren, deen net an Arduino gepasst huet;

  • ze léieren wéi een all Chip direkt duerch seng Registere kontrolléiert, ouni d'Struktur vu senge Bibliothéiken ze studéieren, wann iwwerhaapt.

Firwat schreift direkt un d'Register wann et HAL an LL ass?

Glossar
HAL, Héich Abstraktioun Layer - eng Bibliothéik fir e Mikrokontroller mat engem héijen Abstraktiounsniveau ze kontrolléieren. Wann Dir braucht der SPI1 Interface ze benotzen, Dir einfach konfiguréieren an aktivéiert SPI1 ouni denken iwwer déi Registere fir wat responsabel sinn.
LL, Low Level API - eng Bibliothéik mat Makroen oder Strukturen mat Registeradressen, wat Iech erlaabt hinnen mam Numm Zougang ze kréien. DDRx, PORTx, PINx op Atmega sinn LL.

Streidereien zum Thema "HAL, LL oder Registere" komme regelméisseg an de Kommentaren op Habré. Ouni Zougang zu astralt Wëssen ze behaapten, wäert ech einfach meng Amateurerfahrung a Gedanken deelen.

Nodeems ech méi oder manner Atmega erausfonnt hunn an Artikelen iwwer d'Wonnerlechkeet vum STM32 gelies hunn, hunn ech eng hallef Dose verschidde Brieder kaaft - Discovery, a Blue Pills, an och just Chips fir meng hausgemaachte Produkter. Si hunn all zwee Joer Stëbs an enger Këscht gesammelt. Heiansdo sot ech mir selwer: "Dat ass et, ab dësem Weekend beherrschen ech STM," lancéiert CubeMX, generéiert e Setup fir SPI, kuckt op déi resultéierend Mauer vum Text, liberal aromatiséiert mat STM Copyrighter, an huet decidéiert datt dëst iergendwéi och war vill.

Wéi a firwat d'Dateblieder liesen wann Mikrokontroller Ären Hobby sinn

Natierlech kënnt Dir erausfannen wat CubeMX hei geschriwwen huet. Awer gläichzäiteg ass et kloer datt all d'Formuléierungen erënneren an se dann mat der Hand schreiwen onrealistesch ass. A fir dëst ze debuggen, wann ech zoufälleg vergiessen eng Këscht am Cube ze kontrolléieren, dat ass ganz gutt.

Zwee Joer sinn vergaangen, ech lecken nach ëmmer meng Lippen ST MCU Finder fir all Zorte vu lecker, awer iwwer mäi Versteesdemech, Chips, an zoufälleg komm wonnerbar Artikel, obwuel iwwer STM8. AN op eemol Ech hu gemierkt datt ech all dës Zäit op eng oppen Dier geklappt hunn: d'Register vum STM sinn op déiselwecht Manéier arrangéiert wéi déi vun all aner MK, an de Cube ass net néideg fir mat hinnen ze schaffen. War et iwwerhaapt méiglech?..

HAL a speziell STM32CubeMX ass en Tool fir professionnell Ingenieuren déi enk mat STM32 Chips schaffen. D'Haaptfunktioun ass en héijen Abstraktiounsniveau, d'Fäegkeet fir séier vun engem MCU op en anert ze migréieren a souguer vun engem Kär an en aneren, wärend an der STM32 Linn bleift. Hobbyisten begéinen selten esou Probleemer - eis Wiel vu Mikrokontroller ass an der Regel limitéiert op d'AliExpress Sortiment, a mir migréieren dacks tëscht radikal verschiddene Chips - mir plënneren vun Atmega op STM, vu STM op ESP, oder wat och ëmmer wat eis chinesesch Frënn werfen op eis. HAL wäert hei net hëllefen, a studéiert et wäert vill Zäit iessen.

LL bleift - awer vun et un d'Register gëtt et en halleft Schrëtt. Perséinlech fannen ech meng Makroen mat Registeradressen nëtzlech ze schreiwen: Ech studéieren den Dateblat méi suergfälteg, ech denken un wat ech an Zukunft brauch a wat ech definitiv net wäert, ech strukturéieren meng Programmer besser, an allgemeng iwwerwannen hëlleft ze memoriséieren .

Zousätzlech gëtt et eng Nuance mat der populärer STM32F103 - et ginn zwou inkompatibel LL Versiounen dofir, eng Beamte vu STM, déi zweet vu Leaf Labs, am STM32duino Projet benotzt. Wann Dir eng Open Source Bibliothéik schreift (an ech hat genau esou eng Aufgab), Dir musst entweder zwou Versiounen maachen, oder direkt op d'Register zougräifen.

Endlech, eliminéiert LL, menger Meenung no, mécht d'Migratioun méi einfach, besonnesch wann Dir et vun Ufank vum Projet plangt. Iwwerdriwwe Beispill: loosst eis den Arduino Blink am Atmel Studio ouni LL schreiwen:

#include <stdint.h>

#define _REG(addr) (*(volatile uint8_t*)(addr))

#define DDR_B 0x24
#define OUT_B 0x25

int main(void)
{
    volatile uint32_t k;

    _REG(DDR_B) |= (1<<5);

    while(1)
    {
        _REG(OUT_B) |= (1<<5);
        for (k=0; k<50000; k++);
        _REG(OUT_B) &= ~(1<<5);
        for (k=0; k<50000; k++);
    } 
}

Fir datt dëse Code d'LED op engem chinesesche Bord mat STM8 (vu ST Visual Desktop) blénkt, ass et genuch fir zwou Adressen dran z'änneren:

#define DDR_B 0x5007
#define OUT_B 0x5005

Jo, ech benotzen eng Feature fir d'LED op engem spezifesche Bord ze verbannen, et blénkt ganz lues, awer et wäert geschéien!

Wéi eng Zorte vun Dateblieder ginn et?

An Artikelen an op Forum'en, souwuel Russesch an Englesch, "Dateblieder" bedeit all technesch Dokumentatioun fir Chips, an ech maachen déi selwecht an dësem Text. Formell si se nëmmen eng Zort vun esou Dokumentatioun:

Donnéeën Blat - Leeschtung Charakteristiken, taktesch an technesch Charakteristiken. Obligatoresch fir all elektronesch Komponent. Hannergrondinformatioun ass nëtzlech fir bei der Hand ze halen, awer et ass net vill ze liesen an nodenklech. Wéi och ëmmer, méi einfach Chips sinn dacks op en Dateblat limitéiert fir net onnéideg Dokumenter ze produzéieren; an dësem Fall Referenz Handbuch ass hei abegraff.

Referenz Handbuch - d'Instruktioune selwer, e gesond Buch vun 1000+ Säiten. D'Aarbecht vun allem, wat an den Chip ageklemmt ass, gëtt am Detail beschriwwen. Den Haaptdokument fir de Mikrokontroller ze beherrschen. Géigesaz Datasheet, Instruktioune si fir eng breet Palette vun MKs geschriwwen; Si enthalen vill Informatioun iwwer Peripheriegeräter déi net an Ärem spezifesche Modell verfügbar sinn.

Programméierungshandbuch oder Instruction Set Manual - Instruktioune fir eenzegaarteg Mikrokontroller Kommandoen. Entworf fir déi, déi an der Assemblée Sprooch programméieren. Compiler Autoren benotzen et aktiv fir Code ze optimiséieren, also am allgemenge Fall brauche mir et net. Awer hei ze kucken ass nëtzlech fir e generellt Verständnis, fir e puer spezifesch Befehle wéi zum Austrëtt vun engem Ënnerbriechung, wéi och fir den Debugger aktiv ze benotzen.

Applikatioun Notiz - nëtzlech Tipps fir spezifesch Problemer ze léisen, dacks mat Code Beispiller.

Errata Blat - Beschreiwung vu Fäll vun Net-Standard Chip Verhalen mat Léisung Optiounen, wann all.

Wat ass an den Dateblieder

Direkt an Donnéeën Blat mir kënnen déi folgend Rubriken brauchen:

Gerät Resumé - déi éischt Säit vum Dateblatt beschreift kuerz den Apparat. Ganz nëtzlech an Situatiounen, wou Dir iergendwou en Chip fonnt hutt (en an engem Geschäft gesinn, soldered, komm op eng Ernimmung) a wëllt verstoen wat et ass.

allgemeng Beschreiwung - eng méi detailléiert Beschreiwung vun de Fäegkeeten vun de Chips aus der Linn.

Pinouts - Pinout Diagrammer fir all méiglech Chip Packagen (wéi engem Pin ass op wéi engem Been).

Pin Beschreiwung - Beschreiwung vum Zweck a Fäegkeete vun all Pin.

Erënnerung Map - mir sinn onwahrscheinlech eng Adress Kaart an Erënnerung ze brauchen, mee heiansdo enthält et och en Dësch vun Registere Spär Adressen.

Aschreiwen Kaart - d'Tabell vun den Adressen vun de Registerblocken ass an der Regel am Dateblatt, an an Ref Handbuch - nëmmen Verréckelung (Adress Offsets).

Elektresch Charakteristiken - an dëser Rubrik si mir virun allem interesséiert absolute maximal Bewäertungen, Oplëschtung déi maximal Luede pro Chip. Am Géigesaz zum onverständlechen Atmega328p, erlaben déi meescht MKs Iech net fir sérieux Laaschten un d'Pins ze verbannen, wat eng onsympathesch Iwwerraschung fir Arduinisten gëtt.

Package Informatioun - Zeechnunge vu verfügbare Fäll, nëtzlech wann Dir Är Brieder designt.

Referenz Handbuch strukturell besteet aus Sektiounen gewidmet fir spezifesch Peripheriegeräter, déi an hirem Titel uginn. All Kapitel kann an dräi Deeler opgedeelt ginn:

Iwwersiicht, Aféierung, Eegeschaften - Iwwerbléck iwwer Peripheriefäegkeeten;

Funktionell Beschreiwung, Benotzung Guide oder einfach den Haaptblock vun der Rubrik - eng detailléiert Textbeschreiwung vun de Prinzipien vum Peripheriegerät a wéi Dir se benotzt;

Registréiert - Beschreiwung vun Kontroll Registere. An einfache Fäll wéi GPIO oder SPI, kann dëst ganz genuch sinn fir d'Peripheriegeräter ze benotzen, awer dacks musst Dir nach ëmmer déi virdrun Deeler liesen.

Wéi liesen d'Dateblieder

Dateblieder, aus Gewunnecht, erschrecken Iech mat hirem Volumen an Heefegkeet vun onverständleche Wierder. Tatsächlech ass alles net sou grujeleg wann Dir e puer Liewenshacks kennt.

Installéieren gutt PDF Lieser. Dateblieder sinn an der glorräicher Traditioun vu Pabeierinstruktioune geschriwwe ginn; si si super fir auszedrécken, mat Plastiks Lieszeeche setzen an ze nähen. Hypertext an hinnen gëtt a Spuerquantitéite beobachtet. Glécklecherweis ass op d'mannst d'Struktur vum Dokument mat Lieszeechen entworf, sou datt e passende Lieser mat einfacher Navigatioun ganz néideg ass.

Den Dateblat ass net dem Stroustrup säi Léierbuch; et enthält net néideg alles ze liesen. Wann Dir de fréiere Rot benotzt hutt, fannt Dir just déi gewënscht Sektioun an der Lieszeechenbar.

Dateblieder, besonnesch Referenzmanualen, kann d'Kapazitéite vun net eng spezifesch Chip beschreiwen, mä déi ganz Linn. Dëst bedeit datt d'Halschent, oder souguer zwee Drëttel vun der Informatioun net relevant ass fir Ären Chip. Ier Dir TIM7 Registere studéiert, kuckt Iech un allgemeng Beschreiwung, hutt Dir et?

Wëssen englesch genuch fir Basis Niveau. Datasheets besteet d'Halschent vun Begrëffer déi dem duerchschnëttleche Mammesproochler onbekannt sinn, an d'Halschent vun einfache Verbindungsstrukturen. Et ginn och exzellent Chinesesch Dateblieder op Chinesesch Englesch, wou d'Halschent och Begrëffer sinn, an déi zweet Halschent eng zoufälleg Set vu Wierder sinn.

Wann Dir treffen onbekannt Wuert, probéiert et net mat engem englesch-russesche Wierderbuch ze iwwersetzen. Wann Dir duercherneen sinn Hysterese, da wäert d'Iwwersetzung "Hysteresis" Iech net méi waarm maachen. Benotzt Google, Stack Overflow, Wikipedia, Foren, wou dat erfuerderlecht Konzept wäert sinn an einfache Wierder mat Beispiller erkläert.

De beschte Wee fir ze verstoen wat Dir liest ass kontrolléieren an Aktioun. Dofir, haalt de Debug Board mat deem Dir Iech vertraut hutt, oder besser nach zwee, am Fall wou Dir nach ëmmer eppes falsch verstanen hutt an e mageschen Damp gesinn hutt.

Et ass eng gutt Gewunnecht Ären Dateblat praktesch ze halen wann Dir engem Tutorial liesen oder studéiert een aneren seng Bibliothéik. Et ass ganz méiglech datt Dir eng méi optimal Léisung fir Äre Problem dran fannt. A vice versa - wann Dir net aus dem Dateblat versteet wéi de Register tatsächlech funktionnéiert, Google et: Wahrscheinlech huet iergendeen schonn alles an einfache Wierder beschriwwen oder kloere Code op GitHub hannerlooss.

Glossar

E puer nëtzlech Wierder a Symboler fir Iech ze hëllefen séier un Dateblieder gewinnt ze ginn. Wat ech mech an de leschten Deeg erënnert hunn, Ergänzunge a Korrekturen si wëllkomm.

Elektrizitéit
VDC, Richteg - "plus", Iessen
Vss, Vee - "Minus", Äerd
aktuell - aktuell
Stroumspannung - Stroumspannung
Stroum ënnerzegoen - Aarbecht als "Buedem" fir extern Belaaschtung
ze Quell aktuell - Muecht externen Laascht
héich ënnerzegoen / Quelltext PIN - Pin mat verstäerkter "Toleranz" fir ze lueden

IO
H, héich - op der Vcc Pin
L, niddereg - op der Vss Pin
Héich Impedanz, Salut-Z, schwiewend - et ass näischt um Pin, "héich Resistenz", et ass praktesch onsichtbar fir d'Äussewelt.
schwaach opzéien, schwaach zéien erof - agebaute Pull-up / Pull-Down Resistor, ongeféier gläichwäerteg mat 50 kOhm (kuckt Datenblat). Et gëtt zum Beispill benotzt fir ze verhënneren datt den Input Pin an der Loft hänkelt, wat falsch Positiver verursaacht. schwaach - well et einfach ass hien ze "ënnerbriechen".
dréckt zéien - Pin Ausgangsmodus, an deem et wiesselt tëscht héich и Low - regelméisseg OUTPUT vun Arduino.
oppen Drain - Bezeechnung vum Ausgangsmodus an deem de Pin entweder kann sinn Low, oder Héich Impedanz / Schwämm. Ausserdeem ass dëst bal ëmmer net e "richtegen" oppenen Drain; et gi Schutzdioden, Widderstänn, a wat net. Dëst ass einfach eng Bezeechnung fir Buedem / Keen Modus.
richteg oppen Drain - awer dëst ass e richtegen oppene Drain: de Pin féiert direkt op de Buedem wann et op ass, oder bleift am Limbo wann et zou ass. Dëst bedeit datt, wann néideg, eng Spannung méi grouss wéi Vcc kann duerch et passéiert ginn, awer de Maximum ass nach ëmmer am Dateblat an der Rubrik spezifizéiert. Absolut maximal Bewäertungen / Volt.

Interfaces
an der Serie - a Serie verbonnen
ze ketten - Chips an eng Kette versammelen mat enger Seriellverbindung, d'Zuel vun den Ausgänge erhéijen.
Verréckelung - Verréckelung, bezeechent normalerweis e bësse Verréckelung. bzw. eran ze verschwannen и eraus ze verschwannen - kréien an iwwerdroen Daten bëssen fir Bit.
Spär - e Latch deen de Puffer ofdeckt wärend Bits doduerch verréckelt ginn. Wann den Transfer fäerdeg ass, mécht de Ventil op an d'Bits fänken un ze schaffen.
anzekloeren - Leeschtunge e bësse-vun-bëssen Transfert, Verréckelung all Stécker op déi richteg Plazen.
duebel Puffer, Schattenregister, Preload Register – Geschichtsbezeechnungen, wann de Register muss fäeg sinn nei Donnéeën ze akzeptéieren, awer bis e puer Punkt halen. Zum Beispill, fir PWM richteg ze schaffen, sollen seng Parameteren (Duty Cycle, Frequenz) net änneren bis den aktuellen Zyklus eriwwer ass, awer nei Parameter kënne scho transferéiert ginn. Deementspriechend sinn déi aktuell gehale ginn Schattenregister, an nei falen an Preload Register, gëtt an déi entspriechend Chipregister geschriwwe ginn.

All Zorte vu Saachen
prescaler - Frequenz Prescaler
e bëssen ze setzen - Bit op 1 setzen
e bëssen ze läschen / zrécksetzen - Bit op 0 zrécksetzen (zréckgesat - STM Dateblatt Feature)

Wat ass Next

Am Allgemengen war e prakteschen Deel hei geplangt mat enger Demonstratioun vun dräi Projeten op STM32 an STM8, speziell fir dësen Artikel mat Hëllef vun Datenblieder gemaach, mat Glühbirnen, SPI, Timer, PWM an Ënnerbriechungen:

Wéi a firwat d'Dateblieder liesen wann Mikrokontroller Ären Hobby sinn

Awer et gëtt vill Text, sou datt d'Projete op den zweeten Deel geschéckt ginn.

D'Fäegkeet fir Datenblieder ze liesen hëlleft Iech mat Ärem Hobby, awer et ass onwahrscheinlech fir Live Kommunikatioun mat Matbierger Hobbyisten op Foren an Chats ze ersetzen. Fir dësen Zweck musst Dir ëmmer nach fir d'éischt Äert Englesch verbesseren. Dofir kréien déi, déi d'Liesen ofgeschloss hunn, e spezielle Präis: zwee gratis Lektiounen zu Skyeng mat der éischter Bezuelung mam Code HABR2.

Source: will.com

Setzt e Commentaire