Sida 1 av 1
Uppskatta beräkningstid på en arduino?
Postat: 8 september 2012, 18:07:29
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?
Re: Uppskatta beräkningstid på en arduino?
Postat: 8 september 2012, 18:16:03
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.
Re: Uppskatta beräkningstid på en arduino?
Postat: 8 september 2012, 18:18:10
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.
Re: Uppskatta beräkningstid på en arduino?
Postat: 8 september 2012, 18:21:18
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.
Re: Uppskatta beräkningstid på en arduino?
Postat: 8 september 2012, 18:33:59
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.
Re: Uppskatta beräkningstid på en arduino?
Postat: 8 september 2012, 19:03:21
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...
Re: Uppskatta beräkningstid på en arduino?
Postat: 8 september 2012, 19:15:11
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" ..

Re: Uppskatta beräkningstid på en arduino?
Postat: 8 september 2012, 19:26:42
av Borre
Re: Uppskatta beräkningstid på en arduino?
Postat: 8 september 2012, 19:35:29
av Micke_s
Annars kör en till arduino som övervakar hur länge en pinne är hög...
Re: Uppskatta beräkningstid på en arduino?
Postat: 9 september 2012, 15:28:18
av Walle
Flyttade tråden till kategorin Mikroprocessorer.
/Walle
Re: Uppskatta beräkningstid på en arduino?
Postat: 9 september 2012, 15:51:04
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.