Généré signal carré pic

Résolu
flolarajasse Messages postés 115 Statut Membre -  
flolarajasse Messages postés 115 Statut Membre -
Bonjour,
Je souhaite généré un signal carré grâce à mon PIC 18F4550 à une certaine fréquence souhaitée.Comment faire?
Pouvez vous m'aidez svp?
Merci
Flo
Configuration: Windows XP
Firefox 3.5.7

13 réponses

  1. chuka Messages postés 980 Statut Membre 379
     
    Salut,
    cela ne serait pas plutot:
    while(TRUE)
    {
    PORTA1=1;
    delay_ms(100);
    PORTA1=0;
    delay_ms(100);
    }
    @+
    3
  2. flolarajasse Messages postés 115 Statut Membre 14
     
    c bon j'ai trouvé.j'ai tout simplement fait :

    void main(void)
    {
    while (TRUE)
    {
    usb_task();
    usb_debug_task();

    output_high(PIN_B0);
    delay_us(200);
    output_low(PIN_B0);
    delay_us(200);
    }

    }

    et c'est bon sa marche très bien!!
    merci du coup de main ;D
    2
  3. tibobo_77 Messages postés 226 Date d'inscription   Statut Membre Dernière intervention   263
     
    Tu le programmes pour qu'il te renvoie des suites de 0 et de 1 sur une sortie numérique.
    Pour ce qui est de la fréquence, base toi sur ton quartz.
    Et puis, ton pic, tu le programmes comment?
    1
  4. flolarajasse Messages postés 115 Statut Membre 14
     
    je le programme en C!
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. flolarajasse Messages postés 115 Statut Membre 14
     
    pourtant je fais du C depuis un petit moment, mais là je galère un peu.peut-être la fatigue ;-)
    0
  7. tibobo_77 Messages postés 226 Date d'inscription   Statut Membre Dernière intervention   263
     
    Franchement je pense que ça suffit (sauf si tu as d'autre choses a faire, il y aura besoin d'une interruption)

    while(1){
    PORTA1(1)
    wait(t)
    PORTA1(0)
    wait(t)
    }

    ou t est la demie période de T avec f=1/T.
    Et PORTA1 une de tes sorties numérique

    Pardon pour la syntaxe, ça fait des années que je n'ai pas fait de microC...
    0
  8. flolarajasse Messages postés 115 Statut Membre 14
     
    ok je vais tester sa.en te remerciant ;-)
    0
  9. chuka Messages postés 980 Statut Membre 379
     
    Salut,
    sinon utilise les interruption timer....
    dans l'interruption tu fais ton changement d'etat du bit en sortie voulu (par exemple le 1er bit du portA est en sortie)
    LATAbits.LATA1^=1;
    Bon courage!!

    @+
    0
  10. flolarajasse Messages postés 115 Statut Membre 14
     
    merci chuka ;-)
    0
  11. flolarajasse Messages postés 115 Statut Membre 14
     
    en fait ce serait juste cela?

    #define PORTA1 PIN_A1

    void main()
    {

    setup_adc_ports(NO_ANALOGS|VSS_VDD);
    setup_adc(ADC_OFF);
    setup_psp(PSP_DISABLED);
    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)
    {
    PORTA1==(1);
    delay_ms(100);
    PORTA1==(0);
    delay_ms(100);
    }

    }

    merci d'avance
    0
  12. tibobo_77 Messages postés 226 Date d'inscription   Statut Membre Dernière intervention   263
     
    Ce serai plus jolie de le faire dans une interruption, comme le dit chuka, mais ça devrai marcher.
    0
  13. flolarajasse Messages postés 115 Statut Membre 14
     
    ok je vais tester. Merci du coup de pouce ;) @+
    0
  14. flolarajasse Messages postés 115 Statut Membre 14
     
    sa n'a pas l'air de marcher, sa m'affiche "code has no effect", en clair sa ne fait rien!!:'(
    0