|
|
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 2024 11 29, 18:12. Visos datos yra GMT + 2 valandos.
|
|
|
|
Forumas » Mikrovaldikliai » WDT ant mega644. Gal turit ideju?
|
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
|
|
|
|
|
|
WDT ant mega644. Gal turit ideju? |
Parašytas: 2009 10 20, 12:48 |
|
|
|
Su wdt ant ivairiu procu jokiu problemu, su mega128 ar 32 irgi, bet su 644 niekaip negaliu priverst dirbt. Kai tik ijungi wdt, procas komoi iki nuimsi maitinima. Net perziurejau IARo headerius pagal pdf, klaidos nera. Darau pagal gamintojo rekomendacija:
__disable_interrupt();
__watchdog_reset();
/* Start timed equence */
WDTCSR |= (1<<WDCE) | (1<<WDE);
/* Set new prescaler(time-out) value = 64K cycles (~0.5 s) */
WDTCSR = (1<<WDE) | (1<<WDP2) | (1<<WDP0);
__enable_interrupt();
Keiciant laika ar ka manipuliuojant - rezultatas tas pats. Uztenka vienos eilutes WDTCSR |= (1<<WDCE) | (1<<WDE); kad ivest i koma. Eksperimentui padariau ijungima ir iskart isjungima pagal pdf:
__watchdog_reset();
/* Start timed equence */
WDTCSR |= (1<<WDCE) | (1<<WDE);
/* Set new prescaler(time-out) value = 64K cycles (~0.5 s) */
WDTCSR = (1<<WDE) | (1<<WDP2) | (1<<WDP0);
__watchdog_reset();
/* Clear WDRF in
MCUSR &= ~(1<<WDRF);
/* Write logical
/* Keep old prescaler
WDTCSR |= (1<<WDCE)
/* Turn off WDT */
WDTCSR = 0x00;
- koma
Ziurejau, praeina visos eilutes, bet kur jis nukeliauja tpliau - velnias zino
Ir ten toli sedi iki nuimsi maista, net isorinis resetas nepadeda |
|
|
|
|
|
|
WDT ant mega644. Gal turit ideju? |
Parašytas: 2009 10 20, 14:52 |
|
|
|
o hfuse keitei?
arba gal atjungiant įvyksta interuptas, kuris nėra aprašytas, jo vykdymas nušoka arba pradžion (nežinau kaip IAR kompiliuoja) arba bala žino kur ir taip viskas užsisuka.
be to eilutę ne taip nukopinai:
/* Keep old prescaler setting to prevent unintentional time-out */
WDTCSR |= (1<<WDCE) | (1<<WDE);
sėkmės |
|
|
|
|
|
|
WDT ant mega644. Gal turit ideju? |
Parašytas: 2009 10 20, 15:09 |
|
|
|
Isjungimas fignia, veliau iki jo prieisim
Po papildomu eksperimentu isvedinedamas lygi i viena koja issiaiskinau kad eina pastovus resetas su 30mS periodu. Pagal viska nesikeicia preskalerio reiksme. Procas pradeda inicializuot periferija ir wdt jam vel duoda i galva. Kas keisciausia, tai pirmose maino eilutese irasius
WDTCSR &= ~(1<<WDCE);
MCUSR &= ~(1<<WDRF);
nepadeda, is amzino reseto islipa tik jei isjungi maista. WDT ijungima ir preskalerio keitima darau gerokai toliau kode, uz kokiu dvieju sekundziu, tad keista kad jis "prilimpa" Juk po reseto turetu issijungt iki vel ji ijungsi. Yra bitas kai leidi ne sistemini reseta o inerupta, tai net nesant int apdoroklio nesiresetina
Sukompilinus ta pati projekta ant mega128 suo veikia kaip priklauso |
|
|
|
|
|
|
WDT ant mega644. Gal turit ideju? |
Parašytas: 2009 10 20, 17:30 |
|
|
|
tai priskeileris ir nesikeis
WDTCSR = (1<<WDE) | (1<<WDP2) | (1<<WDP0);
čia dar reikia tą change enable užmest:
WDTCSR = (1<<WDE) | (1<<WDP2) | (1<<WDP0)|(1<<WDCE);
WDCE: Watchdog Change Enable
This bit is used in timed sequences for changing WDE and prescaler bits. |
|
|
|
|
|
WDT ant mega644. Gal turit ideju? |
Parašytas: 2009 10 20, 19:55 |
|
|
|
Pagal pdf WDCE kartu su WDE isistato vienam takte, o kitam takte pakartojam WDE su keiciamais bitais. Taip veikia ir ant kitu modeliu megu. Reiks ryt pabandyt dar WDCE ikimst ir i konfigo takta. Tokios kombinacijos nebandziau, o isbandziau vos ne visokias fantastines idejas
Idomu, jei stovi fusas ant bootrst wdt i nulini adresa startuos ar i boot sektoriu? Jei paviks pergudraut suni, tai issiaiskint ir susitvarkyt nebus problemos |
|
|
|
|
|
WDT ant mega644. Gal turit ideju? |
Parašytas: 2009 10 21, 11:43 |
|
|
|
Nežinau ar pagelbės, bet man teko naudoti WDT su ATmega324P, kai pritrūkau taimerių. Naudojau tik jo overflow interruptą. Atrodo maždaug taip:
Kodas: |
void wtd_init(void)
{
WDTCSR= 0b01010000; // WDT interrupt enable,
WDTCSR= 0b01010000; // repeat
}
ISR(WDT_vect) // 16ms
{
big_fat_function();
} |
|
|
|
|
|
|
WDT ant mega644. Gal turit ideju? |
Parašytas: 2009 10 21, 12:55 |
|
|
|
tai tikrink asm`e tada kokios instrukcijos kur vaikšto, kaip kompiliatorius dirba.
arba iškart asmu pasirašyk to WDT bandymų kodą. |
|
|
|
|
|
WDT ant mega644. Gal turit ideju? |
Parašytas: 2009 10 21, 13:49 |
|
|
|
circuit rašo: |
Nežinau ar pagelbės, bet man teko naudoti WDT su ATmega324P, kai pritrūkau taimerių. Naudojau tik jo overflow interruptą. Atrodo maždaug taip:
Kodas: |
void wtd_init(void)
{
WDTCSR= 0b01010000; // WDT interrupt enable,
WDTCSR= 0b01010000; // repeat
}
ISR(WDT_vect) // 16ms
{
big_fat_function();
} |
|
o kaip cia tu taimeriu gali pritrukti? Viena turi-ir uztenka... |
|
_________________ Nieko taip lengvai nedaliname, kaip patarimus... |
|
|
|
|
WDT ant mega644. Gal turit ideju? |
Parašytas: 2009 10 21, 14:54 |
|
|
|
Googlej radau uzsimionta kad kazkurioj codevision versijoj buvo taisytas mega644 headeris. Gali but kad klaida pdf ir atitinkamai IARe. Kas naudojat codevision ar winavr gal galit paziuret mega644.h koks wdtcr registro adresas ir bitu isdestymai? |
|
|
|
|
|
WDT ant mega644. Gal turit ideju? |
Parašytas: 2009 10 21, 15:46 |
|
|
|
caca rašo: |
o kaip cia tu taimeriu gali pritrukti? Viena turi-ir uztenka... |
Vienas vienam PWM, kitas kitam PWM.. dar kokį RTC padarai.. ir žiūrėk jau nebėra. Su taimeriais didelė problema kai vienam valdikliui tenka daug darbų atlikti.
sumečiau visus headerius čia:
http://circuit.lt/saugykla/_upload/mega644.rar
čia iš CodeVision v2.04.3a |
|
|
|
|
|
WDT ant mega644. Gal turit ideju? |
Parašytas: 2009 10 21, 20:09 |
|
|
|
Sutampa. Tada nebeturiu ideju. Isbandziau ivairias proceduras i kombinacijas. Vienintele mega, ant kurios negaliu pakelt suns. Ant kitu net nemastant junginejasi puikiai, tik sita uzsispyrus |
|
|
|
|
|
|
Google paieška forume |
|
|
Naujos temos forume |
|
|
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 |
|
LEGO
Mänguköök,
mudelautod,
nukuvanker |
|
Thermal monocular
Thermal vision camera,
Night vision ar scope,
Night vision spotting scope |
|
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 |
|
GTA 6 Weapons
GTA 6 Characters,
GTA 6 Map,
GTA 6 Vehicles |
|
FS25 Mods
Farming Simulator 25 Mods,
FS25 Maps |
|
|
|