Programation [Minitel] (encore!)

Si vous n'avez pas trouvé de catégorie correspondante ci-dessus, regroupe les discussions plus générales sur des matériels du genre pocket / PDA, sur des Minitel / terminaux, sur des accessoires, sur des systèmes de stockage et à l'occasion peut aussi abriter un fil sur les vieilles consoles de jeux.

Modérateurs : Papy.G, fneck, Carl

Avatar de l’utilisateur
telec
Messages : 44
Inscription : 11 févr. 2015 21:16

Re: Programation Minitel (encore!)

Message par telec »

Papy.G a écrit :321 Lignes Progressif (non entrelacé), à priori, pas encore eu le temps de programmer ma séquence d'initialisation, mais comme on arrive à afficher le signal sur une télé (en couleur, en plus!), je ne vois que ce mode. :wink:
Et si ça ne marche pas, bah, essaye en entrelacé, tu verras bien. :mrgreen:
Je suis en train de tout tester avec le port série, pour l'instant je trouve (en mode 40 colones, long):
-TGS=00010000
-PAT=00??0110
-MAT=00000000
Pour PAT, les 3 derniers bits permettent d'afficher, dans l'ordre, la moitié basse, la moitié haute, et une ligne tout en haut (la ligne de service).
Papy.G a écrit :Le passage page 35 est mieux explicité dans la version de mars 1995 (lien que j'ai donné dans mon topic), mais j'ai du mal à le comprendre aussi.
J'irais y faire un tour, j'avais pris la nouvelle version parce qu'on peut y faire une recherche de texte.
Papy.G a écrit :Pour le buzzer, il y a un ou deux topics remontés récemment sur la musique un bit, en faisant basculer l'insertion de la zone d'affichage et hors affichage à une certaine fréquence, tu devrais arriver à obtenir un son.
Pour l'instant j'essaye plutôt de l’arrêter ! :P
C'est un buzzer automatique : il suffit de mettre I sur 1 pour qu'il sonne. Et je ne comprend pas les deux bits 4 et 5 sur PAT...
Papy.G a écrit :J'ai rien compris à ton code, je vais me pencher sur le mien, et vois ce que ça donne, si je me plante pas en programmant mon EEprom (à la main). :shock: :lol:
Bonne chance !
Pourquoi ne pas programmer un autre contrôleur qui la programme via le port série ?
Avatar de l’utilisateur
6502man
Messages : 12312
Inscription : 12 avr. 2007 22:46
Localisation : VAR
Contact :

Re: Programation Minitel (encore!)

Message par 6502man »

les 2 bits de PAT servent à l'incrustation vidéo pour les micros connecté sur une TV, donc pour le Minitel ca ne sert part (normalement).


L'idée de connecter un PIC à la place du 8052 est très intéressante surtout quand il n'y a pas de carte fille sur le Minitel :D
Phil.

www.6502man.com

To bit or not to bit.
1 or 0.
Avatar de l’utilisateur
Papy.G
Modérateur
Messages : 3051
Inscription : 10 juin 2014 13:40
Localisation : Haute-Garonne/Gers

Re: Programation Minitel (encore!)

Message par Papy.G »

Tout tester avec le port série? :|

PAT bit 4 et 5, expliqué dans le tableau 3 page 15, et page 14, en gros, tu évites de le mettre en active area mark, mets en boxing, par exemple, ou laisses en inlay.

Perso, voilà ce que je pensais faire charger à mon programme:
TGS: 00010000
MAT: 01010000
PAT: 10100111
ROR: 00001000
Penses aussi à envoyer un nop + exec à froid au 9345, il est dit dans la notice qu'après initialisation, la première commande est ignorée.

Le lien que tu as donné renvoie vers la même édition du manuel que le mien. :wink:

C'est un EEprom AT28C16 de récup', et c'est le début, j'aimerais assez rapidement arriver à me passer d'un dispositif de programmation pour programmer en direct sur le minitel, par saisie au clavier, ou via un système de fichiers.

6502man>Précisément dans le Telic, c'est le buzzer qui est relié à la broche I. :mrgreen:

Tu pourrais aussi mettre une variante 8051 ISP d'ATMEL, au moins, tu as le brochage, et un vrai bus multiplexé, plus d'autres raffinements récents (meilleur ratios clock/cycle machine, ram interne, vitesse d'horloge supérieure (en plus du ratio), dual DPTR...), même, si tu fais des concessions sur le brochage, tu peux avoir de l'adressage 24 bits avec des instructions spécifiques.
Soyez exigeants, ne vous contentez pas de ce que l'on vous vend.
Demandez-en plus, ou faites-le vous-même.
Avatar de l’utilisateur
telec
Messages : 44
Inscription : 11 févr. 2015 21:16

Re: Programation Minitel (encore!)

Message par telec »

Je veux dire que j'envoie un octet vers un registre (TGS, MAT, PAT) via le port série, c'est plus simple que de reprogrammer à chaque fois.

Et donc il n'y a aucun moyen de le désactiver ? ça serait quand même plus simple que de changer caractère par caractère !

On a fait à peu près la même chose donc. Par contre, je sais pas si c'est voulu, mais tu es en mode court et tu utilise la ligne de service (il faut que je vérifie si elle écrase ou rajoute une ligne, d'ailleurs).

Et si j'utilise un Pic, c'était pour me changer d'Atmel... A tort, apparemment ! :oops:
Avatar de l’utilisateur
Papy.G
Modérateur
Messages : 3051
Inscription : 10 juin 2014 13:40
Localisation : Haute-Garonne/Gers

Re: Programation Minitel (encore!)

Message par Papy.G »

Donc, tu as une sorte de "moniteur" série?

Il suffit juste que l'attribut d'insertion de tes caractères soit systématiquement à 0, si tu veux activer le buzzer sans avoir à toucher les attributs de caractère, tu passes en mode active area mark, et ça fera l'affaire.

Merci de me le faire remarquer, c'est une erreur, par contre, la ligne de service s'ajoute au compte des autres lignes, une datasheet plus ancienne portait la mention 20+1 et 24+1 lignes, il me semble.

Non, t'affolles pas, si ça marche comme ça et que tu es habitué aux Pics, pourquoi pas, si tu n'as pas cassé le 8052, tu pourras toujours le remettre à l'occasion.
Je me demande juste si, vu les limites imposées par le matériel dans cette application précise, on ne se retrouve pas avec un ensemble moins performant qu'à l'origine. Par ailleurs, d'autres microcontrôleurs gèrent la mémoire externe, sans être forcément des Atmel.
Soyez exigeants, ne vous contentez pas de ce que l'on vous vend.
Demandez-en plus, ou faites-le vous-même.
Avatar de l’utilisateur
telec
Messages : 44
Inscription : 11 févr. 2015 21:16

Re: Programation Minitel (encore!)

Message par telec »

Oui, j'ai un convertisseur série/USB, que j'ai branché sur la prise DIN.

Après plusieurs test, je trouve que pour les bits <4:5> de PAT:
-00: Écran noir (normal i=0 sur tous les caractères)
-01: Écran noir (pareil)
-10: Tous les caractères et pas de bip
-11: Tous les caractères mais bip forcé
Si le bit 3 de MAT est mis (marges) il y a un bip.
La fonction CLF ne s’arrête qu'avec un nop (ou du moins n'efface jamais le bit Busy).
Ma solution (un peu bancale) :

Code : Tout sélectionner

void EF9345_cleanup()
{
    writeByte(GR_R1, 0x20); //C
    writeByte(GR_R2, 0x00); //B
    writeByte(GR_R3, 0x70); //A
    writeByte(GR_R6, 0x08);
    writeByte(GR_R7, 0x00);

    writeByte(GR_R0 + GR_EXEC, GR_CLF);
    _delay_ms(5);
    writeByteNS(GR_R0 + GR_EXEC, GR_NOP);
}
Et je ne m'affole pas, ne t’inquiète pas ! :) Même si je n'ai jamais programmé de Pic avant, comme je programme en C, ça ne me change pas beaucoup ! Et puis je découvre de nouveaux trucs !

Si c'est permis, je vous passe mon code (hébergé sur mon site) : https://sites.google.com/site/telectron ... initel.zip
(D'ailleurs, si tu ne t'es pas encore occupé du clavier, j'ai un code entièrement fonctionnel)

Bon ba, c'est bon! j'ai dompté la bête! :P
Encore une fois, merci de votre aide !
Avatar de l’utilisateur
6502man
Messages : 12312
Inscription : 12 avr. 2007 22:46
Localisation : VAR
Contact :

Re: Programation Minitel (encore!)

Message par 6502man »

Ca fonctionne c'est super :D
Phil.

www.6502man.com

To bit or not to bit.
1 or 0.
Avatar de l’utilisateur
Papy.G
Modérateur
Messages : 3051
Inscription : 10 juin 2014 13:40
Localisation : Haute-Garonne/Gers

Re: Programation Minitel (encore!)

Message par Papy.G »

Ah, j'ai aussi un convertisseur, mais vu mes déboires avec les comandes unix, je ne pense pas m'en servir tout de suite, au pire, dans un premier temps, je ferais peut-être via un autre minitel (non modifié), pour l'instant, je code sans interruptions, donc pas de communication série.

Colore ton fond de marge et ton fond de page pour mieux te rendre compte de tes résultats. :wink:

CLF dure <4700 cycles (4,7ms), allongé des interruptions pour accès mémoire du générateur d'affichage, attends-tu assez longtemps?

Je ne comprends rien au C, je tente direct en code machine, je me ferais des modules. Pour le clavier, je vais faire une résolution de matrice, qui me donnera un pointeur dans un tableau de codes, et, à l'avenir, j'aimerais mapper la matrice clavier dans l'espace mémoire, si possible, pour simplifier le code de lecture des lignes.
Je jetterais toutefois un œil à ce que tu as fait, pour voir ta démarche, si j'arrive à comprendre.

Quand tu mets l'insertion des marges seules, ou la page seule, tu vois la différence dans le bruit du buzzer? Ca fait un battement?

Vache! Je me suis permis de jeter un œil sur ton site, tu as soudé ça à l'arrache sur la nappe, le chip en l'air! :mrgreen:

Au passage, je voulais récupérer tes infos de connexion de port série sur le 8052, je crois qu'il y a erreur sur les numérotations des broches du 8052, ça ne peut fonctionner si Tx et Rx sont sur le port servant à l'adressage mémoire. :|
Soyez exigeants, ne vous contentez pas de ce que l'on vous vend.
Demandez-en plus, ou faites-le vous-même.
Avatar de l’utilisateur
telec
Messages : 44
Inscription : 11 févr. 2015 21:16

Re: Programation Minitel (encore!)

Message par telec »

J'avais compris que la marge colorait le contour, je trouvais juste dommage de ne pas pouvoir l'utiliser à cause du bip. :/

J'attend quelques vrais secondes (je fais le test à la main/port série), et le bit reste sur busy. Donc je me conforme aux spec en attendant 5 ms après l'appel puis je fais un nop.
Et ça me fais penser qu'il faut bien vérifier le bit Vsync (tu en avait déjà parlé je crois), j'ai eu de mauvaises surprises à cause de ça !

Ce que j'ai fais pour le clavier c'est vraiment tout bête : comme toi, je récupère les touches dans un tableau/matrice de 8*8, et après je met un masque pour vérifier les touches appuyées. Ce qui vas plus t'intéresser à mon avis ce sont les masques (dans keyboard.h), qui sont assez long à faire (il en faut 64).

Oui en effet il y a un battement, je me suis d'ailleurs amusé à faire ça avec les caractères en remplaçant petit à petit les "bipeurs" par des "non-bipeurs".

Ben, tant qu'on ne le voit pas et que ça ne gigote pas trop (et que ça tient accessoirement) ! :P
Bon, j'ai quand même rajouté une protection pour éviter les courts circuits. :wink:

Ah oui en effet tu as raison, merci !
j'avais fais une inversion horizontale en écrivant mon schéma, mais quand je l'ai décodé j'ai fais une inversion verticale... je vais changer les infos ! (Tx: 11, Rx: 10)

Et si tu veux un schéma plus complet, n'hésite pas !
Avatar de l’utilisateur
Papy.G
Modérateur
Messages : 3051
Inscription : 10 juin 2014 13:40
Localisation : Haute-Garonne/Gers

Re: Programation Minitel (encore!)

Message par Papy.G »

Maintenant que tu sais que le bip est indépendant de la couleur, fais-toi plaisir.

Je ne sais pas pour ton Pic, mais avec le 8052, comme la fréquence est légèrement inférieure à celle du 9345, je sens que je vais galérer à compter les cycles pour synchroniser ça au mieux, ça risque de finir avec le clockout du 9345 ponté vers le µC, comme dans les modèles Philips. :mrgreen:

Je suis habitué au basic sur calculette, et je pensais obtenir mes index par calcul, après avoir masqué les touches déjà appuyées lors de la scrutation précédente (seulement huit masques nécessaires), ne tester que les fronts montants dans un premier temps, je verrais ce qui me semble plus simple dans le raisonnement.

Tu t'es probablement laissé distraire par l'appellation des broches P3.0 et P3.1 ,qui lorsqu'on inverse, se retrouveraient pattes 30 et 31, j'y ai pensé après t'avoir fait la remarque. :wink:

Merci pour le schéma complet, mais en dehors de la possibilité de mapper le clavier (je voudrais accéder aux lignes en Ram h00 à h07, la logique voudrait que ce fût en Rom, mais il y a les vecteurs d'interruptions, et je voudrais toutes les IO en bas de Ram, avec accès masquable), et le câblage du modem, je pense avoir toutes les infos dont j'ai besoin.

En parlant de calculette, je suis aussi sur Casio, et il y a une fonction de copie d'écran vers port série, un petit affichage sur minitel est envisageable, en mode 80 colonnes bitmap 12bits monochrome (160*125).
Soyez exigeants, ne vous contentez pas de ce que l'on vous vend.
Demandez-en plus, ou faites-le vous-même.
Avatar de l’utilisateur
telec
Messages : 44
Inscription : 11 févr. 2015 21:16

Re: Programation Minitel (encore!)

Message par telec »

Je pense que l'on s'est mal compris : quelque soit la couleur (<0:2> dans MAT) dès que le bit 3 est mis, ça sonne.

Avec mon pic, je suis à 20MHz 8). Mais si tu vérifie juste que Vsync sois à 1 avant d'écrire quelque chose, pas besoin de calcul !

Si tu as des infos sur le modem, je veux bien ! Apparemment, y'a rien sur le net...

Je ne crois pas avoir ce genre de fonction... (Graph 35+/100+). Mais en effet ce serait sympas !
Avatar de l’utilisateur
Papy.G
Modérateur
Messages : 3051
Inscription : 10 juin 2014 13:40
Localisation : Haute-Garonne/Gers

Re: Programation Minitel (encore!)

Message par Papy.G »

Oui, c'est ce que je disais, la couleur est indépendante de l'insertion, tu peux donc colorer la marge, sans te faire tuer les oreilles. :lol:

A 20Mhz, tu n'es encore pas à une vitesse multiple, mais bon, ça reste plus facile à calculer.

J'ai jeté un œil à to keyboard.h, je n'ai pas besoin de faire de define, bien que cela revienne au même, la scrutation clavier me donnera un numéro de ligne d'un tableau, dans lequel sera pioché le code ASCII correspondant, les deux modules seront exécutés à suivre et l'application aura un code ASCII en retour. Ca revient presque au même, sauf que je n'ai que 2048 octets d'EEprom, le moindre octet est précieux, d'autant plus que je programme à la main, fil à fil. :mrgreen:

Comme dit sur mon topic, je pense que les composants n'ont qu'une fonction analogique, tout le reste serait géré par le Microcontrôleur, d'ailleurs, tu l'as vu toi-même, le relais est piloté directement par une sortie du µC.

Sur ma vieille 7900GC, c'est la touche M-Disp que l'on peut configurer en mode copie d'écran, et il suffit d'appuyer ensuite où que l'on soit, pour peut que la calculatrice ne soit pas en cours de calcul ou de tracé, le curseur disparaît le temps de l'envoi.
Soyez exigeants, ne vous contentez pas de ce que l'on vous vend.
Demandez-en plus, ou faites-le vous-même.
Avatar de l’utilisateur
telec
Messages : 44
Inscription : 11 févr. 2015 21:16

Re: Programation Minitel (encore!)

Message par telec »

A d'accord ! Je croyais qu'il fallait mettre mat pour afficher les marges ! C'est super alors !

Mais je ne fais aucun calcul, je vérifie juste que Vsync (R0<2>) soit à 1, et pour l'instant j'ai aucune erreur, ça doit être rare de tomber sur le cas où le bit passe à 0 juste après le test, non ?

Bon, vas falloir que je me mette au traçage de la partie modem, alors. Même si je ne vois pas trop à quoi ça sert, ça peut être sympa !
Avatar de l’utilisateur
Papy.G
Modérateur
Messages : 3051
Inscription : 10 juin 2014 13:40
Localisation : Haute-Garonne/Gers

Re: Programation Minitel (encore!)

Message par Papy.G »

En fait, les marges sont toujours affichées, seulement, les trois LSB de Mat configurent leur couleur, I est un attribut, au même titre que R, G, et B, il suffit, lui, de le laisser à 0. Tu as trouvé les valeurs de gris théoriques pour les différentes couleurs? (je crois les avoir lues dans le STUM1b)

En fait, pour être correct, il faudrait tester quand VS (R0 <2>) passe à 1, tu as alors 2432µs pénard. Ensuite, tu as les chargement des lignes, qui empêchent l'accès à certains moments, mais je ne sais pas si alors, le bit busy est activé. En tout cas, VS ne dure que 128µs 50 fois par seconde, statistiquement peu de chances de tomber dessus.

Ce serait pas de refus, car moi qui ne suis absolument pas électronicien, je suis perdu dès que ça passe dans le moindre transistor ou résistance de tirage. :roll:
Pour te donner une idée, le modem est retournable, génère le courant de ligne, détecte les appels entrants pendant une communication (à voir s'il peut aussi le faire hors ligne, comme sur les M2). Tu peux donc communiquer avec un minitel via prise téléphonique (sur une multiprise ou une rallonge), ou envisager des applications de chargement de programmes via port cassette sur des ordinateurs dont les porteuses seraient compatibles, sait-on jamais. J'aimerais faire en sorte qu'un minitel modifié puisse permettre d'en utiliser deux autres non modifiés (un via port série, un via la ligne), pour rendre plus vivantes leurs expositions, faire des jeux multijoueurs, voire même un système multitâche/multiposte/multi-utilisateurs. Et faire essayer aux collègues d'ici le truc, via communication téléphonique, de chez eux, avec des machines non modifiées.
Soyez exigeants, ne vous contentez pas de ce que l'on vous vend.
Demandez-en plus, ou faites-le vous-même.
Avatar de l’utilisateur
telec
Messages : 44
Inscription : 11 févr. 2015 21:16

Re: Programation Minitel (encore!)

Message par telec »

En effet, ici: http://543210.free.fr/TV/stum1b.pdf, page 35.
P 36 a écrit :Status S2 follows the vertical sync. state : it is reset for 2 TV lines per frame and stays at 1 during the remaining period. It becomes readable by the microprocessor form the status register.
Pourtant là ils disent qu'il reste toujours à 1 (sauf pendant le chargement), en tout cas chez moi ça marche (peut-être le fait que je sois à 20MHz influe ?)

Wouah, ça à l'air super comme projet, ça me donne encore plus envie de faire le schéma ! Bon par contre mes cours vont reprendre, mais normalement j'aurais le temps de faire ça pour la semaine prochaine.
Répondre