Jag är en crappy Software Coder när det kommer ner till det. Jag var inte uppmärksam när allt gick objektorienterat och mina rötter var alltid monteringsspråk och realtidsoperativsystem (RTO) ändå.

Så det är bara naturligt att jag skulle nå en riktig in-circuit-emulator (is) för att avsluta min lilla OBDII-buss till Speed ​​Pulse Generator Widget. Is är en maskinvaruanordning som används för att felsöka inbäddade system. Det kommunicerar med mikrokontroller på din styrelse, så att du kan se vad som händer genom att pausa utförandet och inspektera eller ändra värden i hårdvaruregistren. Om du vill vara bra på inbäddad utveckling måste du vara bra att använda in-circuch-emulering.

Inte bara får jag njuta av mina misstag i närheten av realtid, jag får göra en video om den.

Få data ut ur ett fordon

Jag har jobbat på en liten styrelse som kommer att ansluta till min bil och ge direkt tillgång till snabbhet som rapporteras på Controller Area Network (CAN BUS).

För att backa upp lite var min sista videopost om min inane-önskan att göra en liten montering som kunde ansluta till OBDII-porten på min lastbil och skapa en serie pulser som representerar bilens hastighet för att min GPS ska fungera mycket mycket mer exakt. Medan det fanns en tråd begravd djupt i de flera buntarna av ledningar som var anslutna till fordonets motorstyrningsmodul, har jag fattat ett beslut av många anledningar att skapa min egen signalkälla.

I hjärtat av mitt projekt är behovet av att konvertera OBDII-porten och det underliggande kan protokollet till en grundläggande variabel som representerar hastigheten och därefter döljer det värdet till en pulsström där frekvensen varierade baserat på hastighet. OBDII / CAN-protokollet hanteras av STN1110-chipet och omvandlas till ASCII, och jag använder en ATMEGA328 som som finns på en mängd Arduino’ish boards för ASCII till pulsomvandling. Jag använder hårdvaruavbrott för att styra signalutgången för rockfast, jitterfri timing.

Gå igenom processen med att använda en in-circuit-emulator i videon nedan och gå med mig efter pausen för några mer information om processen.

Hårdvaran

Jag reviderade styrelsen med tanke på att den senaste videon och tog bort stödet till de olika protokollen än burk, vilket är det icke-föråldrade protokollet i gänget. Genom att ta bort en massa delar jag kunde ändra paketstilen till genomgående hål som är mycket lättare för massor av hemhobbyister, så du kan lämna lödpastaen i “kylskåpet.

Rev 2

Rev 1

Den “andra kontakten” på din Arduino

Till skillnad från Arduino som är redo att prata med din USB-port När du tar ut den ur lådan, anländer Atmega Chips utan kännedom om hur man går och ladda ner kod, med andra ord har det inte en startlastare. Följaktligen har jag in-circuit-seriell-programmering (ICSP) -pinnarna dirigerade till en stifthuvud på mitt bräda så att jag kan programmera delen direkt.

På den här kontakten hittar du återställningen, vilket indikerar med den här rubriken, jag kan använda en sann is med hjälp av debugwire-protokollet. Med tanke på att den stora majoriteten av mönster som använder ett AVR-chip inte återställer återställningsstiftet för GPIO, är det en bästa stift att använda för is. Alla meddelanden under debugprocessen kommer att äga rum på återställningsstiftet.

Gå in i isen

När du skapar en dator från början finns det alltid scenen där inget fungerar. Enkelt uttryckt kan en mikroprocessorkrets inte fungera tills nästan alla delar av designen fungerar. RAM, ROM, och de underliggande bussarna behöver alla (mestadels) arbeta innan grundläggande saker kan göras. Som en maskinvaruingenjör med handel skulle jag alltid nå en is för att sparka av genomförandet. Först efter beta-frisättningen skulle isen börja samla damm i hörnet.

När det gäller ATMEGA är felsökningsförmågorna inbyggda i själva mikrokontrollern. Detta är en mycket mycket lättare implementering än de tidiga dagarna när vi var tvungna att ha en andra isolerad processor som körde off-board med sin egen lokala RAM / ROM.

En anteckning påpekade i videon är att en standard arduino’ish styrelse behöver ha filterkondensatorerna borttagna från återställningsraden för att tillåta höghastighetsdata på linjen för dess debugwire-användning.

Isen jag använder här är den som gjordes av Atmel, och är kompatibel med Atmel Studio, det finns också andra modeller som är tillgängliga som AVR-draken.

Is

Isen tillåter oss att ladda ner och singel steg vår kod medan du kan observera och skriva över RAM och I / O-register från tangentbordet. Vi kan njuta av programmet steg för steg eller titta under i den faktiska monteringskoden som genereras av kompilatorn. Vi kan njuta av variabler och platser direkt i RAM eller njut av Crange-motsvarigheterna. Det är också möjligt att hoppa över ett underrutinsamtal i förekomsten av att bara vilja se resultatet utan all bearbetning.

Det är värt din tid att se till och med en titt på en ismöjligheter i enction. Jag rekommenderar att du njuter av videon där debugging börjar.

Slutord

Den här videon handlade verkligen om att avsluta OBDII-kretsen så att jag inte hade tid att diskutera allt som en is kan göra, kanske kommer jag att göra ett inlägg som är dedikerat till bara is- och utvecklingsmiljön nästa gång.

You may also like...

Leave a Reply

Your email address will not be published. Required fields are marked *