Realtime OS / LCD op $12 Discovery bord (4 / 6 stap)

Stap 4: Andere Hardware / Software trucs


Er is een aantal andere dingen gaande in de broncode die ik in dit verstrekt heb instructible, die is vermeldenswaard.

Datum / tijd van Code:

Voor het berekenen van datum / tijd ik gebruikte de clib bibliotheekfuncties.  Dit ia een weinig netelig omdat clib malloc gebruikt te grijpen chucks van geheugen.  Dit veroorzaakt problemen voor een RTOS dat schakelaar om te belasten moet.  De oplossing is om clib de malloc-functies gebruiken in de OS in plaats van de malloc-functies in de bibliotheek.  Gelukkig, sommige aardige vent op het Internet het geregeld en een oplossing beschikbaar gesteld.  Zie de Michal Demin-website voor meer info.

Dus, de hardware gebruikt het externe 32.768 kHz kristal om een 32-bits teller verhogen één keer per seconde.  De teller is batterij back (-cel van lithiummagnesiumoxide) en doet niet steeds opnieuw krijgen.  Het opnieuw instellen van hardware, debuggen, of reflashing is niet de teller instellen!  De teller kan worden ingesteld via software, echter.  De waarde instelt op het aantal seconden sinds 1 januari 1970 clib gelukkig maakt.  Eenmaal ingesteld, er zijn een heleboel clib functies om tijden te berekenen.  Opmerking, gegeven een datum / tijd / timezone, clib kunt omkeren het aantal seconden voor u berekenen.

Zodra clib de tijdzone weet, de datum / tijdfuncties zijn klaar om te gaan.  De datum / tijd op het LCD-scherm is goed, ongeacht de tijd van daglichtbesparingen, schrikkeljaar, of elke andere rommel die ik niet begrijp.  In feite, eenmaal ingesteld, de datum / tijd moet goed jaar voor jaar (met uitzondering van kien).

Om de datum / tijd, ik uncomment een sectie met code (kijk in ctime.c in de buurt van de bovenkant), dat de omgekeerde tijd berekening doet.  De 32 bit-teller wordt bijgewerkt en het programma blijft.  Dan, ik commentaar uit de datum / tijd code die de tijd stelt en de micro reflash.  Het is een vervelende hack -, maar ik liep uit het hacken van SAP om te schrijven wat knopcode als u wilt instellen van de tijd / datum.  Voel je vrij.

Debug Console:

Ik begonnen ben om sommige code toevoegen een debug console te schrijven.  Het idee is, neem één van de ongebruikte UART-kanalen en gebruiken voor toepassing Foutopsporingsberichten.  De console kan ook worden interactieve, zodat herhaalde berichten kunnen worden toggled in- en uitschakelen.  Ik heb dit gebruikt dus ik kan kijken analoge waarden schuiven.  Het is mooi voor zitten kundig voor zet dit aan, en uit.

Eigenschappen van de debug console omvatten:

  • Debuggen console wordt uitgevoerd als een afzonderlijke taak - de laagste prioriteit.  Ontworpen om lage impact op het systeem.
  • Andere taken kunnen noemen "vDebugPrintf()" voor het verzenden van een opgemaakte bericht uit de debug seriële poort.
    • De opgemaakte berichten worden geladen in een OS FIFO wachtrij.
    • De debug-taak overdraagt voortdurend karakter uit de FIFO-wachtrij en op de seriële poort.
    • De lichtgewicht broncode voor de vDebugPrintf is voorzien, zodat u kunt uw eigen speciale spullen.

Automatische RC PWM-uitgang:

Twee pinnen geweest setup met een 50Hz PWM-uitgang.  Het idee is dat deze pinnen zullen worden gebruikt om te rijden RC servomotoren in de toekomst.  Met een eenvoudige schrijfbewerking naar een micro register die het pulserend sproeien van de PWM-uitgang kan worden gewijzigd, zou een aangesloten RC servomotor dan reageren op mijn verplaatsen naar de nieuwe positie.

Nogmaals, dit toont enkel hoe gemakkelijk het is om hardware setup en controle.  Het genereren van een PWM-uitgang met micro tweede resolutie zonder enige hardware helpen zou een grote ruzie.  De ARM-hardware maakt dit allemaal gemakkelijk.

Automatische analoog naar digitaal conversie:

Deel van mijn initialiseren hardware omvat een paar AtoD kanalen instellen.  Recht nu, heb ik vier kanalen instellen die gebruikmaken van een andere DMA-kanaal.  Als een conversie voltooid is, kopieert het DMA-kanaal u de waarde naar een RAM-buffer automatisch.  De analoog naar digitaal convertor dan verplaatst naar de volgende pin automatisch.  Het hele proces herhaalt zich over en weer allemaal zonder CPU overhead.

De RAM-buffer heeft dus altijd de nieuwste (meeste omhoog tot nu toe) analoog naar digitale waarden.  Eenvoudig gebruik de waarden van de RAM bufferen en weet zij zijn de meest verse.  Up to date houden van de RAM values is allemaal gedaan zonder enige onderbreking van de micro!

CPU inactief Counter:

Wanneer de OS heeft geen werk te doen (alle taken zijn in een ruststand) de OS roept een andere gebruiker callback functie genaamd "vApplicationIdleHook()".  Ik geprogrammeerd deze functie gewoon een 32-bits om teller te verhogen.

Nadat een seconde (100 OS teken) is verstreken kan de waarde van de teller worden afgedrukt op de debug console.  De teller dan op nul wordt teruggesteld en het proces herhaalt.

Door te kijken naar de debug console afdruk van de idle haak kunnen we zien hoeveel tijd er niet-actief is in het OS.  Kinda als het kijken naar de grafiek van de CPU laden op een PC.

Zelfs met alles wat er gaande is in het OS, RC PWM-uitgangen, de overdracht van de gegevens van LCD, analoog naar digitaal conversie, LED twiddling, de idle haak rekken tot meer dan 350.000 tellingen per seconde!  Gewoon geweldig, er is wat veel PK overgebleven gezien hoeveel de CPU al doet.  Deze baby heeft sommige benen!

Gerelateerde Artikelen

Directe lezing van LCD-scherm met behulp van algemene doel IO

Directe lezing van LCD-scherm met behulp van algemene doel IO

Moeilijkheid: e a s y .. Schema, solderen, C programmerenVeel apparaten hebben schermen van LCD (Liquid Crystal Display) - uw magnetron, digitale klok en Weegschaal zijn een paar bekende voorbeelden. Meer dan eens, heb ik wil kunnen gebruiken op een
Interfacing 20 x 4 LCD met Arduino

Interfacing 20 x 4 LCD met Arduino

Een vloeistof - crystal display (LCD) is een flat-panelbeeldscherm, elektronische visuele weergave of video weergave die gebruikmaakt van het licht modulerende eigenschappen van vloeibare kristallen. Vloeibare kristallen doen licht niet rechtstreeks
Hoe u een 16 x 2 LCD met behulp van een AVR ATtiny2313

Hoe u een 16 x 2 LCD met behulp van een AVR ATtiny2313

als je gewoon bent om in microcontrollers er is een hoop te weten zoals u waarschijnlijk heb ontdekt. Er is een heleboel goede online tutorials voor de Atmel AVR en kansen zijn dat u een paar van die inmiddels heb zien. Ik onlangs heb in microcontrol
Foto nachtlampje van een gebroken LCD

Foto nachtlampje van een gebroken LCD

een gebroken LCD omzetten in een backlit beeld. Tijd om opnieuw purpose de Prullenbak...Het LCD-scherm die ik had was een zwart-witprinter backlit ras dat was verbrijzeld, de LCD-gedeelte niet meer werkte, maar de achtergrondverlichting was prima.Elk
Sparrow - my assistant

Sparrow - my assistant

Hallo iedereen. Ik ben een grafisch ontwerper met een rusteloze ziel (). Ik hield doen elektronica jaar geleden en dan heb bezig met leven en werk. Ik ben nu gezegend met enige tijd (zeldzaam nu een dagen: P). Dit is mijn eerste microcontroller / ard
Quadcopter met KK 2.15 Module

Quadcopter met KK 2.15 Module

Alle noodzakelijke sensoren, verwerkingscapaciteit, en chips van de communicatie moet een drone vliegen autonoom, ingebouwde. Terwijl dat niet veel lijkt misschien, elimineert het eigenlijk veel van de huidige commerciële civiele maar beschikbaar voo
LapPi - een Raspberry Pi Netbook

LapPi - een Raspberry Pi Netbook

de Raspberry Pi is een opmerkelijke machine. Lichtgewicht, krachtige, en tot nu toe het was volledig vastgebonden aan een stopcontact. De LapPi is gebouwd om de Pi vrij! Het is gemaakt van een mengsel van reserveonderdelen, niet-toegewezen elektronic
Alfanumerieke Display Arduino Kit: Vergadering tutorial

Alfanumerieke Display Arduino Kit: Vergadering tutorial

De Alfanumerieke LCD Kit voor Arduino met behulp van slechts één component, en natuurlijk de LCD, bevatten de Arduino board met ten minste een 16 × 2 alfanumerieke LCD tekens op een achtergrondverlichting display dat kan worden gebruikt in elke zelfs
Draagbare Raspberry Pi (V4)

Draagbare Raspberry Pi (V4)

De Raspberry Pi. Haar een $35-computer de grootte van een creditcard. Zeer klein, zijn groot voor de draagbaarheid. Dit is echter meestal het probleem want het is moeilijk om te maken het draagbare.Het afgelopen jaar en een half, heb ik gewerkt met m
Delta Robot Klok

Delta Robot Klok

Een delta robot is een eenvoudige robot die drie servo's gebruikt om te bewegen een einde effector. Het einde effector blijft in een vaste stand ten opzichte van de base maar is vrij om te bewegen in drie afmetingen.In dit project heb ik een digitale
PIvena montage-instructies (B +)

PIvena montage-instructies (B +)

Dit instructable gaat om u te tonen hoe te monteren van het PIvena Raspberry Pi geval! Ga naar Lees meer over de PIvena, te thingiverse downloaden van alle bestanden van het ontwerp en maak je eigen of naar mijn Etsy -winkel te kopen van een kit.Stap
LCD controle met LinkIt één bord

LCD controle met LinkIt één bord

Vandaag, zullen we kijken naar manieren om te communiceren met de buitenwereld, met behulp van uw LinkIt een ontwikkeling boord. In deze handleiding leert u hoe u een 16 door 2 LCD-module met behulp van alleen een potentiometer, wat draadjes en de Li
ATTiny45/85 LCD Weergave besturingselement met een shift register, geprogrammeerd in Arduino

ATTiny45/85 LCD Weergave besturingselement met een shift register, geprogrammeerd in Arduino

uitgevoerd op een ATTiny45 van 85 chip Arduino is een grote kosten-spaarder voor mini-projecten. Echter geen u een HD44780 compatibele LCD display verbinding maken als u nodig hebt 6 uitgangen, maar u slechts 5 hebt. Dit probleem kan worden opgelost
Hoe een Laptop LCD converteren naar een externe Monitor.

Hoe een Laptop LCD converteren naar een externe Monitor.

Hallo daar. Dit is mijn eerste InstructableEen tijdje terug ik zat rond en vroeg zich af wat te doen met mijn stroomloos laptop. Ik wist dat de moederbord was gebakken maar alles was nog in werkende staat. Dientengevolge, ik besloten om een externe m