Hello tlm !
Voila je vais vous exposer aujourd'hui un pb que j'ai avec mon projet assembleur/micro-processeurs...
Le but de celui-ci est de fabriquer une calculatrice. Les composants utilisés sont:
* un afficheur 12 chiffres
* un MAX5032 qui gère les cathodes de l'afficheur, le rafraichissement et le déplacement des chiffres au moyen d'une clock et d'un reset
* un PIT230 qui gère le bus anode
Comme dit ci-dessus, j'ai programmé (en VHDL) le MAX pour qu'au coup de clock, il deplace le chiffre de droite a gauche d'une "case"
Après les tests statiques ok (donc le circuit est correct) il me faut maintenant faire la série de tests dynamiques qui me permettent de voir si le clavier et l'afficheur répondent bien
Le pb vient de la... Voici le prgm en asm68k qui doit realiser des affichages sur l'afficheur (je rentre ce prgm ds estudio configuré pour interagir avec le circuit):
xdef START le startup généré place ici un début a l'adresse ff479000
section program,code
PGCR EQU $xxxxx
PACR EQU $xxxxx
PBCR EQU $xxxxx
PADDR EQU $xxxxx
PBDDR EQU $xxxxx
PADR EQU $xxxxx
PBDR EQU $xxxxx
PCDR EQU $xxxxx
START MOVE.B #$00,PGCR initialisation de PGCR
MOVE.B #$c0,PACR ini de PACR (sous-mode 1X)
MOVE.B #$c0,PBCR ini de PBCR (sous-mode 1X)
MOVE.B #$FF,PBDDR port B du PIT en sortie
MOVE.B #$01,PCDR on met la clock (qui est sur PC6) à 0 et le reset (sur PC0) à 1
MOVE.L #$00,D0
ITER MOVE.L #100,D0 compteur pour la temporisation
MOVE.L CS0,A0 on met l'adresse du code 7 segments du 0 dans A0
MOVE.B (A0),PBDR on met le contenu de A0 donc le 0 sur le bus anode afin de l'afficher
TEMP DBF D0,TEMP temporisation
MOVE.L #$00,PCDR les 3 lignes ci-contre réalisent un coup de clock pour que le max passe à l'afficheur d'a coté afin d'afficher le nouveau chiffre
MOVE.L #$40,PCDR
MOVE.L #$00,PCDR
MOVE.L #100,D0
MOVE.L CS1,A0
MOVE.B (A0),PBDR on met le chiffre 1 sur le bus anode
TEMP DBF D0,TEMP
MOVE.L #$00,PCDR coup de clock
MOVE.L #$40,PCDR
MOVE.L #$00,PCDR
BRA ITER boucle infinie qui devrait donc afficher sur l'afficheur des 0 et 1 alternés
TRAP #15
CS0 DC.B $20 code 7 segments du 0
CS1 DC.B $BE code 7 segments du 1
END
Malheureusement quand je l'exécute, rien ne s'affiche et estudio (sous l'écran du com1) reste bloqué sur l'adresse $ff479012. En activant le mode trace je m'apercois qu'il fait une boucle infinie au niveau du TEMP alors qu'au bout de 100 tour de boucle il devrait passer aux ionstructions dessous...
Si qqn voit ou j'ai fais une connerie, ca serait vraiment cool qu'il me tienne informé
MERCI INFINIMENT
Silvain
déjà tu as plusieurs labels TEMP, ça risque pas de poser problème?

Que cache le pays des Dieux ? -
Forum Ghibli -
Forum LittéraireLa fin d'un monde souillé est venue. L'oiseau blanc plane dans le ciel annonçant le début d'une longue ère de purification. Détachons-nous à jamais de notre vie dans ce monde de souffrance. Ô toi l'oiseau blanc, l'être vêtu de bleu, guide nous vers ce monde de pureté. - Sutra originel dork.
oui tu as raison mais c'est juste une faute de frappe qd je vous ai recopié mon prgm... En réalité dans mon code le 2e s'appelle TEMP2 !!!
Silvain
Question bête : tu es sûr que c'est un 68k et non pas un Coldfire ? Parce que ce dernier est presque compatible avec le 68k, exepté sur quelques instructions, et justement l'instruction DBF fait partie des manquantes.
en effet pour l'adresse du CS1 tu as raison, il faut que je l'aligne sur une adresse paire.. Mais concernant le MOVE.L CS0,A0, désolé mais c'est encore une faute de frappe en recopiant le prgm ... c'est un MOVE.L #CS0,A0 !!!!
De toute facon le prgm est compilé correctement sans erreur... Le pb vient d'une bouckle infinie sur le DBF ... c'est bizarre. Et oui Blue_Z je suis sur d'etre sur un 68k et pas un coldfire !
Silvain
pourquoi un "%" devant D0 ?????
non c'est pas du GNU
Effectivement quand je travaille sur des bases M1000 (et TP de 68000 quoi) le compilo a du mal avec les valeurs décimales/hexa, parfois ils faut même mettre tous les 0 pour compléter à la taille voulu... style $00000100 pour $100...

Que cache le pays des Dieux ? -
Forum Ghibli -
Forum LittéraireLa fin d'un monde souillé est venue. L'oiseau blanc plane dans le ciel annonçant le début d'une longue ère de purification. Détachons-nous à jamais de notre vie dans ce monde de souffrance. Ô toi l'oiseau blanc, l'être vêtu de bleu, guide nous vers ce monde de pureté. - Sutra originel dork.
Ximoon Le 03/05/2003 à 12:09Edité par Ximoon le 03/05/2003 à 21:12 le % est utilisé dans une autre convention de programmation du 68000, l'asm GNU
edit: % pas $...

Que cache le pays des Dieux ? -
Forum Ghibli -
Forum LittéraireLa fin d'un monde souillé est venue. L'oiseau blanc plane dans le ciel annonçant le début d'une longue ère de purification. Détachons-nous à jamais de notre vie dans ce monde de souffrance. Ô toi l'oiseau blanc, l'être vêtu de bleu, guide nous vers ce monde de pureté. - Sutra originel dork.
> ma remarque etait pas sur le % mais le q
Tu n'as pas une doc du processeur 68k sous la main ?
Le moveq est "move quick" comme son nom l'indique. C'est une instruction de 2 octets, dont le premier octet indique que c'est un moveq et à quel registre de donnée il faut faire ce moveq; le deuxième octet est une valeur de -128 à +127 qui est mise dans le registre de donnée voulu, et le sign extend est fait en même temps sur les 32 bits. 4 clocks pour le tout sur 68000 de base.
Hummm
Tente de vérifier l'hexa que te genre ton compilo...
Sinon tente aussi de "typer" to DBF, sinon essaye de mettre des instructions dans ta boucle, ou tente de tracer pas a pas pour voir se que fait ta boucle (reg etc...)

Proud to be CAKE©®™
GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.