qsecofr:
In probabilità, ma senza curiosare molto sui manuali atmel, possono esistere delle operazioni assembly che richiedono un ciclo in più o in meno nei due processori ma le differenze, ammesso che ci siano, saranno del tutto secondarie.
Premesso che il tallone d'Achille degli AVR è proprio il fatto che molte istruzioni richiedono 2-3 cicli macchina, il che abbassa non poco la velocità media rispetto ai 16 Mips teorici @16 MHz, però il core del 2560 è praticamente lo stesso del 328 con 4 istruzioni assembly in più, tutte le altre sono praticamente identiche come uso e cicli macchina.
Lo stesso speed test evidenzia bene la cosa non tanto sulla nop quanto su funzioni complesse come la itoa() che sono pesanti da eseguire e richiedono molti cicli macchina, il tempo di esecuzione è lo stesso.
Ma allora se il processore è pressochè uguale la uno va come la mega? No: dipende da cosa ha da fare il processore in più rispetto al programma: la mega ha più porte da controllare (ed imho tanto tanto incidono i timer però attendo di fare le prove stasera).
Infatti ho ipotizzato la presenza di ulteriori processi di sistema, ovvero gestione di interrupt e funzioni di base, non presenti sulla UNO che pesano sul ciclo della 2560.
Intanto un dato certo, ho fatto il test dello sketch vuoto, lo stesso che ho usato sulla UNO, sulla 2560 ed ecco la prima sorpresa, la velocità è "solo" 998 Kz, un calo sensibile però non è certo questo che incide sulla velocità generale.
Posso pure confermare il dato rilevato da Pablos con lo sketch di Tuxduino, pure sula mia 2560 gira a circa metà velocità, e questo si che è preoccupante perché da un punto di vista teorico non dovrebbe essere possibile.
Per capirci qualcosa tocca analizzare l'assembly del programma compilato per la UNO e quello per la 2560, per i test ho utilizzato l'IDE 1.0.3 con il compilatore di serie.