Tiedote ylläpidolta:

Elektroniikkafoorumi sulkeutuu tietoturva ongelmien takia.
Käyttäjien tietoja (yv:t, sähköpostiosoite ja salasanan hash) on saattanut vuotaa vääriin käsiin.

Foorumi on asettettu vain luku tilaan. Vanhoja keskusteluja voi lukea palvelinsopimuksen päättymiseen asti.
Tietokannasta on poistettu kaikki salasanat, sähköpostiosoitteet ja yksityisviestit.

Jos haluat saada omat yksityisviestisi, lähetä sähköpostia yllapito@elektroniikkafoorumi.com
samasta sähköpostista mikä oli foorumin tiedoissa niin voin kaivella niitä varmuuskopioista.

Mielenkiintoni foorumin ylläpitoon on viime vuosina ollut vähäistä jo muutenkin joten tähän on hyvä lopettaa.
Kiitokset kaikille käyttäjilla ja pahoittelut mahdollisista ongelmista.

Päivitys: Näyttäisi siltä että mahdollinen vuoto koski vanhaa phpBB2 tietokantaa,
joten helmikuuta 2012 uudemmat tiedot pitäisi olla turvassa.

-Lahha
yllapito@elektroniikkafoorumi.com


Servojen ohjaus ilman vaihe-eroa

Keskustelua mikrokontrollereista ja niiden ohjelmoinnista.

Valvoja: Moderaattorit


Jäsen
Jäsen
Viestit: 108
Liittynyt: Pe Heinä 03, 2009 17:18
ViestiLähetetty: Ke Maalis 16, 2016 17:38
Tarkoituksena on ohjata neljää servoa PIC16F887 kontrollerilla. Käytännön merkitystä tällä ei välttämättä ole, mutta haluasin että jokaisen servon ohjaus olisi saman vaiheinen.

Mikäli jokaisen servon PWM signaali olisi sama niin sen saisi helposti vaikka näin:
Koodi: Valitse kaikki
void main()
{
TRISD = 0;


while (1)
{
PORTD |= 0b00001111;
delay_us(1000);

PORTD &= 0b00000000;
delay_us(19000);


}
}

Servoille tulee kuitenkin erilaisia PWM signaaleja, enkä tiedä muuta kuin tämän vaihe-erollisen vaihtoehdon:
Koodi: Valitse kaikki
void main()
{
TRISD = 0;

while(1)
{
PORTD.F0 = 1;
delay_us(1000);
PORTD.F0 = 0;
delay_us(19000);

PORTD.F1 = 1;
delay_us(1000);
PORTD.F1 = 0;
delay_us(19000);

PORTD.F2 = 1;
delay_us(1500);
PORTD.F2 = 0;
delay_us(18500);

PORTD.F3 = 1;
delay_us(1500);
PORTD.F3 = 0;
delay_us(18500);

}

}


Olisko jollain neuvoa tuohon vaihe-ero ongelmaan?

Jäsen
Jäsen
Viestit: 108
Liittynyt: Pe Heinä 03, 2009 17:18
ViestiLähetetty: Su Maalis 20, 2016 11:25
Tällä tavalla vaihe-ero huomattavasti pienempi:

Koodi: Valitse kaikki
void main()
{
TRISD = 0;

while(1)
{
PORTD.F0 = 1;
delay_us(1000);
PORTD.F0 = 0;

PORTD.F1 = 1;
delay_us(1000);
PORTD.F1 = 0;

PORTD.F2 = 1;
delay_us(1500);
PORTD.F2 = 0;

PORTD.F3 = 1;
delay_us(1500);
PORTD.F3 = 0;

delay_us(15000);

}

}

Paluu Mikrokontrollerit ja ohjelmointi

Paikallaolijat

Käyttäjiä lukemassa tätä aluetta: Ei rekisteröityneitä käyttäjiä ja 2 vierailijaa

cron