Deutsch   English   Français   Italiano  
<645148fb$0$25945$426a74cc@news.free.fr>

View for Bookmarking (what is this?)
Look up another Usenet article

Path: ...!news.mixmin.net!feeder1-2.proxad.net!proxad.net!feeder1-1.proxad.net!cleanfeed1-b.proxad.net!nnrp1-2.free.fr!not-for-mail
Newsgroups: fr.sci.electronique
From: JKB <JKB@hilbert.invalid>
Subject: Re: PI7C9X760
References: <644c0132$0$7630$426a34cc@news.free.fr>
Reply-To: <jkb@invalid>
User-Agent: slrn/1.0.3 (Linux)
Mime-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
Date: 02 May 2023 17:31:39 GMT
Lines: 107
Message-ID: <645148fb$0$25945$426a74cc@news.free.fr>
Organization: Guest of ProXad - France
NNTP-Posting-Date: 02 May 2023 19:31:39 CEST
NNTP-Posting-Host: 62.212.98.88
X-Trace: 1683048699 news-1.free.fr 25945 62.212.98.88:36651
X-Complaints-To: abuse@proxad.net
Bytes: 3996

	Bonsoir,

	Je me réponds à moi-même.

	Le PI7C9X760 semble être à la tension minimale d'alimentation près
	un SC16IS760 de NXP (la version NXP demande 2,5V là où celle de
	Pericom demande 1,8V).

	J'ai téléchargé la doc de NXP qui est autrement mieux fichue est
	j'ai enfin réussi à obtenir quelque chose sur le port de sortie.

	La configuration est maintenant la suivante :

void
pi7c9x760_init()
{
    // CTS : input
    // RTS : output
    // DTR : output (GPIO 5)
    // DSR : input (GPIO 4)
    // RI  : input (GPIO 7)
    // CD  : input (GPIO 6)

    // 115200, 8N1
    // Diviseur 8
    // Sample rate 26 (16 - SCR + CPRN)
    // SCR vaut par défaut 0.

    // CPR accessible par LCR==0xBF et SFR[2]==1
    pi7c9x760_write(0x03, 0xBF);        // LCR
    pi7c9x760_write(0x0D, 0x5A);        // SFREN
    pi7c9x760_write(0x07, 0x04);        // SFR
    pi7c9x760_write(0x04, 0x1A);        // CPR
    pi7c9x760_write(0x09, 0x06);        // TX/RX Control Register
    pi7c9x760_write(0x07, 0x00);        // SFR

    pi7c9x760_write(0x03, 0x80);        // LCR : divisor latch enable
    // DLH et DLL accessibles parce que LCR[7]==1 et LCR!=0xBF
    // Diviseur 8
    pi7c9x760_write(0x01, 0x00);        // DLH
    pi7c9x760_write(0x00, 0x08);        // DLL

    // Access EFR register
    pi7c9x760_write(0x03, 0xBF);        // LCR
    pi7c9x760_write(0x02, 0x01);        // EFR

    // 8N1
    pi7c9x760_write(0x03, 0x03);        // LCR

    // FIFO
    pi7c9x760_write(0x02, 0x67);        // FCR

    // Interruptions
    pi7c9x760_write(0x01, 0x03);        // IER: TX/RX data ready irqs

    return;
}

	Les routines de lecture et d'écriture sont toujours les mêmes. Je
	lis toujours correctement les contenus des registres.

	Dans une routine, j'essaie maintenant d'envoyer des caractères
	ASCII sur le port série et j'obtiens :

2023-05-02 19:25:14.406852:
E8 E9 E9 E8 E8 EB E9 E8 EA EB EB EA EA EB EB EC
EC ED ED EC EE EF EF EE EC
2023-05-02 19:25:15.718416:
E8 E9 E9 E8 EA EB E9 EA EA E9 E9 EA EA EB EB EC
EC ED ED EC EC ED ED EC EE
2023-05-02 19:25:17.014097:
E8 E9 E9 E8 E8 E9 EB EA E8 EB EB EA EA EB EB EC
EC ED ED EE EC ED ED EC EE
2023-05-02 19:25:18.309762:
E8 E9 E9 EA E8 E9 EB E8 EA EB E9 EA EA EB EB EC
EC ED ED EC EC ED ED EE EE
2023-05-02 19:25:19.621330:
E8 E9 E9 EA E8 E9 E9 E8 EA E9 EB EA EA EB EB EC
EC ED ED EE EC EF ED EC EE
2023-05-02 19:25:20.916976:
E8 E9 E9 E8 EA E9 E9 EA EA E9 EB EA EA EB EB EC
EC ED ED EC EC EF ED EE EE
2023-05-02 19:25:22.228530:
E8 E9 E9 E8 E8 E9 E9 E8 E8 EB E9 EA EA EB EB EC
EC ED ED EC EC EF ED EC EC

	Là, j'obtiens bien mes 25 caractères. Sauf que... je tente d'envoyer
	ceci :

        for(i = 'A'; i < 'Z'; i++)
        {
            pi7c9x760_write(0x00, i);
        }

	La vitesse sur le port semble donc être la bonne. LSR vaut $60, donc
	FIFO data error et THR et TSR vides.

	Pourquoi FIFO error ? Je suppose que c'est ce qui explique la non
	répétabilité des données transmises.

	Je suis preneur de toute idée,

	JKB

-- 
Si votre demande me parvient en code 29, je vous titiouillerai volontiers
une réponse.