Uppskatta beräkningstid på en arduino?

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
mishral
Inlägg: 23
Blev medlem: 13 december 2011, 07:38:31

Uppskatta beräkningstid på en arduino?

Inlägg av mishral »

Jag har ett problem med en robot baserad på en Arduino atmega 2560.
För att kunna bekräfta att jag har rätt angående problemet så skulle jag vilja ta reda på hur lång tid det tar att köra min kod.
Hur gör jag detta lättast?

Först så använde jag print-funktionen för att skriva ut looptiden till fönstret på datorn.
Men denna operation tar ju också tid och vad jag har förstått tar den lång tid på en Arduino.

Så... Något tips på hur man kan beräkna detta?
Användarvisningsbild
Klas-Kenny
Inlägg: 11824
Blev medlem: 17 maj 2010, 19:06:14
Ort: Växjö/Alvesta

Re: Uppskatta beräkningstid på en arduino?

Inlägg av Klas-Kenny »

Skulle ju kunna växla en utgång mellan 1 och 0 vid olika bestämda tillfällen i koden och kolla utgången med en frekvensräknare (Eller scope för den delen) och beräkna utifrån det.
mishral
Inlägg: 23
Blev medlem: 13 december 2011, 07:38:31

Re: Uppskatta beräkningstid på en arduino?

Inlägg av mishral »

Ah! Det hade ju vart en smart lösning!
Dumt bara att jag inte har tillgång till varken scope eller frekvensräknare längre.
blueint
Inlägg: 23238
Blev medlem: 4 juli 2006, 19:26:11
Kontakt:

Re: Uppskatta beräkningstid på en arduino?

Inlägg av blueint »

En metod är att ändra i koden för en emulator så att den räknar antal instruktioner. T.ex Bosch / pcemu för x86. Finns säkert motsvarande för din MCU.
H.O
Inlägg: 5895
Blev medlem: 19 mars 2007, 10:11:27
Ort: Ronneby

Re: Uppskatta beräkningstid på en arduino?

Inlägg av H.O »

Om du har en ledig hårdvarutimer tillgänglig, nollställ och starta den precis där/när du går in i sektionen du vill mäta och stoppa den precis där/när du lämnar. Läs sedan timerns värde och printa det.
sodjan
EF Sponsor
Inlägg: 43245
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Uppskatta beräkningstid på en arduino?

Inlägg av sodjan »

Har inte Arduino någon simuleringsmiljö?
Där kan man normalt sätta breakpoints på lämpliga
ställer (kring det man vill mäta tiden på) och bara läsa
av klockan. Det brukar finnas båda faktisk tid (om man
har angett MHz'en korrekt) och antal förbrukade cykler.

EDIT:
Ett fel rättat. "Mhz" skulle så klart vara "MHz".
Hoppas ingen missförstog det hela...
Senast redigerad av sodjan 8 september 2012, 19:18:03, redigerad totalt 1 gång.
blueint
Inlägg: 23238
Blev medlem: 4 juli 2006, 19:26:11
Kontakt:

Re: Uppskatta beräkningstid på en arduino?

Inlägg av blueint »

http://www.atmel.com/devices/atmega2560.aspx
http://www.atmel.com/Images/doc2549.pdf

8-bit AVR med 16 MIPS vid max 16 MHz med "most single clock cycle execution"..

Prova att kompilera din kod till någon MCU som liknar din t.ex ATmega1284a? och kör den med simulavr.

Sedan kan man plocka ut antalet instruktioner från simulavr:
Re: [Simulavr-devel] Clock cycles

Alternativt antal klockcykler.

Btw, finns ingen enhet "Mhz" .. ;)
Användarvisningsbild
Micke_s
EF Sponsor
Inlägg: 6741
Blev medlem: 15 december 2005, 21:31:34
Ort: Malmö

Re: Uppskatta beräkningstid på en arduino?

Inlägg av Micke_s »

Annars kör en till arduino som övervakar hur länge en pinne är hög...
Användarvisningsbild
Walle
Moderator
Inlägg: 7701
Blev medlem: 14 december 2004, 10:32:18
Ort: Stockholm

Re: Uppskatta beräkningstid på en arduino?

Inlägg av Walle »

Flyttade tråden till kategorin Mikroprocessorer.

/Walle
Användarvisningsbild
LHelge
Inlägg: 1772
Blev medlem: 2 september 2007, 18:25:31
Ort: Östergötland
Kontakt:

Re: Uppskatta beräkningstid på en arduino?

Inlägg av LHelge »

unsigned long start, end;

start = micros() ;
// kör kod
end = micros();
Serial. println(end-start);

Men jag tror inte Arduino är rätt verktyg om det är viktigt att exekveringstiden är deterministisk.
Skriv svar