Ří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, 02: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, 02: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, 02: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, 02: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: 1803
Registrován: 21 srp 2009, 02: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, 02: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ů“