Répondre à la discussion
Affichage des résultats 1 à 21 sur 21

besoin d'un petit coup de pouce PIC18F et RS-232



  1. #1
    mica25000

    Exclamation besoin d'un petit coup de pouce PIC18F et RS-232


    ------

    Bonjour,
    voila je suis nouveau et je débute en programmation, et je m'attaque au RS-232 (un jeu d'enfant, me direz-vous!) et bien, apres avoir feuilleter pas mal de documentation, en passant par microchip et par ici, j ai un peu de mal a corriger mon programme.

    Je suppose que j ai voulu faire trop simple.

    Coté électronique, très simple, j'utilise un pic18f2550, un max232 et quelques composants annexes, le pic est à 20MHz (javais que ça comme quartz sous la main, et qui peut le plus peut le moins).

    Coté PC, un programme qui s'appelle Hercules SETUP utility http://www.hw-group.com/products/hercules/index_en.html j'espère que ça convient.

    mon code:
    Code PHP:
    #include <rs232.h>

    void main()
    {

       
    setup_adc_ports(NO_ANALOGS|VSS_VDD);
       
    setup_adc(ADC_CLOCK_DIV_2);
       
    setup_spi(SPI_SS_DISABLED);
       
    setup_wdt(WDT_OFF);
       
    setup_timer_0(RTCC_INTERNAL);
       
    setup_timer_1(T1_DISABLED);
       
    setup_timer_2(T2_DISABLED,0,1);
       
    setup_comparator(NC_NC_NC_NC);
       
    setup_vref(FALSE);
       
    while (
    true)
       {
       
    printf ("Test 1234");
       
    delay_ms (500);
       }

    Un "bon" signe, toutes les 500ms des caractères apparaissent sur l'écran de Hercules setup utility, mais pas ce que j'aimerais:
    voir piece jointe.

    par la suite j'aimerais envoyer des données avec des variables, exemple:

    type 1= "variable_entier1 8 bits" "variable_décimal1 8 bits" %
    type 2= "variable_entier2 8 bits" "variable_décimal2 8 bits" %
    etc....
    (saut de ligne)
    ****************************** *********

    PS: mon PIC est bien configuré en 9600 baud, 8bits, parité: N...

    Si par hasard vous avez une idée de ce qu'il faut que je modifie

    merci beaucoup de votre attention

    -----
    Images attachées Images attachées

  2. Publicité
  3. #2
    mica25000

    Re : besoin d'un petit coup de pouce PIC18F et RS-232

    personne? j'ai relancer une recherche mais je comprends pas, quelle librairie inclure? y a t'il une façon de convertir ces symboles en caractère lisible? j'ai chercher des exemples dans l'aide de mon programme mais ils ne fonctionnent pas, vu qu ils disent pas quelles put**** de librairies inclure pour la RS-232 ... je désespère,mon projet doit être parfaitement fonctionnel avant la fin de la semaine prochaineet y a plus que la RS 232 a programmer...

  4. #3
    cosinus

    Re : besoin d'un petit coup de pouce PIC18F et RS-232

    Hello,

    Tu as pris un quartz que tu avais sous la main, ok. Mais cette valeur de quartz permet elle au pic de générer les timings exacts (à qq% près) des différents bits à envoyer.
    9600 bauds mais dans la bonne fourchette de temps ?

  5. #4
    cosinus

    Re : besoin d'un petit coup de pouce PIC18F et RS-232


  6. A voir en vidéo sur Futura
  7. #5
    mica25000

    Re : besoin d'un petit coup de pouce PIC18F et RS-232

    Pour le quartz je ne sais pas, je sais qu'il est neuf ça c'est certain, après à part le fait qu'il fasse 20MHz je ne sais pas grand chose d'autre, à part que j ai que celui là en stock, peut être un 8MHz à dessouder d'une carte.

    Merci pour vos réponses et pour le programme, je test ça et je vous tiens au courant (surement demain)

    PS: désolé de mettre un peu emporté dans mon dernier message mais la pression monte ...

  8. #6
    Franck-026

    Re : besoin d'un petit coup de pouce PIC18F et RS-232

    Ce que voulait dire cosinus, c'est que toutes les vitesses peuvent etre atteintes avec la panoplie de vitesse du PIC. Mais pour certaines vitesse a une frequence donnee de quartz, on est pas dans la tolerance au niveau vitesse RS232, difference superieure a 3 ou 4%... Et le PC se bache lamentablement car hyperterm ne peut pas afficher les caracteres convenablement.
    Regarde sur la datasheet du PIC concernant l'UART, quelles sont les tolerances de vitesses de l'UART pour chaque frequence du PIC...

  9. Publicité
  10. #7
    mica25000

    Re : besoin d'un petit coup de pouce PIC18F et RS-232

    Ok merci beaucoup, j ai trouvé certaines infos (p.251 de la datasheet du pic18f2550) et pour 20MHz je devrais pouvoir aller jusqu'à 19200 baud avec une erreur d environ 1.8%, seulement ils parlent aussi de "SYNC = 0", "BRGH = 0", "BRG16 = 0" et de "SPBRG = 15 pour 19200 baud. je vois à peu près à quoi ça correspond mais je ne sais pas comment régler ça dans mon compilateur, aucunes de ces abréviations n'est trouvable dans l'aide... donc déjà petite indication en plus, je me base pour commencer à 9600 baud, dans mon "rs232.h" j'ai
    Code PHP:
    #include <18F2550.h>
    #device ICD=TRUE
    #device adc=8

    #FUSES NOWDT                    //No Watch Dog Timer
    #FUSES WDT128                   //Watch Dog Timer uses 1:128 Postscale
    #FUSES HS                       //High speed Osc (> 4mhz for PCM/PCH) (>10mhz for PCD)
    #FUSES NOPROTECT                //Code not protected from reading
    #FUSES NOBROWNOUT               //No brownout reset
    #FUSES BORV20                   //Brownout reset at 2.0V
    #FUSES NOPUT                    //No Power Up Timer
    #FUSES NOCPD                    //No EE protection
    #FUSES STVREN                   //Stack full/underflow will cause reset
    #FUSES NODEBUG                  //No Debug mode for ICD
    #FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
    #FUSES NOWRT                    //Program memory not write protected
    #FUSES NOWRTD                   //Data EEPROM not write protected
    #FUSES IESO                     //Internal External Switch Over mode enabled
    #FUSES FCMEN                    //Fail-safe clock monitor enabled
    #FUSES PBADEN                   //PORTB pins are configured as analog input channels on RESET
    #FUSES NOWRTC                   //configuration not registers write protected
    #FUSES NOWRTB                   //Boot block not write protected
    #FUSES NOEBTR                   //Memory not protected from table reads
    #FUSES NOEBTRB                  //Boot block not protected from table reads
    #FUSES NOCPB                    //No Boot Block code protection
    #FUSES MCLR                     //Master Clear pin enabled
    #FUSES LPT1OSC                  //Timer1 configured for low-power operation
    #FUSES NOXINST                  //Extended set extension and Indexed Addressing mode disabled (Legacy mode)
    #FUSES PLL12                    //Divide By 12(48MHz oscillator input)
    #FUSES CPUDIV4                  //System Clock by 4
    #FUSES USBDIV                   //USB clock source comes from PLL divide by 2
    #FUSES VREGEN                   //USB voltage regulator enabled

    #use delay(clock=20000000)
    #use rs232(baud=9600, UART1, parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8) 
    et dans le rs232.c

    Code PHP:
    #include <rs232.h>
       
    void main()
    {

       
    setup_adc_ports(NO_ANALOGS|VSS_VDD);
       
    setup_adc(ADC_CLOCK_DIV_2);
       
    setup_spi(SPI_SS_DISABLED);
       
    setup_wdt(WDT_OFF);
       
    setup_timer_0(RTCC_INTERNAL);
       
    setup_timer_1(T1_DISABLED);
       
    setup_timer_2(T2_DISABLED,0,1);
       
    setup_comparator(NC_NC_NC_NC);
       
    setup_vref(FALSE);
    output_high (PIN_A1);
    while (
    true)
    {
    putc('S');
    delay_ms (500);
    }

    donc niveau code je pense pas pouvoir faire plus simple, j'ai déja essayer printf et putc et aucun résultats positifs, et c'est la première fois que j'utilise le RS232 donc je ne sais pas si il y a d'autres librairies à utiliser, sinon peut être essayer un autre programme PC mais je doute que ça vienne de lui.

  11. #8
    Agonez

    Re : besoin d'un petit coup de pouce PIC18F et RS-232

    Hello!
    Simple question: quel compilateur utilise-tu?
    SPBRG, BRGH, ect... Ça s'utilise avec MPLab, Je pense que certains autre compilos gèrent ça en interne...

  12. #9
    mica25000

    Re : besoin d'un petit coup de pouce PIC18F et RS-232

    Bonjour, j'utilise CCS C compiler avec un ICD-U64 en usb

  13. #10
    Agonez

    Re : besoin d'un petit coup de pouce PIC18F et RS-232

    T'es sûr de la syntaxe, pour ton #users232(baud=9600,UART1,pari ty=N,xmit=PIN_C6,rcv=PIN_C7,bi ts=8)
    J'utilise pas ce compilateur, mais de ce que j'ai pu en lire, ce serait plutôt:
    #use RS232 (baud=9600, Xmit=PIN_C6, Rcv=PIN_C7) //includes the rs232 libraries
    À voir avec quelqu'un qui utilise ce compilo, ce qui n'est pas mon cas, désolé ^^

  14. #11
    mica25000

    Re : besoin d'un petit coup de pouce PIC18F et RS-232

    c'est parce que j'utilise la balise php de futura et appriori ça supprime tous les espaces, mais c'est bien #use RS232, dans la majorité des cas quand il y a une faute de frappe il y a une erreur ou un avertissement et le programme n'est pas compilé, c'est beau la technologie, qui jusqu'à ce que j en arrive a la RS 232 marchait à merveille

  15. #12
    Agonez

    Re : besoin d'un petit coup de pouce PIC18F et RS-232

    Je me disait aussi mais bon, comme je l'ai jamais utilisé...
    Autrement, je ne peux que te conseiller de vérifier ce qui est indiqué sur le site de l'éditeur dont une partie de la FAQ semble correspondre exactement à ton cas:
    The PIC® MCU is Sending Garbage Characters.

    Check the clock on the target for accuracy. Crystals are usually not a problem but RC oscillators can cause trouble with RS-232. Make sure the #USE DELAY matches the actual clock frequency.

    Make sure the PC (or other host) has the correct baud and parity setting.

    Check the level conversion. When using a driver/receiver chip, such as the MAX 232, do not use INVERT when making direct connections with resistors and/or diodes. You probably need the INVERT option in the #USE RS232.

    Remember that PUTC(6) will send an ASCII 6 to the PC and this may not be a visible character. PUTC('A') will output a visible character A.

  16. Publicité
  17. #13
    mica25000

    Re : besoin d'un petit coup de pouce PIC18F et RS-232

    merci, j avais déja essayé avec les 2 exemples mais rien, mon PC est assez récent donc je doute que ça vienne de lui, le virtual terminal m a l'air bien configuré en fonction de ce que j ai programmé, et d'après la data du PIC que j'utilise, je peux monter jusqu'à 19200 bauds avec un quartz 20MHz qui ne pose apriori pas de soucis (fais le test avec une LED qui s'allume une seconde sur 2 et vérification sur 2 minutes et c'est fonctionnel à peut être 5us près je ne sais pas ^^)
    après voila niveau code je peux pas faire plus simple, j'utilise un MAX232 donc pas d'inversion, j'ai essayer d'inverser les broches de mon connecteur DB9 mais plus rien n'arrive donc c'est bien branché.
    Peut-être mettre le doute sur le cable de 15cm qui relie le DB9 au MAX232 qui pourtant est blindé, j'ai pas de perturbation sur l'alim, condos de filtrage de 100uF et découplage de 100nF sur la ligne d'alim...

  18. #14
    Agonez

    Re : besoin d'un petit coup de pouce PIC18F et RS-232

    Okay, ben désolé, mais je ne peux rien de plus pour toi...
    Si tu trouve d'où viens l'erreur, fais-le nous savoir, juste par curiosité!
    Bonne chance!

  19. #15
    mica25000

    Re : besoin d'un petit coup de pouce PIC18F et RS-232

    En plus je n'ai pas d'oscillo donc je peux meme pas voir ce qu'il se passe... je vais quand meme essayer un autre programme, si un bien vous vient en tete faites le moi savoir

  20. #16
    mica25000

    Re : besoin d'un petit coup de pouce PIC18F et RS-232

    bon je ne sais plus quoi faire, j ai essayer un autre programme PC encore plus simple que Hercules... et sa fait la même chose, ça ne vient pas de la masse non plus, j ai essayer de la débrancher, il y a toujours des caractères bizarres qui apparaissent mais ils diffèrent à chaque réception, alors que lorsque la masse est bien connectée si j envoie les mêmes caractères je reçois à chaque fois la même chose, j'ai essayer un autre PIC de même référence, pareil... J'ai brancher mon connecteur à l'ordi sans passer par une rallonge, même phénomène.

    Niveau ordi je ne pense pas avoir de problème particulier, j'utilise bien le port série et pas un convertisseur USB/série.

    Niveau électronique tous mes composants sont neufs ou ont très peu servis mais fonctionnent de sur à 100%, la base de temps du quartz est correcte, tous les programmes que j ai effectué avec le compilateur et l'ICD fonctionnent sauf celui-ci, de même un programme plus complexe (celui que je veux réaliser avec type 1, type 2...) fonctionne en simulation sous Proteus avec le virtual terminal...

  21. #17
    paulfjujo

    Re : besoin d'un petit coup de pouce PIC18F et RS-232

    bonjour,

    dans le post #1 , copie ecran, le parametre protocole st sur XON-XOFF au lieu de AUCUN.

    La PLL est bien desactivée ?


    Je te conseille l'usage du terminal VBRAY
    (dispo ici
    voir terminal)
    qui affiche aussi le contenu en hexadecimal , pour verifier les codes que tu recois.

    J'ai deja bien experimenté la RS232 avec des PIC18F25x
    mais sous C18 .
    Tu pourrais aussi essayer une version SOFT UART ,
    qui permet de maitriser un peu plus les registres.

  22. #18
    mica25000

    Re : besoin d'un petit coup de pouce PIC18F et RS-232

    Bonjour et merci
    en fait pour XON-XOFF j ai essayer plusieurs configurations mais toujours le même soucis, j'ai déja essayer plusieurs terminaux, le dernier que j ai essayer était Termite qui permet aussi de visualiser en hexa mais j ai toujours le meme soucis.

    Par contre la PLL je viens de regarder dans le .h parce que je ne savais pas vraiment ce que c'était, j'ai:

    #FUSES PLL12 //Divide By 12(48MHz oscillator input).
    #FUSES CPUDIV4 //System Clock by 4

    je suppose que je dois changer en PLL1 et non 12, par contre je sais pas si il faut que je change le CPUDIV4 en DIV1 ou pas, et j ai pas la platine de test sur moi donc pas d'essai avant au moins le weekend prochain.

    En tout cas merci, il y a de grande chance que sa vienne de ça mais quand on ne sait pas ^^

  23. Publicité
  24. #19
    mica25000

    Smile Re : besoin d'un petit coup de pouce PIC18F et RS-232

    Bon j ai pas pu m'empêcher d aller chercher un peu de matériel pour faire le test ^^ par contre pas de quartz donc j ai fait un petit programme avec oscillateur interne 4MHz, PLL=1 et CPUDIV=1 et... ça marche!!! => apperçu écran

    Maintenant que j ai cerné le truc et que je sais que sa vient pas du programme en lui même, je vais pouvoir l intégrer en rentrant, en espérant qu avec un quartz sa marchera aussi bien .

    Plus qu'à essayer de trouver un algorithme qui puisse faire la "mise en page" pour aligner les colonnes, et peut être un "accusé de réception" qui fait sonner le buzzer en écrivant "ENVOI OK" sur l'écran LCD. je ne sais pas du tout comment je vais procédé ni si c'est possible d'ailleurs, mais c'est un détail, le principal est fait.

    Un grand merci à vous tous!
    Images attachées Images attachées

  25. #20
    mica25000

    Re : besoin d'un petit coup de pouce PIC18F et RS-232

    Ah par contre une autre petite question, sur le prototype que je viens de faire j utilise les broches C6 et C7 du PIC (TX et RX). J'ai vu qu'on pouvait définir d'autres broches si on le souhaite en les changeant dans #use rs232(baud=28800,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)
    Mais j ai essayer de mettre par exemple C4 et C5 mais ça ne fonctionne pas, et ça m'embète un peu car dans mon montage final les broches RX et TX sont déja utilisées pour le LCD et je peux pas rechanger (le PIC est en CMS notamment...)

  26. #21
    mica25000

    Smile Re : besoin d'un petit coup de pouce PIC18F et RS-232

    Je n'ai pas pu me reconnecter depuis la dernière fois mais c'est tout bon, je ne sais pas ce qu'il s'est passé avec le 18F2550 que je me servais pour faire mes tests mais le 4685 marche a merveille, d'ailleurs je n'utilise plus de quartz, j'utilise l'oscillateur interne cadencé à 16MHz et un débit de 57600 bauds et ça marche bien, pour l'alignement des colonnes j ai fait un "petit" bout de programme qui fait ça, il y avait certainement une meilleure façon de faire mais je ne la connais pas ^^ donc ça prend beaucoup de place mais ça tient dans le PIC
    Encore merci à tous pour votre aide, étant donné les petites erreurs bêtes je pense que j aurais mis un très long moment avant de bidouiller dans le .h
    maintenant que j'ai compris un peu la RS-232, je vais tenter l'écriture dans une carte SD en FAT16/32 ^^. Pour ce qui est de ce sujet...

    Résolu!

Discussions similaires

  1. Besoin d'un petit coup de pouce :)
    Par Hell33 dans le forum Mathématiques du collège et du lycée
    Réponses: 1
    Dernier message: 11/04/2010, 11h17
  2. Besoin d'un petit coup de pouce ^^
    Par komflex dans le forum Physique
    Réponses: 0
    Dernier message: 10/10/2009, 18h37
  3. Besoin d'un petit coup de pouce...
    Par lola74 dans le forum Santé et médecine générale
    Réponses: 2
    Dernier message: 02/11/2007, 18h39
  4. besoin d'un petit coup de pouce!!!
    Par laura888 dans le forum Mathématiques du supérieur
    Réponses: 2
    Dernier message: 10/03/2006, 22h45
Découvrez nos comparatifs produits sur l'informatique et les technologies.