Fråga:
Vad är det bästa sättet att enhetstesta min kod utan styrenhet?
Hardik Thaker
2014-02-12 11:16:33 UTC
view on stackexchange narkive permalink

Jag vill testa min Arduino-kod. Helst vill jag köra och testa min kod utan att ladda upp den till tavlan. Vilka verktyg eller bibliotek kan hjälpa mig med detta?

Det finns en Arduino-emulator som kan vara användbart, men den verkar ännu inte vara redo att användas.

Enhetstestning och körning av koden i en emulator är dock helt olika saker.
Ja, det finns två frågor här, den ena handlar om enhetstestning av arduino-kod och den andra om emulatorer för att arduino ska köra koden. Skapa kanske en specifik fråga för var och en, speciellt enheten som testar en som inte har behandlats tidigare.
Tre svar:
Ahmed Hamdy
2014-02-14 01:16:05 UTC
view on stackexchange narkive permalink

Du kan enkelt simulera din Arduino-kod med den berömda Proteus ISIS.
Du behöver bara söka efter det specifika Arduino-simuleringsbiblioteket för Proteus.

Här är du en liten handledning om hur man gör den här saken:

Först , identifiera sökvägen som Arduino IDE genererar hex-filen till?
för exempel om du använder den officiella IDE hittar du hex-filplatsen i "arduino IDE-sökväg / lib / preferenser.txt"
Eller om du använder Arduino ERW som jag rekommenderade mest på windows! Så du kan helt enkelt öppna utdatamappen med "Skiss> Kopiera HEX-fil som sökväg".

Andra , ladda ner Arduino-biblioteket från Här. Kopiera sedan ARDUINO.LIB och ARDUINO.IDX till mappen "bibliotek" i installationskatalogen Proteus.

Tredje , öppna ISIS och du borde kunna hitta komponenten.

Vänligen hitta den här bilden av kalkylbladet efter att ha avslutat stegen ovan, och simuleringen fungerar bara bra! Simulating Arduino Uno on Proteus ISIS

Och som ett försprång för dig, vänligen hitta detta lilla memo I förberedd för Arduino Uno Pins Layout :

  0-14: I / OA0-A5: AnalogVi kan använda analog som digital: ========= ====================== Pinout: 00: Rx | Kan inte användas som I / O om jag skrev i koden Serial.begin01: TX | 02: Interrupt03: Interrupt & PWM04: 05: PWM06: PWM07: 08:09: PWM10: PWM & SPI11: PWM & SPI12: : SPIA0: A1: A2: A3: A4: TWIA5: TWI  
lasote
2014-04-02 02:55:20 UTC
view on stackexchange narkive permalink

Jag försöker alltid isolera hårdvarulogiken från resten av domänlogiken.

Klasser (eller vad som helst) från domänlogik kan programmeras i c ++ (med kända arduino-begränsningar som undantag eller st lib) och kan testas med gtest. När dessa klasser testas, helt enkelt instans från arduino-programmet exklusive huvud med test.

Om ditt projekt är ren hårdvara hjälper inte den här lösningen dig mycket, men om du har egna algoritmer, protokoll .. .etc, testa dem med Google-test sparar timmar av ombordtestning och minnesproblem med oväntade resultat och din programvara kommer att få kvalitet.

Ja, det här är en viktig punkt i SW dev som nästan alltid hoppas över i arduino-utveckling. Att testa små enheter av din kod kan spara timmar om ditt projekt har komplexa funktioner eller algoritmer.
Connor Wolf
2014-02-12 12:29:21 UTC
view on stackexchange narkive permalink

Har du tittat på AVR-simulatorn som ingår i Atmel Studio? Med tanke på att Atmel designade processorn kan simuleringen mycket väl köra HDL som användes för att producera MCU själv. sluta förmodligen tänka på din enhet som en "Arduino", utan snarare "En ATmega MCU på ett PCB". Det finns mycket mer information och verktyg tillgängliga om ATmega-processorer i allmänhet än Arduinos.



Denna fråga och svar översattes automatiskt från det engelska språket.Det ursprungliga innehållet finns tillgängligt på stackexchange, vilket vi tackar för cc by-sa 3.0-licensen som det distribueras under.
Loading...