Realtime OS / LCD på $12 Discovery ombord (4 / 6 steg)

Steg 4: Annan hårdvara / programvara Tricks



Det finns vissa andra saker som händer i källkoden jag har förutsatt i detta instructible som är värt att notera.

Datum / tid kod:

Att beräkna datum / tid jag använt clib bibliotekets funktioner. Denna lite knepigt eftersom clib använder malloc för att greppa ia chucks minne. Detta orsakar problem för ett RTOS som behöver uppgift switch. Lösningen är att få clib att använda funktionerna malloc i OS i stället för malloc funktioner i biblioteket. Lyckligtvis några trevlig kille på Internet sorterade ut det och gav en lösning. Se Michal Demin webbplats för mer information.

Maskinvaran använder alltså yttre 32.768 kHz kristallen för att hålla en 32-bitars räknare uppräkning en gång per sekund. Räknaren är batteriet backas (coin cell) och inte få återställa någonsin. Hårdvara återställs, felsökning, eller skriva om inte återställa räknaren! Räknaren kan ställas in via programvara, emellertid. Ange värdet till antalet sekunder sedan 1 januari 1970 gör clib glad. En gång set, det finns en massa clib funktioner för att beräkna tid. Obs, få ett datum / tid / tidszon, clib kan vända beräkna antalet sekunder för dig.

När clib vet tidszon, datum / tidsfunktioner är redo att gå. Datum / tid på LCD-skärmen är bra oavsett sommartid, skottår eller annat skräp som jag inte förstår. I praktiken när set, datum / tid bör vara bra året runt för år (andra än driva).

Ange datum / tid, jag kommentera bort en del av koden (titta i ctime.c nära toppen) som gör den omvända tidberäkningen. 32 bitars räknare uppdateras och programmet fortsätter. Sedan jag kommentera ut datum / tid-kod som anger tid och reflash mikro. Det är en otäck hacka - men, jag bara sprang ut hacking juice för att skriva några knappkod om du vill ställa in tid / datum. Känn dig fri.

Felsöka konsolen:

Jag har precis börjat skriva någon kod för att lägga till en Felsökningskonsolen. Idén är, ta en av de oanvända UART kanalerna och använda den för programmeddelanden debug. Konsolen kan också vara interaktiv så att upprepade meddelanden kan växlas på och av. Jag har använt detta så jag kan titta på analoga värden rulla. Det är trevligt att kunna vända detta på och av.

Dragen av Felsökningskonsolen omfatta:

  • Felsöka konsolen körs som en separat aktivitet - den lägsta prioriterad uppgiften. För att vara låg inverkan på systemet.
  • Andra uppgifter kan kalla "vDebugPrintf()" att skicka ett formaterat meddelande ut debug seriell port.
    • De formaterade meddelandena läses in i en OS FIFO kö.
    • Debug uppgiften överför ständigt karaktär av FIFO kön och till den seriella porten.
    • Lätta källkoden för vDebugPrintf är ger så kan du lägga till din egen speciella grejer.

Automatisk RC PWM-utgång:

Två stift har varit setup med en 50Hz PWM-signalen. Tanken är att dessa stift kommer att användas att köra RC servomotorer i framtiden. Med en enkel skriva till en micro registrera intermittensen av PWM utgången kan ändras, skulle en anslutna RC servomotor då svara min flytta till den nya positionen.

Igen, detta visar bara hur lätt det är att installationsprogrammet och kontroll hårdvara. Generera en PWM-utgång med micro andra resolution utan några hårdvara assist skulle vara en större krångel. ARM hårdvaran är detta allt för lätt.

Automatisk Analog till Digital konvertering:

Del av maskinvaran inträffade omfattar inrättande av ett fåtal AtoD kanaler. Rätt nu, jag har fyra kanaler setup som använder en annan DMA-kanal. Efter en omvandling är komplett, kopieras DMA-kanalen värdet till en RAM-buffert automatiskt. Analog till digital omvandlare än flyttar till nästa stift automatiskt. Hela processen upprepas om och om igen allt utan något processorkraft.

RAM-buffert har därför alltid den senaste (de flesta upp till datum) analogt till digitala värden. Enkel användning värdena från RAM buffra och vet att de är de mest färska. Värdena som RAM att hålla uppdaterad sker utan avbrott i mikro!

CPU Idle Counter:

När OS har inget arbete att göra (alla aktiviteter är inaktiv) OS anropar en annan användare callback funktion kallas "vApplicationIdleHook()". Jag programmerade denna funktion för att helt enkelt öka en räknare för 32-bitars.

Efter en sekund har passerat (100 OS fästingar) kan värdet på räknaren tryckas på Felsökningskonsolen. Räknaren är då nollställs och processen upprepas.

Genom att titta på debug konsolen utskriften från den tomgång krok kan vi se hur mycket ledig tid det är OS. Kinda som tittar på CPU Lastande diagrammet på en PC.

Även med allt som pågår i OS, RC PWM utgångar, LCD dataöverföringar, analog till digital konvertering, LED tråkigt, overksam hook rack upp mer än 350.000 räknas per sekund! Helt enkelt fantastisk finns det några mycket hästkrafter kvar med tanke på hur mycket CPU redan gör. Denna baby fick några ben!

Se Steg
Relaterade Ämnen

Hur du ansluter en seriell LCD till en Arduino UNO

I detta instructable jag kommer att visa dig hur jag ihop en seriell LCD 16 X 2 med en Arduino UNO.Det finns massor av instructables och flashmanualer som visar dig hur du ansluter en vanlig LCD till en Arduino men inte många visar en seriell LCD och...

Arduino Mega GPS med LCD och SD loggning

Använd din Audino Mega som en GPS logger med tydlig LCD display och 5 funktionsknappar. En bi-färg LED används för att ange statusinformation.SDcard kan vara kvar i och läsa med en kort läsaren skiss, med utgång till den seriella Monitor.Detta instru...

Arduino text LCD animation

jag har sett många sidor om hur tråd upp en LCD-panel till en Arduino och sidor som hjälper dig att rita egna tecken, men jag såg inte många som använt funktionen anpassade tecken för animering.Vad du behöver för detta:-Arduino Uno-HD44780-kompatibel...

ESP8266 WiFi touch skärmen termostat

I den här guiden visar vi hur man bygger WiFi kontrollerade termostat med ESP8266, Arduino och beröring skärm uppvisning. Termostaten kommer också att visa annan information, som väderprognos och temperaturen utanför. Totala kostnaden för termostat ä...

O-Cade: Bärbara OUYA mini Arcade skåp med mobila laddning Station

O-Cade är en bärbar batteridriven mini arcade skåp som också har en inbyggd laddstationen för mobiltelefoner och surfplattor. Tänk dig att ha din egen mini arcade skåp som har över 800 + spel finns att spela som kan också ladda telefonen och tablette...

Touchscreen väggmonterad familj Sync & hem Kontrollpanelen

Vi har en kalender som uppdateras varje månad med händelser men det sker manuellt. Vi tenderar också att glömma saker vi har sprang av eller andra mindre sysslor.I denna ålder som jag tyckte det var mycket lättare att ha en synkronisering kalender oc...

Buggy rullstol Robot

detta är en ändring av en elektrisk rullstol.Jag kallade det "Buggy" av två skäl. #1 mina barn kan fortfarande rida runt eftersom jag lämnade stolen intakt. #2 jag har inte programmerat något på länge.Jag planerar att skapa "jobb" för...

Mätning av avstånd (och mer) enhet använder Arduino och GPS

i min tidigare Instructable, visade jag hur du få grundläggande uppgifter från en bärbar GPS, Holux M-1000 och konvertera UTC till lokal tid. I morse (Nov. 3: e), slutade i sommartid. Jag vände på enheten när jag vaknade upp i morse för att se om tid...

"ditt val"

idén att måla shopping bara skickar rysningar längs min ryggrad. För att bli av med besväret med färg shopping jag kom med en enhet som läser och visar RGB-värdet av färg skannas. På så sätt färg shopping inte längre tittar på paint prov kort men ist...

LapPi - en Raspberry Pi Netbook

The Raspberry Pi är en märklig maskin. Lätt, kraftfull, och fram till nu det var helt bundna till ett vägguttag. I Lappland är byggd för att fria Pi! Gjorda av en blandning av reservdelar, ofördelade elektronik, och skrotas komponenter & kablar jag h...

Raspberry Pi: Väggmonterad kalender och Notification Center

Innan den "digitala eran" för många familjer väggkalendrar för att Visa månatliga utsikt över kommande händelser. Denna moderna version av vägg monterade kalendern innehåller samma grundläggande funktioner:En månatlig agendaSynkronisering av fam...

Skrapa gratis

hålla din bil "Skrapa gratis" med vår produkt! Som gillar att lyssna på botten av deras bil stötfångare screech när det skrapar en trottoarkant eller parkeringsplats stötfångaren. Följ steg för steg guide för att bli "Skrapa gratis"!St...

LCD ombord befogenheter leverera reparation.

jag vände på min #6 PC idag och ingen bildskärm. Svart! Efter kontroll av strömkabeln och VGA-kabel, fortfarande ingenting. Så vad gör jag, Jo jag tar isär den ju! Vad jag fann var alla 6 om makt leverans mössa var inte bra. Tog bara en visuell kontr...

LCD-Display ombord med en Linkit och Bluetooth

HejI detta instructable lär du dig gränssnitt LCD med Linkit en och hur man styr samma med BluetoothSteg 1: Komponenter som krävs Linkit en styrelseArduino UNO16 * 2 LCD LCD sköldBluetooth-antenn (hittade tillsammans med en Linkit)SmartPhonesladdarSt...

4-i-1 Arduino LCD sköld Version 2

Med detta projekt, har du minst fyra produkter i en eftersom detta kit består av en Arduino Uno, en LCD-skärm, en USB-A till USB-B kabel och alla material som du kommer att behöva utveckla följande fyra projekt: en disk, en termometer, en kondensator...

Hur konvertera en Laptop LCD till en extern bildskärm.

Hallå där. Detta är min första InstructableFör ett tag sedan jag satt och undrar vad de ska göra med min döda laptop. Jag visste att moderkortet var stekt men allt annat var fortfarande i skick. Som ett resultat jag beslutat att göra en extern bildsk...

ATTiny45/85 LCD Visa kontroll med ett skiftregister, programmerat i Arduino

kör Arduino på en ATTiny45 av 85 chip är en enorm kostnad-sparare för mini-projekt. Dock kan du inte ansluta en HD44780 kompatibel LCD-display som du kräver 6 utgångar, men du har bara 5. Problemet kan lösas genom att använda ett skiftregister till k...

Atmega16/32 utveckling styrelsen med LCD

detta instructable visar, hur du gör din egen utveckling styrelsen för Atmega16 eller Atmega32 processorer. Internet är fullt av hemgjorda utveckling styrelser, men jag tror att det finns utrymme kvar för en annan. Denna styrelse har varit mycket anv...

Android kontrollerade LCD/LED Display - ingen Android-programmering, nr lödning behövs.

IntroductionDetta bygga använda Arduino plattform för att styra en LCD/LED display från din Android mobil. Det är en plug and play bygga som kräver nr Android programmering, ingen lödning och ingen handstil av Arduino kod, det du inte vill.Den grundl...