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.