Intro till mikrokontroller felsökning (och en Pomodoro Timer) (5 / 9 steg)

Steg 5: Brytpunkter, lokalbefolkningen och register



Slå den "" (

) knappen för att starta pomodoro. Ägna stor uppmärksamhet åt lamporna. Det är något lurt om de värden som de visar. När timern startar, bör det Visa det totala antalet pomodoro minuter (25) plus paus minuter (5). I binär är som "11110". Hmm... Varför är alla fem lysdioder på?

Så, låt oss ta en titt på funktionen "setLEDs". Antingen är det få fel värde eller ta emot rätt värde men visar fel värde (eller en konstig kombination av båda).

Bläddra ner till den första raden av funktionen setLEDs (linje 22, se bild 1). Högerklicka på någon del av den linjen och välj "Brytpunkt (kod)". Observera den röda pricken till vänster om denna kodrad? Du kan dubbelklicka på i denna vinstmarginal att Ställ in/inaktivera brytpunkter också. (bild 2) En brytpunkt är en punkt den i koden där programkörningen kommer att bryta så att du kan felsöka.

Tryck på med brytpunkt set, den "återställa" (

) knappen. När du trycker på "återställa" du ska meddelas med ett lång omständlig meddelande som säger att det kan ta lång tid att 'Kör till main'. Det betyder att din debugger är att stanna vid den första raden i den huvudsakliga funktionen, men din enda hårdvara brytpunkt på rad 22. För att stoppa på main, kommer att programmet utföra en rad i taget tills det blir till huvudsakliga. Just nu, det är inte ett stort problem, men denna begränsning kan vara besvärande med mer komplicerad kod. Observera att mer kapabel microcontrollers kan tillåta många mer hårdvara brytpunkter, men en är bättre än ingenting (Ja, jag är tittar på du Arduino). :)

För nu, bara förstå, att om en brytpunkt är när du startar din kod, det tar en extra sekund eller två för att nå största.

Usch... Okej. Den gröna pilen är på den första raden i main nu (linje 50, se bild 3)? Bra, nu vi kunde enda steg (dvs "Stega" (

)) hela vägen till setLEDs funktion, men detta kan ta mycket lång tid. Istället, eftersom vi har en brytpunkt, vi träffade bara "gå" (

).

Nästan omedelbart, bläddrar den gröna pilen till rad 22. För att få en bättre uppfattning om vad funktionen gör, välj "Visa"→"lokalbefolkningen" från menyn. (bild 4) I fönstret som kommer upp, den lokala variabeln "värde" visas med... err... det värdet, "0x1e". Att högerklicka på variabeln i lokalrutan kan du ändra bas beteckningssystemet av värdet. Ändra till decimal och märker nu när funktionen verkligen komma förbi rätt nummer (30).

Eftersom denna funktion bara handlar om en enda variabel och vi vet att det är korrekt, låt oss stänga fönstret "lokalbefolkningen". Nu välja "Visa" → "registrera" från menyn. I fönstret "registrera" ändra i listrutan Visa "Port 1/2". Expandera trädet "P1OUT". (bild 5)

P.0 och P.7 kan ha slumpmässiga värden men s.1-P.6 bör alla vara noll. Tryck på "Stega" (

) ett par gånger. Som vi enda steg genom koden, kan vi titta på registren ändra. Du behöver inte ens titta på databladet att veta att P1OUT registret är delstaten digital stiften på mikrokontroller eftersom lamporna bör återspeglar vad du ser i fönstret "Register". Röda värderingar i fönstret "registrera" innebär att senaste instruktion som utfördes ändrat det särskilt värdet. Detta gäller variabler i fönstret "Lokalbefolkningen".

Observera att värdet endast blir röd om registret ändras, så efter att ha exekverat linje 45, registret är röd och visar en 1 i stället för den förväntade 0. Vi hittade vår bugg! Ser ut som jag vänt de binära operatorerna. (bild 6)

Se Steg
Relaterade Ämnen

Dimmer pack felsökning och reparation Clipsal C-bus

När jag renoverade mitt hus beslutat jag att installera Clipsal C-Bus dimmer förpackningar som en del av mitt hem automationssystem. Allt var bra men med tiden började jag uppleva ett oroande fel. Efter en lampa blåser den kanal som den var ansluten...

Fläkt RPM med inre hall effekt sensor och Arduino (Intro till hårdvara avbryta och LCD display)

För mitt andra projekt för arbete, jag var tvungen att mäta rotationshastigheten av rotoren i varv Per minut (RPM) av en modifierad dator fläkt. Den hade tre kablarna kommer ut och som kryssat mig som kanske har något sätt att kontrollera sin hastigh...

Intro till utskrift Silkscreen - Tips och Essentials

när närmar sig ett projekt som kräver silkscreen tryck har du 2 huvudsakliga uppsättningar av val1) att använda vinyl eller använda foto emulsionvinyl är snabbare och billigare, men kräver en vinyl fräs för de flesta projektFoto emulsion - kan göras...

INTRO till ARDUINO UNO-R3

Hej killar, du vet vad en arduino ombord är. Men som nybörjare (eller) en nybörjare kan du möta en svårighet i att välja rätt styrelsen från det breda utbudet av styrelser i Arduino familj.För dig föreslå jag starkt Arduino UNO – R3 att komma igång m...

Med hjälp av Cerberus för att aktivera ADB Android felsökning på telefon med sprucken skärm

Jag tappade min Nexus 4 på nyårsafton och skärmen knäckt. Jag fortfarande kunde se bilderna men digitizer slutade fungera, så det enda jag kunde göra var att ansluta den till datorn och säkerhetskopian mappar jag hade tillgång till. Jag var intresser...

Nybörjarguide till felsökning i MPLABX med ChipKIT PRO MX7 av DIGILENT

Detta Instructable är en Nybörjarguide till felsökning kod programmerat i MPLAB X IDE v2.0. De åtgärder som omfattas är gemensam tillämpning av debugger programvara och problem jag stött på som en nybörjare användare och en oerfaren programmerare. In...

Felsökning, test och förbi SPDT Power Trim Tilt reläer för båtar

felsökning, test och förbi SPDT Power Trim Tilt reläerElektrisk trim och tilt pumpmotorn rör sig inte alls? Elektriskt trim och tilt pumpmotorn endast köras i en riktning, bara upp eller bara ner?Praktiska verktyg: voltmeter, 2 tråd byglar, kontakta...

3D-skrivare grunderna och felsökning: FDM skrivare

Detta Instructable är att hjälpa med att förstå grunderna i 3D-utskrifter och felsökning av de vanligaste problemen med FDM 3D-skrivare. Dessa bilder är tagna från ett bildspel som jag skapat för att hjälpa människor med 3D-utskrifter.Vad är en 3D-sk...

Konfiguration av MKS Sbase v1.2 32-bitars Controller grunderna och intro till Smoothieware.

ProlougeJag är verkligen glad att se hur denna grundläggande intro till Smoothieware och MKS Sbase 1.2 controller har fått så mycket uppmärksamhet, och hoppas verkligen att det kommer att hjälpa människor att komma igång eller besluta att inte.Jag ha...

Början Microcontrollers del 8: Lägga till en knapp till mikrokontroller och göra det göra något

En mycket enkel och lätt sätt att tillhandahålla för mänsklig interaktion med mikrokontroller är att infoga en knapp i kretsen. Att kommunicera med datorer som använder två viktigaste inmatningsenheter: musen och tangentbordet. Ett tangentbord är ing...

Arduino felsökning - brytpunkter, Tracepoints och uttryck

denna handledning visar hur du kommer igång med Arduino debug verktyg från Visuella Micro. Debug verktyget är integrerat i utvecklingssystemet Microsoft Visual Studio Professional som också ger 100% kompatibel Arduino programmering, kompilera och lad...

Intro till partikeln fotonen och IoT

1. Vänligen njuta av min första Instructable2. jag är bara en ödmjuk nybörjare, strävar efter att vara en bra programmerare, så snälla, inga hatiska kommentarer (jag inte tror faktiskt jag måste nämna att gemenskapen är ganska trevligt här)3. Vänlige...

Intro till perspektiv och konstruktion ritning

Här är grunderna för att lärande perspektiv och konstruktion ritning, från enkelt rita linje till en och två punkt perspektiv. Med dessa 8 steg kan du lära dig grundläggande färdigheter att gälla konstruktion ritning, design och andra typer av formel...

Intro till Robotics

Robotar går snabbt från tecken och koncepten som endast återfinns i science fiction till del av vår vardag. Även om de kan ibland verkar vara elektromekaniska mysterier, blir personliga robotics mer tillgängliga varje dag! Billigare, högre kvalitet,...

Intro till LED Strips

LED strips är ett mycket roligt och effektivt sätt att ge massor av glöd och färg till ett projekt. I detta Instructable lär du dig de grundläggande typer av band och hur man kan koppla in dem till Intel Edison med Arduino breakout ombord. Dessa kret...

Intro till Arduino

An Arduino är en öppen källkod microcontroller utveckling styrelsen. På ren svenska, kan du använda Arduino att läsa sensorer och styra saker som motorer och lampor. Här kan du ladda upp program till denna styrelse som sedan kan interagera med saker...

Intro till EL (Electroluminescent) binder

På det centrala är EL wire en tunn, flexibel tråd överdrag i fosfor, när växelström (AC) är tillämpas det glöder ljust. Vill använda nätström, används växelriktare för att omvandla batteri (DC) att de nödvändiga kraven. EL tejp, paneler och EL färg (...

Avancerad CMD felsökning för det Pro

Om du inte har genomfört kriminalteknisk analys på Wi-Fi sedan denna fantastiska verktyg från Microsoft {Gloriously begravd i CMD} sparar du tid och också ge dig fantastiska detaljerad vy i nätverket. Vill du se alla de hemliga SSID: er i ditt område...

Början Microcontrollers del 2: Att skapa ett SPI gränssnitt från programmeraren till mikrokontroller

Hej, hoppas vi du gillade del 1 av början Microcontrollers. Vi ska flytta i del 2 och börja prata om gränssnitt och hur du får din microcontroller att kommunicera med en dator.Så, vid denna punkt, du bör känna till begreppet mikrokontroller (MCU). Du...