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.