Elektronika.lt
 2025 m. birželio 26 d. Projektas | Reklama | Žinokite | Klausimai | Prisidėkite | Atsiliepimai | Kontaktai
Paieška portale
EN Facebook RSS

 Kas naujo  Katalogas  Parduotuvės  Forumas  Tinklaraščiai
 Pirmas puslapisSąrašas
 Forumas / + pokalbiai
 - Paieška forume
 - D.U.K. / Forumo taisyklės
 - Narių sąrašas
 - Registruotis
 - Prisijungti

Elektronika.lt portalo forumas

Jūs esate neprisijungęs lankytojas. Norint dalyvauti diskusijose, būtina užsiregistruoti ir prisijungti prie forumo. Prisijungę galėsite kurti naujas temas, atsakyti į kitų užduotus klausimus, balsuoti forumo apklausose.

Administracija pasilieka teisę pašalinti pasisakymus bei dalyvius, kurie nesilaiko forumo taisyklių. Pastebėjus nusižengimus, prašome pranešti.

Dabar yra 2025 06 26, 15:24. Visos datos yra GMT + 2 valandos.
 Forumas » Mikrovaldikliai » ATtiny2313 4ch PWM
Jūs negalite rašyti naujų pranešimų į šį forumą
Jūs negalite atsakinėti į pranešimus šiame forume
Jūs negalite redaguoti savo pranešimų šiame forume
Jūs negalite ištrinti savo pranešimų šiame forume
Jūs negalite dalyvauti apklausose šiame forume
 
  
Puslapis 12
Pereiti prie 1, 2  Toliau
Pradėti naują temą  Atsakyti į pranešimą Rodyti ankstesnį pranešimą :: Rodyti kitą pranešimą 
 ATtiny2313 4ch PWM
PranešimasParašytas: 2011 06 04, 20:16 Pranešti apie taisyklių pažeidimą Atsakyti su citata
AlgisL
Senbuvis
Senbuvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
datenblate kazkaip miglotai aprasyta OC0A/OC0B, OC1A/OC1B kurie dirba kaip komplementarus isejimai, bet isbandes kelis mode negavau rezimo, kad dirbtu visi 4 vienu metu, dirba tik 2 kanalai ir viskas.
kas isaiskins kaip priversti veikti visus 4 kanalus vienu metu, pasidalinsiu ideja kaip pasidaryti pigu ir navarotna Stepperiu microstep valdikli [b]be papildomu isoriniu loginiu IC[/b]
 ATtiny2313 4ch PWM
PranešimasParašytas: 2011 06 04, 20:27 Pranešti apie taisyklių pažeidimą Atsakyti su citata
Matikas850
Dažnas dalyvis
Dažnas dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
sakydamas dirba tik 2 turi omeny OC0A ir OC0B, OC1A ir OC1B ar OC0A ir OC1A, OC0B ir OC1B?
 ATtiny2313 4ch PWM
PranešimasParašytas: 2011 06 04, 20:36 Pranešti apie taisyklių pažeidimą Atsakyti su citata
AlgisL
Senbuvis
Senbuvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
bredbordas su tiny2313 darbe liko, ryt parasysiu tiksliai
 ATtiny2313 4ch PWM
PranešimasParašytas: 2011 06 04, 21:27 Pranešti apie taisyklių pažeidimą Atsakyti su citata
sopkis
Moderatorius
Moderatorius
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą Apsilankyti vartotojo tinklapyje ICQ numeris
AlgisL rašo:
bredbordas su tiny2313 darbe liko, ryt parasysiu tiksliai

Datašytą reikia skaityti, o ne breadboardą nagrinėti.
 ATtiny2313 4ch PWM
PranešimasParašytas: 2011 06 05, 00:35 Pranešti apie taisyklių pažeidimą Atsakyti su citata
AlgisL
Senbuvis
Senbuvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
Zejau ta datasheeta, kuriame raso, kad ATtiny2313 turi 4pwm, bet programuojasi tik du pwm OC0x ir OC1x, katrie turi komplementarius isejimus (man to uztenka idejai realizuoti), bet pajungus led'us sviecia tik du ir biski neaisku kiek tuos isejimus galesiu valdyti per PORTx bitu nustatyma. Aisku, galima apkabinetu kruva papildomu loginiu elementu, bet pakolkas degu ideja tu elementu atsikratyti ir vietoje brangiu ir nepatikimu Allegro naudoti mC + mosfetai. Vietoje pyzdavojimosi, geriau pateik savo super duper pavyzduka 70..200kHz koreguotos fazes greito PWM su papildoma galimybe valdyti OCxx pinus (idejos realizacijai tinka laikinai juos paverciant iejimais), tik reikia kad pvz OC0A generuotu viena PWM seka, OC1B butu jo inversija, OC1A generuotu kita PWM seka, o OC1B atatinkamai jo inversija.
Su AVR tik pradedu, tad ir visiskai zalias.
 ATtiny2313 4ch PWM
PranešimasParašytas: 2011 06 05, 10:05 Pranešti apie taisyklių pažeidimą Atsakyti su citata
Matikas850
Dažnas dalyvis
Dažnas dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
Siaip jei paimtume tarkim 45 datasheeto lentele tai galima pastebet, kad OC1A ir OC1B bus identiski savo isejimu. Taip pat jei nagrinetume 46 lentele tai ten nera vienodu WGM bitu kombinaciju, kuriose skirtusi TOP. Taigi ko gero viena taimeri galima naudoti tik vienam veikimo rezimui. Nors gal kas geriau ismano uz mane ir paneigs tai..?
 ATtiny2313 4ch PWM
PranešimasParašytas: 2011 06 06, 20:07 Pranešti apie taisyklių pažeidimą Atsakyti su citata
AlgisL
Senbuvis
Senbuvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
issinagrinejau abi lentutes, kiek uzteko kantrybes, ir suradau savo klaida, dabar veikia visi 4 kanalai, tik kazkokia nesamone dedas, PWM veikia jei pastoviai keiti OCRxx reiksmes (atnaujini), WTF?
 ATtiny2313 4ch PWM
PranešimasParašytas: 2011 06 07, 00:22 Pranešti apie taisyklių pažeidimą Atsakyti su citata
edvintas
Užkietėjęs dalyvis
Užkietėjęs dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
Neįjungei clock'o TIMER0/1?
Kodas:
TCCR1B |= _BV(CS10); //No prescaling

ir t.t.
 ATtiny2313 4ch PWM
PranešimasParašytas: 2011 06 07, 09:18 Pranešti apie taisyklių pažeidimą Atsakyti su citata
AlgisL
Senbuvis
Senbuvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
//////////////////////////////////////////
// CPU Low fuse 0xCE, High fuse 0xDB

#define F_CPU 20.0000E6 // 20 MHz
#include <avr\io.h>
#include <avr\delay.h>

#define ALGO0

#ifdef ALGO0
#define MOT_DELAY 320000
volatile uint8_t M[][4] =
{{ 255, 1, 102, 1 },
{ 102, 1, 255, 1 },
{ 1, 102, 255, 1 },
{ 1, 255, 102, 1 },
{ 1, 255, 1, 102 },
{ 1, 102, 1, 255 },
{ 102, 1, 1, 255 },
{ 255, 1, 1, 102 }};
#endif

#ifdef ALGO1
#define MOT_DELAY 16
volatile uint8_t M[] =
{0b00000100,
0b00001000,
0b00010000,
0b00100000,
0b00000100,
0b00001000,
0b00010000,
0b00100000};
#endif

#ifdef ALGO2
#define MOT_DELAY 12
volatile uint8_t M[] =
{0b00000100,
0b00001100,
0b00001000,
0b00011000,
0b00010000,
0b00110000,
0b00100000,
0b00100100};
#endif

#ifdef ALGO3
#define MOT_DELAY 12
volatile uint8_t M[] = \
{0b00001100,
0b00011000,
0b00110000,
0b00100100,
0b00001100,
0b00011000,
0b00110000,
0b00100100};
#endif

int main(void)
{

// OC0x, OC1x outputs
DDRB |= 0b00011100; // PB4, PB3, PB2;
DDRD |= 0b00100000; // PD5;

#ifdef ALGO0
//set PhaseCorrectPWM on timer0
TCNT0 = 0; //clear timer
TCCR0A = 0b11110001; // OC0A=10 ClearCompareMath; OC0B=11 SetCompareMath; xx_rez; WGM=01 PhCorrect;
TCCR0B = 0b00000001; // FOC0A=0; FOC0B=0; xx_rez; WGM02=0 PhCorrect; CS0=001 clk_io;

//set PhaseCorrectPWM on timer1
TCNT1 = 0; //clear timer
TCCR1A = 0b11110001; // OC1A=10 ClearCompareMath; OC1B=11 SetCompareMath; xx_rez; WGM1=01 PhCorrect;
TCCR1B = 0b00000001; // FOC0A=0; FOC0B=0; xx_rez; WGM1=0 PhCorrect; CS1=001 clk_io;

OCR0B = 0;
OCR0A = 0;
OCR1A = 0;
OCR1B = 0;
#endif

volatile int t, j;
volatile uint8_t i = 0;

while (1)
{

#ifdef ALGO0
for (t = 0; t < 100; t++)
{
OCR1B = M[i, 0];
OCR1A = M[i, 1];
OCR0A = M[i, 2];
OCR0B = M[i, 3];
i = ++i & 0x07;
for (j = 0; j < MOT_DELAY; j++);
};
// _delay_ms(100);

for (t = 0; t < 100; t++)
{
i = --i & 0x07;
OCR1B = M[i, 0];
OCR1A = M[i, 1];
OCR0A = M[i, 2];
OCR0B = M[i, 3];
for (j = 0; j < MOT_DELAY; j++);
};
// _delay_ms(100);
#else
// turn CW
for (t=0; t<0x200; t++)
{
PORTB = M[i] & 0b00011100;
PORTD = M[i] & 0b00100000;
i = ++i & 0x07;
_delay_ms(MOT_DELAY);
};
_delay_ms(100);

// turn CCW
for (t=0; t<0x200; t++)
{
i = --i & 0x07;
PORTB = M[i] & 0b00011100;
PORTD = M[i] & 0b00100000;
_delay_ms(MOT_DELAY);
};
_delay_ms(100);
#endif
};
return 1;
}
 ATtiny2313 4ch PWM
PranešimasParašytas: 2011 06 07, 09:22 Pranešti apie taisyklių pažeidimą Atsakyti su citata
AlgisL
Senbuvis
Senbuvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
pradzioj buvau itares _delay_ms(), nes kai tik ja panaudojau vietoj for, buvo irgi sutrike, veike kai buvo:

OCR0B += 64;
OCR0A += 64;
OCR1A += 64;
OCR1B += 64;
 ATtiny2313 4ch PWM
PranešimasParašytas: 2011 06 07, 23:17 Pranešti apie taisyklių pažeidimą Atsakyti su citata
didshirshis
Patyręs dalyvis
Patyręs dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
Kazka cia labai sudetingai aprasineji programoj..
OC1A ir OC1B naudojasi tuo paciu dazniu, gali skirtis tik A ir B plociai
su oc0n tas pat. Seip reiktu patikslint klausima kas norima kad butu tuose pwm kanaluose Smile

_________________
Aš pažeidžiau forumo taisykles ir reklamavau paraše. ...Bet uz reklama tai susimokejau Very Happy
 ATtiny2313 4ch PWM
PranešimasParašytas: 2011 06 08, 01:55 Pranešti apie taisyklių pažeidimą Atsakyti su citata
AlgisL
Senbuvis
Senbuvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
visi 4 kanalai ir turi veikt tuo paciu dazniu, tik skirtis uzpildymas nuo 0 iki max, priklausomai kokios poliarizacijos ir kiek sroves turi teket per variklio apvija. nelygu koks pajungimas bi/unipoliarinis, skiriasi tik galios driveris.
 ATtiny2313 4ch PWM
PranešimasParašytas: 2011 06 08, 09:44 Pranešti apie taisyklių pažeidimą Atsakyti su citata
didshirshis
Patyręs dalyvis
Patyręs dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
Ir taip sudetingai rasai Very Happy
Reik naudot fast pwm (gal), tarkim daznis priklausys nuo TOP reiksmes, pagal wgm reiksmes lentelei issirenkam "fast pwm top=0xFF", aisku daznio pasirinkimas kuklus tokiu atveju, jis butu didesnis jei rinktis "top=0cr0a".
Tarkim naudojam 16M kvarca, dalinam dazni is 256, tuomet F=16M/256*256=976Hz

timer0 inicializacija:
unsigned char a, b;
a=100;
b=50;
TCCR0A=0b10100011;
TCCR0B=0b00000100;
cia-Clear OC0A on Compare Match, set OC0A at TOP, Clear OC0B on Compare Match, set OC0B at TOP, Fast PWM TOP 0xFF, clkI/O/256 (From prescaler).
OCR0A=a;
OCR0B=b;

a ir b keiciant keiciasi impulsu plotis, galima keist tiesiogiai rasant ir i ocr reiksmes. 100 ir 50 tik kaip pavyzdys.
Timer1 analogiskai tik reiktu atkreipt demesi kad ten 16bit, ir top galima nustatyt pagal ICR, kas leistu pasiekt ivairesni dazni paliekant laisvus naudojimui ocrA ir ocrB.

_________________
Aš pažeidžiau forumo taisykles ir reklamavau paraše. ...Bet uz reklama tai susimokejau Very Happy
 ATtiny2313 4ch PWM
PranešimasParašytas: 2011 06 08, 12:43 Pranešti apie taisyklių pažeidimą Atsakyti su citata
AlgisL
Senbuvis
Senbuvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
mano ideja nenaudot jokio prescaller, todel PWM dazniis TOP=0xff atveju butu 20MHz/4(cia kiek suprantu IO clk = FClk/4)/256 kas butu apie 19.5kHz, kas isbedos pakankamai daugeliui varikliuku, o jei PWM taktinasi tiesiai nuo FClk, tai apie 98kHz, kas dar stebuklingiau.
belieka tik timer1 ijungt 8bit rezima, nes man to per akis.
tiesa, naudojant PhaseCorrectPWM, periodas gaunasi ne 255, o 510 clk ciklu.
dar, kaip patyrusio, noriu paklaust del 0 reiksmes, ten kazkas uzsiminta, kad tokiu atveju issijungia PWM pakopa ir reikia tiesiogiai pina valdyt, ar neteisingai supratau. is bedos tiks ir 1 vietoj nulio.
 ATtiny2313 4ch PWM
PranešimasParašytas: 2011 06 08, 14:50 Pranešti apie taisyklių pažeidimą Atsakyti su citata
didshirshis
Patyręs dalyvis
Patyręs dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
nzn koks daznis reikalingas varikliukui todel parinkau dalyba is 256.
Jei tinka galima ir minimalu dalinima naudot.

_________________
Aš pažeidžiau forumo taisykles ir reklamavau paraše. ...Bet uz reklama tai susimokejau Very Happy
Pradėti naują temą  Atsakyti į pranešimą Pereiti prie 1, 2  Toliau
 
Forumo sistema: phpBB
 „Google“ paieška forume
 Kas naujesnio?
 Naujos temos forume

Global electronic components distributor – Allicdata Electronics

Electronic component supply – „Eurodis Electronics“

LOKMITA – įvairi matavimo, testavimo, analizės ir litavimo produkcija

Full feature custom PCB prototype service

Sveiki ir ekologiški maisto produktai

Mokslo festivalis „Erdvėlaivis Žemė

LTV.LT - lietuviškų tinklalapių vitrina

„Konstanta 42“

„Mokslo sriuba“

www.matuok.lt - Interneto spartos matavimo sistema

www.esaugumas.lt – apsaugok savo kompiuterį!

PriedaiMobiliems.lt – telefonų priedai ir aksesuarai

Draugiškas internetas

FS25 Tractors
Farming Simulator 25 Mods, FS25 Maps, FS25 Trucks
ETS2 Mods
ETS2 Trucks, ETS2 Bus, Euro Truck Simulator 2 Mods
FS22 Tractors
Farming Simulator 22 Mods, FS22 Maps, FS25 Mods
VAT calculator
VAT number check, What is VAT, How much is VAT
FS25 Mods
FS25 Harvesters, FS25 Tractors Mods, FS25 Maps Mods
Dantų protezavimas
All on 4 implantai,
Endodontija mikroskopu,
Dantų implantacija
FS25 Mods
FS25 Maps, FS25 Cheats, FS25 Install Mods
FS25 Mods
Farming Simulator 25 Mods,
FS25 Maps
ATS Trailers
American Truck Simulator Mods, ATS Trucks, ATS Maps
Football Training Kit
Football Training Equipment, Football Skills, Football Training
Reklama
‡ 1999– © Elektronika.lt | Autoriaus teisės | Privatumo politika | Atsakomybės ribojimas | Turinys | Reklama | Kontaktai LTV.LT - lietuviškų tinklalapių vitrina
Ets2 mods, Ats mods, Beamng drive mods
allmods.net
„MokslasPlius“ – mokslui skirtų svetainių portalas
www.mokslasplius.lt
Optical filters, UV optics, electro optical crystals
www.eksmaoptics.com
LTV.LT – lietuviškų tinklalapių vitrina
www.ltv.lt/technologijos/
Elektroninių parduotuvių optimizavimas „Google“ paieškos sistemai
www.seospiders.lt
FS22 mods, Farming simulator 22 mods,
FS22 maps

fs22.com
Reklama


Reklama