logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Obliczanie liczby instrukcji na sekundę w AVR 2313 z kwarcem 10MHz

marianob 17 Mar 2006 13:42 1143 4
REKLAMA
  • #1 2424901
    marianob
    Poziom 11  
    Posty: 24
    Ocena: 3
    Wtiam. Mam prośbę. Muszę dokładnie obliczyć pętle w AVR 2313. Mam kwarc 10Mhz. Nie jestem pewien czy dobrze rozumiem. 1 Instrukcja wykonuje sie w takim razie przez 1/10.000.000 s ??
  • REKLAMA
  • #2 2424915
    hunterhouse
    Poziom 26  
    Posty: 893
    Pomógł: 84
    Ocena: 3
    proste instrukcje wykonują cię co jeden cykl zegarowy, ale ijstrukcje skoków i warunkowe juz 1,2 lub 3 cykle.
    zajżyj sobie do noty katalogowej twojego procka tam jest tabelka komend asemblerowych i jest też podane ilość cykli potrzebna do wykonania.
    najlepiej sprawdzić ile czasu potrzeba na wykonanie jakiejś pętli poprzez symulator zawarty w AVRStudio
  • REKLAMA
  • #3 2426018
    trojan5
    Poziom 12  
    Posty: 55
    Pomógł: 1
    Ocena: 2
    Dołącze się do tematu i zapytam przedmócę jak w AVR Studio sprawdzić ile będzie się wykonywał jakiś fragment programu np pętla?
  • REKLAMA
  • #4 2426159
    max_gg
    Poziom 26  
    Posty: 631
    Pomógł: 83
    Ocena: 26
    Witam!

    Można to sprawdzić w prosty sposób:
    Z boku rozwinąć zakładkę Processor, ustawić breakpoint na początku interesującego fragmentu. Rozpocząć symulację - zakończy się na breakpoint.
    Skasować licznik czasu - "stop watch" i "cycle counter". Ustawić kursor na końcu interesującego fragmentu, i kliknąć "run to cursor".

    Pozdrawiam!
  • #5 2426184
    lelekx
    Poziom 30  
    Posty: 1220
    Pomógł: 158
    Ocena: 90
    Istotne jest, abyś kod programu miał rozpisany w Assemblerze - nawet jeśli programujesz w C, Bascomie lub czymś innym, po kompilacji możesz podglądnąć otwierając plik BIN w np. AVR Studio lub korzystając z dowolnego disassemblera.

    Każda instrukcja ma określony czas wykonania, ten czas może być różny w zależności od warunków wykonania instrukcji (np. przy skokach warunkowych). Musisz przy każdej instrukcji w programie, lub istotnym fragmencie, dopisać ilość cykli potrzebnych do jej wykonania i zsumować.

    przykład:
    
          clr r16     ; 1 cykl
    petla:
          nop         ; 1 cykl
          nop         ; 1 cykl
          dec r16     ; 1 cykl
          brne  petla ; 2/1 cykl
    


    I ten program wykona się w:
    1 + 256*(1+1+1) + 255* 2 + 1= 1280
    cyklach - 1 cykl zajmie clr R16, 256 razy powtórzone 3 cykle (2x nop + 1x dec r16), 255x brne 2 cykle ( gdy został wykonany skok), 1 cykl brne (gdy nie został wykonany skok)

    Przy częstotliwości 1MHz ten fragment będzie się wykonywał 1,28ms
REKLAMA