La sta testando sul campo davanti ai suoi occhi, funzia alla grande, decide di condividerla con noi e tu che fai?? Gli vai a fare le pulci tirando fuori cose che tra l'altro non stanno in piedi????
Mah... ora capisco perché
Moderatore:
Paolino








//-----------------------------------------------------------------------------------------------
// Spostamento di n passi con rampa di accelerazione e decelerazione
// n può essere sia positivo che negativo
void muovi(int32_t passi)
{
int8_t direzione;
uint32_t passiAcc, passiDec, passiCost;
uint32_t i;
uint32_t v;
if (passi ==0) return;
direzione = 1;
if (passi < 0) { direzione = -1; passi = -passi; }
// Calcola i passi di accelerazione, velocità costante e decelerazione
if (passi > (lungRampa * 2))
{
passiAcc = passiDec = lungRampa;
passiCost = passi - passiAcc - passiDec;
}
else
{
passiAcc = passi /2;
passiDec = passi - passiAcc;
passiCost = 0;
}
// Rampa di accelerazione
for (i=0; i<passiAcc; i++)
{
// Calcola la velocità
v = uintSqrt(2*accelerazione*i + velMin*velMin);
// Muove il motore
passoMotore(direzione);
// genera ritardo
setTimer1(10000/v);
while(getTimer1() != 0) os_tsk_pass();
}
// Movimento a velocità costante
for (i=1; i<(passiCost+1); i++)
{
passoMotore(direzione);
// genera ritardo
setTimer1(10000/velMax);
while(getTimer1() != 0) os_tsk_pass();
}
// Rampa di decelerazione
for(i=passiDec; i>0; i--)
{
// Calcola la velocità
v = uintSqrt(2*accelerazione*i + velMin*velMin);
// Muove il motore
passoMotore(direzione);
// genera ritardo
setTimer1(10000/v);
while(getTimer1() != 0) os_tsk_pass();
}
// Ritardo finale per stabilizzazione
setTimer1(10000/velMin);
while(getTimer1() != 0) os_tsk_pass();
}
//-----------------------------------------------------------------------------------------------
// Inizializzazione motore
static void initMotore(void)
{
posMotore = 0;
statoMotore = 0;
setStatoMotore();
// Calcola i parametri
#ifdef FULL_STEP
velMin = 50; // step al secondo
velMax = 800; // step al secondo
accelerazione = 4000; // step al secondo quadrato
#endif
#ifdef HALF_STEP
velMin = 100; // step al secondo
velMax = 1600; // step al secondo
accelerazione = 8000; // step al secondo quadrato
#endif
lungRampa = (velMax*velMax - velMin*velMin) / (accelerazione * 2);
}


os_tsk_pass();for(;;)
{
MOSPA_SX_PORT->BRR = MOSPA_SX_PIN;
//i=sqrt(4281346624);
i = uintSqrt(4281346624);
//i = pow(4281346624, 0.5);
MOSPA_SX_PORT->BSRR = MOSPA_SX_PIN;
//i=sqrt(4281346624);
i = uintSqrt(4281346624);
//i = pow(4281346624, 0.5);
}

) che nella filosofia e nelle applicazioni che ci stanno dietro. 



a qui ...TardoFreak ha scritto:Per quanto riguarda i microcontrollori
... sia un prezioso compendio d'integrazione, d'affiancare a quelli "tecnici": bello !TardoFreak ha scritto:Prenderò quello che passa il convento.


Torna a Firmware e programmazione
Visitano il forum: Nessuno e 4 ospiti