Vsm picaxe

misterkelo

New Member
Bonjour,

Je voulais savoir si des gens avaient acheté le logiciel VSM PICAXE.
Peut on simuler avec des PCF8574.
Est il complet cote composant.
Qu'en pensez vous?

Merci de vos reponses.

@+
 

PieM

Senior Member
Bonjour et bienvenue,

Vous pouvez le télécharger en mode démo. Vous avez accès à toute la bibliothèque de composants (+ 12000)
A priori la simulation avec le PCF8574 est possible, mais à confirmer.
 

fuse

Senior Member
Bonjour à tous,

En tout cas, la bibliothèque de VSM dispose du PCF8574. Il n'y a aucune raison que cela ne fonctionne pas. Prudent (comme PieM), la simulation doit être confirmée...
 

GM39

Senior Member
voilà un test effectué avec le code suivant :
Code:
	hi2csetup i2cmaster, $40,i2cslow,i2cbyte
	b2=1

	'test 8 sorties DSW1 sur off
	for b1=1 to 8
		hi2cout 1,(b2)
		b2=b2*2
		pause 500
	next b1
	hi2cout 1,(0)	

	pause 500

	'test 8 entrées
	do	
		hi2cin $ff,(b3)
   		sertxd (#b3,CR,LF)  	
   		pause 1000
   	loop
et le circuit :
test_pcf8574.jpg

Je ne sais pas si le fonctionnement est conforme au circuit réel
 

GM39

Senior Member
Sinon concernant VSM pour le bus i2c, le mode esclave des picaxe n'est pas actuellement simulé.
Il existe un composant primitif pour créer ses propres composants i2c, mais n'est pas documenté malheureusement (ou alors c'est bien caché).

Il doit y avoir une nouvelle version en préparation puisque ISIS est passé en v8
 

GM39

Senior Member
Le point sur un exemple récent : 20M2 et AXE033
avec le code suivant :
Code:
do
	bintoascii TIME,b8,b9,b10
	serout C.7,N2400_4,(254,128,b8,b9,b10,"             ")
	toggle B.0
loop
Cela fonctionne parfaitement :
- 82ms entre fronts de B.0
- le conflit serout/time n'est évidement pas reproduit
 
Last edited:

GM39

Senior Member
Le point avec un autre exemple (08M2) :
Comme j'avais un peu de temps après ma dernière traduction (?), je me suis livré a quelques mesures comparatives sur des programmes avec test multiples: avec if then else if..., l'emplacement des goto et select case...
Mesures effectuées sur 08M2+ à 4MHz
Code:
'Test1 *******************	
debut:
 b1 = 245
 High C.2				
					
		If b1>242 Then
			b9=10					
			Goto Suite2
		ElseIf b1>229 Then			
			b9=20 
			Goto Suite2
		ElseIf b1>217 Then
			b9=30
			Goto Suite2
		ElseIf b1>204 Then
			b9=40
			Goto Suite2
		ElseIf b1>191 Then
			b9=50
			Goto Suite2
		ElseIf b1>178 Then
			b9=60
			Goto Suite2
		ElseIf b1>166 Then 
			b9=70
			Goto Suite2
		ElseIf b1>153 Then
			b9=80
			Goto Suite2
		ElseIf b1>140 Then
			b9=90
			Goto Suite2
		Else
			b9=99					
		End If

	
Suite2:

Low C.2
pause 300
goto debut
test 1 avec sortie au premier test (b1 = 245) ; temps d'éxécution : 2.250 ms
test 2 avec sortie au dernier test (b1 = 130) ; temps d'éxécution : 11.714 ms
test 1 : temps d'exécution : 400µs : entre fronts montants de C.2 : 300,6 ms
test 2 : temps d'exécution : 1,10ms : entre fronts montants de C.2 : 301,4 ms

avec setfreq m32

test 1 : temps d'exécution : 400µs : entre fronts montants de C.2 : 38,1 ms
test 2 : temps d'exécution : 1,10ms : entre fronts montants de C.2 : 38,75 ms


- setfreq n'est pris en compte que pour pause
 

PieM

Senior Member
test 1 : temps d'exécution : 400µs : entre fronts montants de C.2 : 300,6 ms
test 2 : temps d'exécution : 1,10ms : entre fronts montants de C.2 : 301,4 ms

avec setfreq m32

test 1 : temps d'exécution : 400µs : entre fronts montants de C.2 : 38,1 ms
test 2 : temps d'exécution : 1,10ms : entre fronts montants de C.2 : 38,75 ms
Je ne comprends pas trop ! 400 µs de temps d'éxécution de quoi ? et 300 ms quel que soit le test sont utilisés à quoi ?
Les mesures faites personnellement avec un analyseur sur picaxe réel sont entre un front montant et un front descendant, le temps à déduire étant celui d'exécution d'u LOW C.2
400 µs pour l'execution du test mini correspond à peu près au temps d'éxécution d'un LOW C.2 sans rien d'autre.
quant au fait de trouver la même valeur à 4 MHz et à 32 MHz, ça ne correspond absolument pas à la réalité des choses.

Ceci montre à l'évidence que l'estimation des temps d'éxécution sur machine virtuelle n'a aucun sens.
 

GM39

Senior Member
400µs est à comparer avec le 2,250ms et 1,10ms avec 11,714 et sont indépendants de setfreq dans la simulation.

Les 300ms sont entre 2 fronts montant de C.2, c'est à dire pour une boucle qui contient pause 300

Il apparait qu'effectivement la simulation ne permet pas d'avoir d'information sur le temps de traitement réel hormis pour les instructions destinées à la gestion du temps (ou pour la durée des transmissions).

Elle permet cependant de comparer 2 solutions, ce qui est quand même intéressant.
 

jojojo

Senior Member
Les mesures faites personnellement avec un analyseur sur picaxe réel

Heu ... Piem (Mon cher AD à moi -mais, non, je ne brosse pas-), il serait sympa, un jour, et si l'emploi du temps le permet, d'ouvrir un post spécifique, qui contiendrait toutes les mesures de temps d'exécution de commandes effectuées.

Quand on bossait en LM, dans les doc's, on trouvait toujours le nombre de cycles horloge nécessaire à l'execution d'une commande.

Ici, ça manque cruellement.

Merci d'avance.
 

PieM

Senior Member
GM39 said:
Elle permet cependant de comparer 2 solutions, ce qui est quand même intéressant.
Oui et non, car ici ce n'est pas une autre solution qui est comparée entre test1 et test2, Il s'agit du même programme mais de nombre de tests différents. Il n'est pas certain du tout que la simulation montre les mêmes écarts relatifs entre programmes différents.

jojojo said:
...d'ouvrir un post spécifique, qui contiendrait toutes les mesures de temps d'exécution de commandes effectuées.
Il y a pas mal de temps j'avais repris un tableau fait par Westaust, et je l'avais complété avec d'autres mesures personnelles. Il me semble que je l'avais mis en ligne. Promis, je recherche j'ouvre un post spécifique...
 

GM39

Senior Member
Oui et non, car ici ce n'est pas une autre solution qui est comparée entre test1 et test2, Il s'agit du même programme mais de nombre de tests différents. Il n'est pas certain du tout que la simulation montre les mêmes écarts relatifs entre programmes différents.
En fait je pensais aux tests 3 et 4 que j'ai également effectués sans les reporter ici. La conclusion était la même. J'ai même refait le test3 en enlevant le goto suite2 qui est inutile dans le cas présent et cela donnait à nouveau 400µs. De même que la solution avec select (test5) donnait un résultat identique à test3.

Il est vrai qu'il faut que les solutions soient relativement proches, sinon c'est un peu hasardeux.
 

GM39

Senior Member
test du on goto :
Code:
debut:
 b2= 245
 	High C.2
 	b2=b1-135/12
 	on b2 goto S00,S01,S02,S03,S04,S05,S06,S07,S08,S09				
					
S09:
			b9=10					
			Goto Suite2
			
S08:			
			b9=20 
			Goto Suite2
S07:
			b9=30
			Goto Suite2
S06:
			b9=40
			Goto Suite2
S05:
			b9=50
			Goto Suite2
S04:
			b9=60
			Goto Suite2
S03:
			b9=70
			Goto Suite2
S02:
			b9=80
			Goto Suite2
S01:
			b9=90
			Goto Suite2
S00:
			b9=99					
	
	Suite2:
Low C.2
pause 200
goto debut
on obtient 500µs pour b1 à 150 et 245, qui tombent à 400µs si on neutralise le calcul

test avec lookup :
Code:
debut:
 b1= 245
 	High C.2
 	b2=b1-135/12
 	lookup b2,(99,90,80,70,60,50,40,30,20,10),b9				
					
goto suite2
	Suite2:
Low C.2
pause 200
'next b1
goto debut
on obtient 400µs pour b1 à 150 et 245, qui tombent à 300µs si on neutralise le calcul

Les deux solutions donnent un temps de réponse constant en simulation.

D'après la simulation la solution la plus rapide est la table surtout si on a la patience de remplir les 256 valeurs.
 
Top