Stránka 4 z 5

PříspěvekNapsal: úte bře 01, 2011 18:44
od Michal Karásek
Zatím to bylo jen na nepájivým poli - v podstatě zkušební aplikace pro oživení displeje 40x4 znaky, ani to tolik nekecalo, ale mělo to stálou teplotu, z čehož mám u toho analogového mezičlánku strach největší, asi se přecijen naučím obsluhovat to přerušení, místo abych tohle riskoval...btw. kdo tu tak nějak aktivně programuje atmegy v C? mohli byste někdo poskytnout nějaký vzor kódu na přerušení od pinu/časovače?

PříspěvekNapsal: úte bře 01, 2011 19:25
od MartasBrno
//=============================================================================

ISR( INT1_vect ) //preruseni od cidla drahy

{

dist_cnt++; //inkrementace pocitadla drahy - absolutni hodnota ujete drahy

status = 1; //nastaveni stavove promenne signalizujici provedeni preruseni

}
//=============================================================================
ISR( TIMER1_OVF_vect ) //preruseni od casovace 1

{
ADCRES = (unsigned int)GetADCSample(3);// 3=Un, 0=Zasoba
zasoba = (unsigned int)GetADCSample(0)/12; //napeti z AD prevodu delim na litry

status = 1; //provede se Measure()
}

//=============================================================================

Základem všeho je datasheet od té megy.

PříspěvekNapsal: úte bře 01, 2011 19:32
od Michal Karásek
sakraš, to je až tak jednoduchy? dopr. čic asi zase nasadim do nepajivyho pole procik a jdu si hrat, dik

PříspěvekNapsal: úte bře 01, 2011 19:41
od MartasBrno
No, ono to je jednoduchý, ale chce to vědět co chceš vlastně udělat. Taky je nějaká kultura psaní, to u mně nenajdeš, ale někteří to umí. Obsluh apřerušení má být jednoduchá a nemá dlouho trvat - takže když čtu převodník, nebo pin, nebo mi přeteče časovač, tak si uložím hodnotu do proměnné a končím, zbytek zpracuju během průchodu smyčkou. Nemá se z přerušení volat deset do sebe vnořených funkcí. Proto to vypadá jednoduše, je tam jen to nejnutnější.

Tak těď by to chtělo osvětu, od nějakého odborníka, máme se co učit :-D

PříspěvekNapsal: úte bře 01, 2011 20:11
od Michal Karásek
To jo, jinak díky moc, už to chodí ve zkušebním režimu (dioda, na přerušení blikne třikrát rychleji :lol: - ale na odzkoušení funkce dostatečné), teď se zase na čas ponořit do útrob cécčka, odstranit analogové mezičlánky a přepsat, ještě vyzkoušim přerušení od časovače, to by mi mělo pro základní funkce stačit.

PříspěvekNapsal: úte bře 01, 2011 20:23
od MartasBrno
Těch přerušení a nastavení módu časovače je několik, docela je potřeba to důsledně projít co o tom v datašítu píšou.

PříspěvekNapsal: úte bře 01, 2011 22:24
od Michal Karásek
datashitt je základ, o tom žádná, až se v tom začnu šťourat pořádně, vykašlu se na nabízené varianty CodeVisionu a prostě to podle datašítu přepíšu v původním kódu - ale jako člověk líný si nechávám i nastavení portů generovat a potom zkopíruju do původního programu - v tomhle případě holt kalkulačka a převod DEC->HEX :mrgreen:
A pro sebe si dám pro příští dny zásadu - míň psát na web, víc programovat

PříspěvekNapsal: úte bře 01, 2011 22:42
od veliz
MartasBrno píše:ISR( TIMER1_OVF_vect ) //preruseni od casovace 1

{
ADCRES = (unsigned int)GetADCSample(3);// 3=Un, 0=Zasoba
zasoba = (unsigned int)GetADCSample(0)/12; //napeti z AD prevodu delim na litry

status = 1; //provede se Measure()
}

//======================================================================



V tom přerušení postrádám reinicializaci např.:

TCNT1=0xAB; // Reinitialize Timer 1 value

Jako příklad uvádím obsluhu přerušení od časovače 2 (ATmega128):

// Timer 2 overflow interrupt service routine
interrupt [TIM2_OVF] void timer2_ovf_isr(void)
{

TCNT2=0xEF; // Reinitialize Timer 2 value
tim2++;
if (tim2 == 0) {
LED2 = !LED2;
}

}

a namódování

// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: 15,625 kHz
// Mode: Normal top=FFh
// OC2 output: Disconnected
TCCR2=0x05;
TCNT2=0xEF;
OCR2=0x00;

PříspěvekNapsal: stř bře 02, 2011 10:41
od Petr HC
MartasBrno píše:Těch přerušení a nastavení módu časovače je několik, docela je potřeba to důsledně projít co o tom v datašítu píšou.

Já jsem skončil programováním přerušení v assembleru u 8051. Pokud má ATMega shodné jádro, pak třeba trochu pomůže toto: INT_C11.jpg. Opravdu to není "sranda". Dál se tím už nehodlám zabývat.

PříspěvekNapsal: stř bře 02, 2011 16:34
od Saša
:( Tuo jsu úplně mimo :( Zlatá dobrá TTL logika :| No nic rozjetý Expres se již pěšky dohonit nedá . Ať tedy vládnou mikroprocesory . Po GO 043 v ní bude asi "tlouci staré dobré srdce" (oscilátor) z MH7400 a bude udávat rytmus technologiji dnešní :roll:

PříspěvekNapsal: čtv bře 03, 2011 21:15
od Dusan
Petr HC píše:
MartasBrno píše:Těch přerušení a nastavení módu časovače je několik, docela je potřeba to důsledně projít co o tom v datašítu píšou.

Já jsem skončil programováním přerušení v assembleru u 8051. Pokud má ATMega shodné jádro, pak třeba trochu pomůže toto: INT_C11.jpg. Opravdu to není "sranda". Dál se tím už nehodlám zabývat.


porovnavat trabanta s mercedesom.... asi taky rozdiel je medzi nimi....

PříspěvekNapsal: čtv bře 03, 2011 22:32
od Michal Karásek
takhle se to snad ani porovnávat nedá, měl jsem jeden čas na škole po rukama (a možná že ty vývový desky tam ještě na laboratořích jsou) 8051 od Xilinxu či od koho za nějakých 600kc/kus, jádro 8051 oblepený veškerejma možnejma i nemožnejma věcma, ke kterejm jsem se pro nedostatek času vůbec nedostal, jen jsem o nich věděl, včetně integrovanýho USB, výstupního řadiče portů řízenýho vnitřní sběrnicí, CAN, hodně rychlejma ad převodníkama atd...). Mělo to něco do sebe, pravda je že ATmega/ATtiny jsou uživatelsky daleko přívětivější, i když občas trošku těžkopádné, ale to stejně bude mým programováním a ne procesorem.

PříspěvekNapsal: sob bře 05, 2011 11:40
od Petr HC
Michal Karásek píše:... 8051 od Xilinxu či od koho za nějakých 600kc/kus, jádro 8051 oblepený veškerejma možnejma i nemožnejma věcma, ke kterejm jsem se pro nedostatek času vůbec nedostal,

Všechno je to o času. Mně se s 8051 nejvíce líbil RD2kit_big.

PříspěvekNapsal: sob bře 05, 2011 19:21
od Michal Karásek
To ty desky co byly na fakultě byly o dost větší, bo měly integrovaný periferie jako displej, vnější RTC atd., ty zmiňované v minulém příspěvku byly součástí procesoru :)

Re: Elektronická "udělátka"

PříspěvekNapsal: pon pro 24, 2012 21:37
od Dusan
Ako skoncil tento projekt :D