calcul de fréquence du processeur 680X0 ?

11 sujets de 1 à 11 (sur un total de 11)

  • Sharynn

      #4692

      Je cherche un petit bout de source en ASM me permettant de calculer la vitesse du processeur.. avec lequel je trouverai 7 Mhz pour un A500 et 14 mhz pour un A1200, ou quelques chose de semblable…

      une sorte de boucle faisant appelle au clock-time qui me donnera un chiffre proportionnel a la vitesse !!

      ou

      Une library système interne le fait-elle (style EXEC), car je n’ai pas trouvé de doc sur ce sujet..!!!

      Merci les potos…

      Amos un jour, Amos Toujours
      -----------------------------------
      AmOS4 - Library Amos sous C (Os3-Os4)

      Sharynn

        #81885

        Oui je cherche ca pour étalonner une library graphique car sous A500 ca tourne normalement et sous 68060 c’est déjà plus rapide (trop peu être) et Winuae.. le temps est tellement etendu que l’effet arrive à la fin avant que l’on puisse voir quelque chose !!!

        :-D

        NDBatteMan : Évitez les doubles posts. Pour cela, utilisez le bouton « éditer ».

        Amos un jour, Amos Toujours
        -----------------------------------
        AmOS4 - Library Amos sous C (Os3-Os4)

        logo

          #81886

          Tu ne peux pas synchroniser ça avec la vbl plutôt ?

          PowerMac - G5 2.0 GHz - 1.7 Go RAM - Radeon 9600P 128 Mo - MorphOs 3.13 et Peg2 - G4 RIP
          Mac mini - G4 1.42 GHz - 1 Go RAM - Radeon 9200 32 Mo - MorphOs 3.9
          WinUAE sur HP Core2 Quad 8200
          Epave de Mist FPGA remplacé par un Sidi
          A1200 malade 😉 et A500 512+512Ko RAM Kickstart 1.3

          Sharynn

            #81887

            La VBL ne synchronise-t-elle pas uniquement le balyage écran ??

            Amos un jour, Amos Toujours
            -----------------------------------
            AmOS4 - Library Amos sous C (Os3-Os4)

            Gilloo

              #81888

              Tu peux toujours regarder dans le code source de whichamiga

              d’harry Sintonen

              http://aminet.net/package/util/moni/WhichAmiga

              il détermine la fréquence mais il met 3 secondes en coupant tous les DMA…

              logo

                #81889

                En pal, tu as 50 rafraichissements par seconde, donc si tu synchronises un évènement, quel qu’il soit, avec l’affichage, il tournera à la même vitesse, peu importe la puissance CPU (à condition qu’elle soit suffisante).

                Maintenant, certains programmeurs confirmés qui « hantent » ce forum, auront peut-être une meilleure idée pour « timer » tes programmes.

                PowerMac - G5 2.0 GHz - 1.7 Go RAM - Radeon 9600P 128 Mo - MorphOs 3.13 et Peg2 - G4 RIP
                Mac mini - G4 1.42 GHz - 1 Go RAM - Radeon 9200 32 Mo - MorphOs 3.9
                WinUAE sur HP Core2 Quad 8200
                Epave de Mist FPGA remplacé par un Sidi
                A1200 malade 😉 et A500 512+512Ko RAM Kickstart 1.3

                Baba

                  #81890

                  La synchro la plus stable sur Amiga c’est le vbl.

                  modifies le source du wait_vbl() ici :

                  https://www.amigaimpact.org/modules/newbb/viewtopic.php?viewmode=flat&topic_id=2212&forum=2

                  tu rajoutes un compteur pour compter les cycles en 1 balayage et tu peux en déduire la vitesse du proc en fonction de la valeur du compteur :

                  en langage E (avec de l’assembleur)

                  PROC main()

                  DEF dx : REG

                  MOVE.L #0,dx

                  wait1:

                  CMP.B #$80,$DFF006

                  BNE.S wait1

                  wait2:

                  ADD.L #1,dx

                  CMP.B #$90,$DFF006

                  BNE.S wait2

                  WriteF(‘Resultat :dn’,dx)

                  ENDPROC

                  Chez moi le résultat est variable, mais 9 fois sur 10 j’obtiens :

                  602 sur mon 1200 nu

                  904 sur mon 1200 avec la carte accélératrice Blizzard IV

                  307 sur UAE ouvert avec un Workbench PAL

                  de 3900 à 5200 sur un Workbench en UAEGFX.

                  Je ne sais pas si ces registres ont vraiment du sens sur un UAEGfx…

                  Sharynn

                    #81891

                    Merci beaucoup.. je vais travailler dans ce sens… avec le registre $DFF006 dans un premier temps!!!!

                    comme suit :

                    VBL:

                    tst.b $dff006

                    bne.s vbl

                    cela figera l’affichage en trame de balayage !!!

                    c’est déjà très bien !!!

                    Amos un jour, Amos Toujours
                    -----------------------------------
                    AmOS4 - Library Amos sous C (Os3-Os4)

                    Baba

                      #81892

                      Attention, $dff006 contient le poids faible de la position du faisseau de balayage de l’écran.

                      Le poids fort est dans $dff005, donc si tu as un écran qui fait plus de 255 lignes (et je crois que c’est forcément le cas puisque ce n’est pas une coordonnée pixel), $dff006 passe 2 fois à 0 sur la même image : Une fois en début de balayage ($dff005 vaut 0), et une fois sur la fin ( $dff005 vaut 1 à ce moment. Cest un octet, ne teste pas le mot ou un double, le .b est indispensable)

                      Bon code !

                      Sharynn

                        #81893

                        Merci, j’ai testé et j’ai de résultat très aléatoire.. mais je vais filtre le tout et remanier cette routine..;

                        Merci encore !

                        Amos un jour, Amos Toujours
                        -----------------------------------
                        AmOS4 - Library Amos sous C (Os3-Os4)

                        Baba

                          #81894

                          Sur le vrai A1200, ca ne pose pas de problème :

                          Voici la procédure remaniée et son exécution :

                          PROC main()

                          DEF dcpt : REG ,pos : REG,i, tab_res[16] : ARRAY OF LONG

                          Forbid()

                          MOVE.L #0,dcpt

                          FOR i := 0 TO 15

                          pos := i* $10

                          wait:

                          ADD.L #1,dcpt

                          CMP.B $DFF006,pos

                          BNE.S wait

                          tab_res := dcpt

                          ENDFOR

                          WriteF(‘Résultat : ‘)

                          FOR i := 1 TO 15

                          WriteF(‘d : dn ‘,tab_res,tab_res-tab_res[i-1])

                          ENDFOR

                          Permit()

                          ENDPROC

                          Résultat : 9844 : 902

                          10746 : 902

                          11649 : 903

                          15506 : 3857

                          16407 : 901

                          17310 : 903

                          18213 : 903

                          19116 : 903

                          20019 : 903

                          20922 : 903

                          21825 : 903

                          22728 : 903

                          23631 : 903

                          24534 : 903

                          25437 : 903

                          De toutes façon, si tu veux une belle animation sur Amiga, il faut la synchroniser avec le vbl et utiliser un double buffer. (image visible et image invisible à permuter à chaque balayage)

                        11 sujets de 1 à 11 (sur un total de 11)

                        • Vous devez être connecté pour répondre à ce sujet.

                        Forums AmigaOS, MorphOS et AROS Développement calcul de fréquence du processeur 680X0 ?

                        Amiga Impact