Stránka 2 z 2

Napsal: 14 úno 2014, 19:58
od Jeejda_teda_puvodne

Napsal: 15 úno 2014, 18:33
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.

Napsal: 16 úno 2014, 21:21
od Jeejda_teda_puvodne

Napsal: 17 úno 2014, 00:33
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.

Napsal: 17 úno 2014, 13:01
od Burajko
Podla mna sa na to uz vytoto...

Napsal: 21 úno 2014, 07:40
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.