Arduino vs. poseban Atmega kontroler

Nemas straha. Ostane ti dovoljno vremena da uz sve to processor rjesava jos i algoritam za igranje saha i da na zvucniku generira muziku na vise kanala :-))

--
Let There Be Light 
Custom LED driveri prema specifikacijama 
 Click to see the full signature
Reply to
Chupo
Loading thread data ...

U ostalih 95+ posto vremena moze raditi jos 150 stvari i jos ce mu ostati vremena. Jer ovo se odvija u interrupt-u i jos k tome koristenjem hardware-skog capture-a tako da to za processor nije nikakvo opterecenje.

--
Let There Be Light 
Custom LED driveri prema specifikacijama 
 Click to see the full signature
Reply to
Chupo

I to cak i u slucaju kad bi se komunikacija sa stanicom odvijala

*neprekidno*!!
--
Let There Be Light 
Custom LED driveri prema specifikacijama 
 Click to see the full signature
Reply to
Chupo

Da, ovde treba tek svakih 128 sekundi. E sad sam se sjetio. Da li preporu

Reply to
Mario Matovina

I u vezi ovog djela

if(TCCR3B & BIT(6))

if(TCCR3B.6==1) ?

Reply to
Mario Matovina

TCCR3B &= ~BIT(6);

i ovako jedinicu

TCCR3B |= BIT(6);

TCCR3B=(1

Reply to
Mario Matovina

Nikako! Nema sanse da bi uspio pogoditi pauzu pa da se poklopi s trenutkom slanja. Uvijek se ceka dogadjaj.

I uvijek izbjegavaj bilo kakve pauze u kojima bi processor stajao, osim u iznimnim slucajevima.

--
Let There Be Light 
Custom LED driveri prema specifikacijama 
 Click to see the full signature
Reply to
Chupo

BIT(x) je neki macro ili #define. Ako imas neki vrijednost A iz koje zelis izdvojiti neki bit onda za izdvajanje bita moras imati 'masku' koja bi za izdvajanje 6. bita bila:

01000000

Bitovi se broje od nule i zdesna nalijevo. Znaci ako bi htio provjeriti da li je upaljen 6. bit u variabli A onda bi napisao:

if(A & 0b01000000)

ili

if(A & 0x40)

ili

if(A & 64)

itd. s tim da 0bxxxxxxxx nije standardizirani C i to ne mora podrzavati svaki compiler.

BIT(6) je samo drugi zapis broja 64.

U C-u to ne bi radilo osim ako je definiran macro koji onda takav izraz pretvori u nesta drugo ili ako compiler nema extenizje koje to dozvoljavaju.

--
Let There Be Light 
Custom LED driveri prema specifikacijama 
 Click to see the full signature
Reply to
Chupo

Ne upisuju nulu u *registar* nego u jedan *bit* tog registra!! A bez da se 'dira' ostale bitove.

Recmo da hoces upaliti bitove u variabli A koji su definirai maskom

01111111 = 0x7f

U tom slucaju ce izraz

A = A | 0x7f upaliti taj bit a bez da poremeti i druge bitove.

A |= 0x7f je drugi zapis istog izraza

Tu se znaci koristi OR s maskom.

Ako pak zelis ugasiti bit u variabli A koji je definiran tom istom maskom ali bez da promijenis ijedan drugi bit, onda moras sve jedinice u maski zamijeniti nulama a sve nule jedinicama i onda napraviti AND s tom vrijednocsu pa je to:

A = A & (~0x7f) ili ljepse zapisano

A &= ~0x7f

Nacrtaj si to u binarnom obliku pa ce sve biti jasno. Znaci ako zelis u nekoj variabli ugasiti 6. bit koji je definiran s maskom:

01000000

Onda to napravis tako da prvo taj byte invertiras i dobijes:

10111111

A nakon toga napravis AND izmedju variable i tog byte-a. Lako se vidi da se niti jedan drugi bit osim ovog gdje je nakon invertiranja jedinica nece promijeniti a da ce taj sigurno biti nula.

Takvim bi nacinom unistio sve ostale bitove u tom registru a svaki od tih bitova ima vaznu funkciju!!

Plus toga, ovaj drugi izraz nema smisla.

Reply to
Chupo

Te *bitove* gdje su u masci jedinice. Sve treba pisati u mnozini a u programu je slucaj u kojem je u masci upaljen samo jedan bit jer moramo setirati ili resetirati samo taj jedan bit u registru.

--
Let There Be Light 
Custom LED driveri prema specifikacijama 
 Click to see the full signature
Reply to
Chupo

Ha! mogao bi, to sad radim na kompjuteru. Pauza je varijabla. i ovisno kad

e.

at.

nula u registar? Taj post je zadnji od moja tri za redom.

Za if petlje - meni bi odgovarao ojan oblik u heksadekadskom zapisu.

Reply to
Mario Matovina

U mikrokontrolerima koje koristis ne mozes signal snimiti pa kasnije obradjivati jer za to nema dosta memorije i pauza ne dolazi u obzir.

Pa odgovorio sam ti vec u 4:17.

Nisam shvatio na sta mislis.

--
Let There Be Light 
Custom LED driveri prema specifikacijama 
 Click to see the full signature
Reply to
Chupo

Tek sam kasnije dobio taj post.

&= ~0x7f.
Reply to
Mario Matovina

formatting link

Reply to
Mario Matovina

mmers/and-tech/#

Reply to
Mario Matovina

To nije najbolja praksa jer ce tako napisan program biti nepregledan i cak i vec nakon samo par tjedana ces se tesko snaci ako ce trebati nesta mijenjati.

To se radi tako da negdje na vrhu tog file-a stavis nesta tipa:

#define maska_za_nesta 0x7f

i onda koristis opisno ime. Na taj ces nacin moci ne samo lakse pratiti program nego ces ga i moci lako preratidi za drugi mikrokontroler koj neki bit ima na drugom mjestu ili ces lako preraditi program za slucaj da ces zbog necega morati mijenjati fizicke spojeve (npr. ako ti je gumb bio spojen na pin koji sluzi za SPI komunikaciju pa kasnije hoces dodati SPI a premjestiti gumb).

Isto tako, avr-gcc za svaki mikrokontroler ima na stotine unaprijed definiranih #define-a a koji su uskladjeni s oznakama koje se koriste u datasheet-u - tako da ponekad za prebaciti program na drugi uC neces morati napraviti nista osim include-ati drugi file s tim definicijama.

Ovo neka ti bude polaziste:

formatting link

Prouci primjere, procitaj FAQ, prelistaj manual itd.

Za ovo ti ne treba kristal, dovoljno je da koristis interni oscilator na 4 MHz a bez problema mozes to sve sloziti i ako fuse-ove ostavis na tvornickim postavkama (1 MHz). Interni oscilator na vecini AVR-ova moze raditi na 1, 2, 4 i 8 MHz a vec ti je i milion instrukcija u sekundi sasvim dovoljno (u tom ces slucaju unutar trajanja kratkog impulsa kojega salje stanica imati processorskog vremena za 500 instrukcija).

--
Let There Be Light 
Custom LED driveri prema specifikacijama 
 Click to see the full signature
Reply to
Chupo

Ja kao programator koristim par otpornika zalemljenih u utikacu od paralelnog porta i program PonyProg2000. Sliku tog programatora mozes vidjeti na mojoj stranici (link u sig-u) u rubrici FAQ. Tamo za spanjanje programatora na uC koristim SOIC clip, a ovdje:

formatting link

mozes vidjeti gdje sam si za programiranje slozio konektor s 5 pinova na zelenoj plocici (pored njega pise PROG).

Ne! :-) Na sci.elektronika.mikrokontroleri trazi moj post:

'Subject: Jeftini AVR JTAG ICE - hardware-sko debuggiranje?'

koji sam poslao 22.02.2015.

--
Let There Be Light 
Custom LED driveri prema specifikacijama 
 Click to see the full signature
Reply to
Chupo

muahaha ipak radi :) :) :) LEDica blica :)

Krivo sam bio instalirao avrdude. Sad radi.

BTW, nemam paralelni port nego moram preko meni bezveznog usb porta.

Reply to
Mario Matovina

na kraju ide HEX fajl koji svi ti programi generiraju.

--

Reply to
[.Night.]

sa muxanjem ili shift registrima radi premalo portova...

--

Reply to
[.Night.]

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.