Řízení RC serva PICem - servo se cuká. Proč?

Diskuze a poradna o programátorech a programování různých obvodů

Moderátor: Moderátoři

Zpráva
Autor
Uživatelský avatar
Jeejda_teda_puvodne
Příspěvky: 142
Registrován: 08 dub 2012, 00:00

#16 Příspěvek od Jeejda_teda_puvodne »

Naposledy upravil(a) Jeejda_teda_puvodne dne 25 říj 2016, 13:10, celkem upraveno 1 x.
Uživatelský avatar
Niki31
Zablokován
Zablokován
Příspěvky: 131
Registrován: 05 črc 2008, 00:00

#17 Příspěvek od Niki31 »

Ja vidím největší problém v použití Céčka pro programování jakýchkoli
časově závislých operací.Kompilátor vygeneruje bludy,které není
možné ve finále ani odladit.

Jeejdo,v PIC18 je možné priority přiřazovat a taky je vypnout.Takže kdo neche nemusí je využívat.

Pokud má použitý mokrokontrolér alespoň jeden časovač,pak je možné
společne s vhoným časováním bezvadně ovládat tolik serv,kolik má
čip I/O vývodů.Samozřejmě s programem v ASM, a ještě si u toho bude hvízdat.
Uživatelský avatar
Jeejda_teda_puvodne
Příspěvky: 142
Registrován: 08 dub 2012, 00:00

#18 Příspěvek od Jeejda_teda_puvodne »

Naposledy upravil(a) Jeejda_teda_puvodne dne 25 říj 2016, 13:10, celkem upraveno 1 x.
Jenda_KL
Příspěvky: 1173
Registrován: 10 zář 2008, 00:00
Bydliště: Kadaň
Kontaktovat uživatele:

#19 Příspěvek od Jenda_KL »

No takže priority se dají jednoduše vyřešit přeskupením testování bitů:

Kód: Vybrat vše

void interrupt() { 
  if (TMR1IF_bit) {            // priorita 0
    TMR1ON_bit  = 0;           
    LATA4_bit   = 0;           
    TMR1IF_bit  = 0;           
  }
  if (TMR0IF_bit) {            // priorita 1
    TMR0IF_bit  = 0;
    TMR0  = 100;               
  // ServoHandler(); zahodit, moc dlouhy a RefPos vypocitat v mainu
    TMR1H = RefPosH;       
    TMR1L =  RefPosL;       
    LATA4_bit = 1;
    TMR1ON_bit  = 1;             
  }
  if (SSP1IF_bit){             // priorita 2
    SSP1IF_bit = 0;
    if (bufptr < ptrmax) {
      Buff[bufptr].Status = SSPSTAT;
      Buff[bufptr].Value = SSPBUF;
      bufptr++;   
      CKP_bit   = 1;    .?.
    }
  }
}

.. a v mainu kontrolovat buffer a pocitat odchylku.
Uživatelský avatar
Burajko
Příspěvky: 1819
Registrován: 21 srp 2009, 00:00

#20 Příspěvek od Burajko »

Podla mna sa na to uz vytoto...
Už druhý krát strihám a furt je to krátke
Uživatelský avatar
Niki31
Zablokován
Zablokován
Příspěvky: 131
Registrován: 05 črc 2008, 00:00

#21 Příspěvek od Niki31 »

Jó,tak to bude další mrtvola co ji zabilo Céčko...

Krom toho ,velice podobný by byl kód v ASM jenom bez těch
složených závorek a voidů.

Jeejdo,s řadičem jsem se už potkal ale s mirokontrolérem který by ho měl
ještě ne.
Odpovědět

Zpět na „Programování PIC, ATMEL, EEPROM a dalších obvodů“