Microcontroller interface aan Forrest Mims van elektrometer (2 / 3 stap)

Stap 2: Software


Er zijn drie hoofdonderdelen aan de software; (1) de setup (timer1, de havens en Comparateur), (2) de LED knipperen, en (3) het uitvoeren van de ADC-conversie.

De zekeringen ATtiny2313 moeten op de juiste wijze zijn ingesteld op de interne klok van 1Mhz te selecteren. De volgende link www.engbedded.com/fusecalc is nuttig voor het vereenvoudigen van de enigszins verwarrend omgekeerde logica die wordt gebruikt voor het programmeren van de zekering. Het fuse.txt bestand hieronder toont het commando dat ik gebruikt voor het programmeren van de zekeringen.

Een ander ding is dat de flits programmering poorten met PORTB, overlappen zodat u de LEDs loskoppelen wellicht terwijl de ATtiny2313 programmeren. De build-instructies staan in het bestand build.txt hieronder. (Net als een geestelijke gezondheid te controleren, ik printen de grootte van de code en de variabele kaart.)

Ik gebruikte een meerkanaals scope voor foutopsporing. Het zou moeilijk voor me te vinden sommige van de 'bugs' anders geweest zijn. Het kostte me een tijdje om erachter te komen dat de LED knipperen was interfereren met de conversie. Om te debuggen deze kwestie, die ik verdacht was gerelateerd aan de interrupts, ik gebruikte de ongebruikte poort van PORTD en stel deze aan het begin van de interrupt en unset het vlak voor het einde. Het probleem was dat, terwijl de code knipperen in de interrupt service routine makkelijk was te lezen en te begrijpen, het duurde ongeveer 500μS uit te voeren. Ik herschreef de code, zodat er minder lijnen (maar moeilijker en minder begrijpelijk), en dit werd minder een probleem. Ik heb ook besloten om het uitschakelen van de knipperen-interrupts tijdens de conversie.

De opstelling is ongecompliceerd, timer1 wordt gebruikt voor het activeren van de knipperen interrupt (1000 cycli op 1Mhz). De comparator is ingeschakeld om te activeren een opname timer op een stijgende rand. Alle stukjes PORTB en PORTD zijn aanvankelijk tri-vermeld. De LED-stations (6 bits op PORTB, 4 op PORTD) zijn ingeschakeld. De besturen van de lading en geen kwijting weerstanden poorten zijn ingesteld op hoge en lage respectievelijk. De condensator wordt geloosd, waarna de interrupts zijn ingeschakeld. Dit wordt gevolgd door een oneindige lus van conversies gevolgd door het resultaat weer te geven.

De LED knipperen is conceptueel eenvoudig, maar enigszins gecompliceerd doordat het de bits zijn verdeeld over twee poorten. Het knipperen werkt in een cyclus van 10mS. In de eerste cyclus, LED0 & LED1 zijn ingeschakeld, in de volgende cyclus, LED1 & LED2 zijn ingeschakeld, en zo verder, totdat de laatste cyclus waarin LED9 & LED0 zijn ingeschakeld. De inschakelen maskers worden opgeslagen in een vooraf berekende statische matrix display_mask_B en display_mask_D en de interrupt routine cycli door elk van de 10 maskers.

De ADC-conversie werkt door het uitschakelen van de timer1-interrupt, opladen van de condensator (en opnemen van de starttijd die de timer1-waarde) totdat de Comparateur-output is ingesteld. Dan de condensator wordt aangezuiverd voor 5 * R_DIS * C_CHR, dat ongeveer 60μS is. De tijd die nodig is voor de conversie wordt gemeten door de timer1-interrupt vastleggen (veroorzaakt door een stijgende rand op de uitgang van comperator). De timer1-interrupt is ingeschakeld en het tijdsverschil berekend. De berekening is eenvoudig omdat de conversie minder dan 1 MS duurt. (Vergeet niet dat de teller om elke 1000-teken terugloopt.)

Aanvankelijk probeerde ik kalibreren van de uitvoer door te meten en computing, maar het begon te krijgen te ingewikkeld, dus heb ik besloten om tijdelijk het resultaat met behulp van een debug_led_value-routine (dat weergegeven de waarde 10-bits binaire, houd het display voor een tweede) weer te geven, en spelen met een static. Dit gaf een (subjectieve) aantal keren van 136-351 teken. Ik schreef sommige vertakkende code toewijzen van dit bereik naar een getal tussen 0 en 10, en gebruikt dit om de balken weer te geven. Dit werkte naar behoren. (Ik gekalibreerd het apparaat vóór montage, aangezien dit betrof de ATtiny2313 reflashing.)

Gerelateerde Artikelen

INTERFACING een DOT-MATRIX van 8 X 8 LED DISPLAY met een AT89C51 MICROCONTROLLER

INTERFACING een DOT-MATRIX van 8 X 8 LED DISPLAY met een AT89C51 MICROCONTROLLER

Interfacing op een 8 x 8 dot matrix annuleerteken zitten vermaak en is gemakkelijk om te spelen met, dus laten we recht erin!Stap 1: Wat moet je:AT89C51 MICRCONTROLLER8 X 8 DOT MATRIXEEN DEVELOPMENT BOARD OFDOT MATRIX MODULEStap 2: Principes die je m
De wereld aan de kant van de Microcontroller

De wereld aan de kant van de Microcontroller

Toekomstige elektronica heeft een breed scala van microcontrollers. Het is ontworpen om voor ingebedde toepassingen worden gebruikt. Microcontrollers (soms afgekort μc, uc of MCU ) zijn toegewijd een kleine en goedkope computers in de elektronica die
Hoe aan de macht van de oogst van een Audio Jack

Hoe aan de macht van de oogst van een Audio Jack

maken We een circuit dat oogsten van de macht van een audio-aansluiting.De toenemende prevalentie van smartphones, zelfs bij de ontwikkeling van de regio's van de wereld, betekent dat het gebruik van een audio-aansluiting voor macht zinvol dat indivi
RepWrap - apparaat aan het bijhouden van duur en herhalingen voor fysiotherapie oefeningen (breadboarded prototype)

RepWrap - apparaat aan het bijhouden van duur en herhalingen voor fysiotherapie oefeningen (breadboarded prototype)

ik heb gekregen een aantal oefeningen te doen door de fysiotherapeut, maar ik ben afval op hen in elk klein ding ik doen kan om ze te maken minder van een karwei is een goede zaak doen.Ik prototyped een eenvoudige arduino apparaat te verzorgen van he
Draadloze verbinding toevoegen aan uw project van de Rpi terwijl weg van huis.

Draadloze verbinding toevoegen aan uw project van de Rpi terwijl weg van huis.

Raspberry Pi.Knippen het snoer, neem uw project met u overal waar die u gaat.Er zijn vele projecten van de Raspberry pi als de web bestuurde robot, of webcam server. Dit vereist een verbinding met uw huiswifi zin die u zijn beperkt tot een kleine afs
BB8 gebouwd met Lego Star Wars-delen... En nog het beweegt aan het einde van deze tutorial

BB8 gebouwd met Lego Star Wars-delen... En nog het beweegt aan het einde van deze tutorial

Ik had dit model Lego ideeën ingezondenhttps://Ideas.Lego.com/projects/127584Als je deze Lego-versie van BB8, please vote voor dit project.Log in met uw sociale media-accounten voor het stemmen.Merci te miljoen!Ik keek "Een nieuwe hoop" in 1977
Verwijder de willekeurige links aan het einde van uw video.

Verwijder de willekeurige links aan het einde van uw video.

Met al het harde werk die u in het maken van een Instructable zet, is er geen reden om niet toe te voegen een eenvoudige 6 HTML-code van het teken in elke video-link dat u insluiten. Stoppen met het weergeven van andermans video's aan het einde van u
5 gemakkelijke stappen aan het maken van een levende succulente krans

5 gemakkelijke stappen aan het maken van een levende succulente krans

U kunt het maken van deze prachtige krans in 5 eenvoudige stappen en minder dan een uur!Stap 1:Zoals u weet, ben ik een sappige maniak. Ik heb veel van hen in mijn tuin en in potten geplant. Ik springen op de kans om iets met behulp van deze interess
Hoe aan het licht van uw 3D-Printer

Hoe aan het licht van uw 3D-Printer

De titel is enigszins misleidend... de juiste lange is had moeten zijn:Hoe u een RGB LED strip koppelt aan uw RepRapr Prusa i3 3D Printer acryl Framevoor beter/prachtige verlichtingAnyway, dit instructable begeleidt u door het proces van verlichting
Hoe aan de macht van een ATX Power Supply zonder een PC!

Hoe aan de macht van een ATX Power Supply zonder een PC!

In dit instructable ik zal u tonen hoe voor het aandrijven van een ATX Power Supply zonder een PC.Misschien in sommige gevallen wilt u testen een oude cd-rom-station of iets anders.Alles wat je hebt is een PSU van een oude PC een een draad.Hier zal i
Een verschillende manier aan het dieet van Daniël: gezonde voeding van de Bijbel

Een verschillende manier aan het dieet van Daniël: gezonde voeding van de Bijbel

heb ik een dieet dat lijkt op wat Daniel aten tijdens zijn tijd in Babylon ontworpen. De recepten heb ik gegeven lijst dingen die niet hieronder maar kan worden verwijderd als u wilt. Het is gebaseerd op niet de exacte dezelfde. Ik ben niet perfect.
Prelude aan automatisering - hacken van een Remote

Prelude aan automatisering - hacken van een Remote

Een paar weken geleden, lees ik op een Arduino project een domoticasysteem te creëren. Wordt een elektronische hobbyist, wilde ik zich bewust zijn van de grenzen van mijn vaardigheden voordat u probeert een project zoals dit.Één van mijn grote pijnpu
Waking Up aan de rechterkant van het Bed licht

Waking Up aan de rechterkant van het Bed licht

Hier is een sensor-licht dat u weten welke temperatuur er buiten het moment u stap laten zal uit bed... en voorkomen dat u folteringtechnieken uw teen in het proces (Nou ja, ik hoop).Het ConceptHet verhaal begint met een tragedie. Ik heb uit bed op e
"Kiteman" aan het einde van uw vingertop!

"Kiteman" aan het einde van uw vingertop!

Heb je niet altijd wilde uw zeer eigen "Kiteman" vinger marionet aan het einde van uw vingertop, klaar om te doen uw elke gril?. Hij verdubbelt ook als decoratie voor het einde van je potlood? Breng hem terug naar school - verbaas uw vrienden.Go