EMoRo Arduino AT Heart

Rasprava o AVR mikrokontrolerima, AVR projekti i drugo vezano za AVR...

Moderators: pedja089, stojke369, trax, InTheStillOfTheNight

Post Reply
User avatar
InTheStillOfTheNight
Odlično uznapredovao
Odlično uznapredovao
Posts: 938
Joined: 01-06-2006, 17:54
Location: Zagreb

EMoRo Arduino AT Heart

Post by InTheStillOfTheNight »

Pozdrav forumaši,

U zadnje vrijeme bavim se razvojem HW-a za Arduino At Heart projekt pa nisam si baš puno radio s Arduinom, iako sam u IDE-u vrlo lako skužio gdje se što nalazi... Naime, dao sam si dosta truda i nazovimo to slobode, razviti jedan Arduino board, slike su u prilogu i sad mi je ostao još software...

Uspio sam dići i bootlader, čak imam i sve funkcije koje rade iz IDE-a jer sam ih implementirao u Arduino IDE, no naravno postoji problem... Zanima me koliko Vas koji programirate u Arduino IDE-u koriste gotove funkcije Arduinoa? Isprintao sam si Arduino core i malo mi je muka od tih stranica jer ima brdo software-a.

Prvo mi nije jasno zašto su uopće tako nabacali biblioteke jer dio je u CORE-u dio je u bibliotekama? Jel tko uopće koristi sve arduinove biblioteke i koliko Vas uopće zapamti imena funkcija? Ne znam što sad da radim, ili da napišem sve svoje funkcije ili da se prilagođavam Arduino funkcijama... Zanima me najviše od ekipe koja koristi arduino mišljenje o tome. U prilogu je i popis mojih funkcija koje imam završene za arduino.

https://www.dropbox.com/s/2ujxraazucf71xl/EMoRo.rar
InTheStillOfTheNight
User avatar
zigzag9
Napredujem
Napredujem
Posts: 193
Joined: 06-06-2011, 23:35
Location: HR

Re: EMoRo Arduino AT Heart

Post by zigzag9 »

Gotovo redovito koristim Serial, SPI, LCD od ovih libova šta su built-in. Sve ostalo što mi treba, uglavnom potražim po netu, i tu bih posebno pohvalio Adafruit, koji se stvarno trude pokriti sve hobi potrebe.

Ako misliš raditi nešto da je Arduino-compatible, mislim da ti je najbolje ne izmišljat pretjerano toplu vodu, već iskoristiti već implementirane funkcije i libove u core-u, a ove custom stvari dodati u obliku nekog librarya, te dodati support za tvoj board u "boards.txt" file.
User avatar
InTheStillOfTheNight
Odlično uznapredovao
Odlično uznapredovao
Posts: 938
Joined: 01-06-2006, 17:54
Location: Zagreb

Re: EMoRo Arduino AT Heart

Post by InTheStillOfTheNight »

Skužio sam kako implementirati sve u Arduino, zapravo samo napravim novi CORE, nazovem ga kako hoću i ubacim Variants file te napravim novi board u board.txt fileu... To sve radi, tek sam počeo prepisivati core, izbaciti ću sve one define-ove tipa #ifdef(USBCON) jer nije za moj board i takva sranja koja su vezana za ostale boarde

Hm, ali nisam nigdje u tom coreu vidjeo SPI i LCD? Sad sam u totalno novom podrucju pa mi recimo nije jasno kako u arduino napraviti jaaako puno servo objekata i onda koristiti neki lib koji koristi recimo TIMER 1?

Kako sam vidjeo recimo u SERVO libu koriste se 16 bitni TIMER-i pa mi nije jasno kako programeri u arduinou mogu znati koji TIMER je pojeo neki od libova da im se ne dogodi da isti TIMER pokušavaju koristiti za 2 biblioteke?

Ja sam mislio ubaciti sve libove arduino-a u svoj core, nije mi jasno zasto su ih uopce stavili kao lib kad su ih mogli napraviti u coreu i onda ne bi bilo potrebe za #include.... arduino/core/Arduino.h bez problema može napraviti #include svih libova, naravno ako se nešto neće srušiti što još nisam skužio baš najbolje.
InTheStillOfTheNight
User avatar
grunf
Pravo uznapredovao :)
Pravo uznapredovao :)
Posts: 286
Joined: 19-04-2008, 14:22
Location: Cvjećara

Re: EMoRo Arduino AT Heart

Post by grunf »

kako programeri u arduinou mogu znati koji TIMER je pojeo neki od libova da im se ne dogodi da isti TIMER pokušavaju koristiti za 2 biblioteke?
tek kad pokusaju koristiti dvije biblioteke koje koriste isti timer i skontaju da ne moze :D
User avatar
InTheStillOfTheNight
Odlično uznapredovao
Odlično uznapredovao
Posts: 938
Joined: 01-06-2006, 17:54
Location: Zagreb

Re: EMoRo Arduino AT Heart

Post by InTheStillOfTheNight »

grunf wrote: tek kad pokusaju koristiti dvije biblioteke koje koriste isti timer i skontaju da ne moze :D
:ohno: :azdaja: :azdaja:
InTheStillOfTheNight
User avatar
InTheStillOfTheNight
Odlično uznapredovao
Odlično uznapredovao
Posts: 938
Joined: 01-06-2006, 17:54
Location: Zagreb

Re: EMoRo Arduino AT Heart

Post by InTheStillOfTheNight »

Ok, prosao ja citav Arduino Core te sve moguće funkcije implementirane u CORE-u, i ostaviti cu svoje misljenje o ARDUINO-u. Istina da se čitav svjet navukao na ARDUINO, to vidim iz raznih upita o njemu, ali moram priznati, ARDUINO je sranje, i to malo jace sranje. Ne znam što su ljudi uopće vidjeli u njemu, valjda 4 tipke u IDE-u od kojih je jedna za compile, jedna za upload, i ostale 2 nisam ni provjeravao...

Dako, što ne valja?
Prvenstveno inicijalizacija pozvana u pozadini kao init(); prije nego li se pozove void setup(); i void loop(); pokreće sve jebene moguće brojače i to pod određenim uvetima. TIMER0 Arduino Core uvijek koristi kao TIMER za praćenje vremena pa su sve funkcije vezane za vrijeme zasnovane na TIMER0.

No postoji jedna bitna razlika između TIMER0 i svih ostalih TIMER-a... TIMER0 se pokreće kao FAST PWM i uopće nije vezan za 1ms ISR nego 1024us ISR... Prvi problem je u njegovom preslaceru /64 koji zove ISR na overflow... Ja sam imao MEGA 2560 (16Mhz clock) kod sebe pa kad sam racunao 16Mhz/64 -> ISR call na overflow je 1024us a ne 1000us. No jasno mi je zašto su to tako napravili, a razlog je jer su željeli izvući mogući PWM korištenjem TIMER0 istovremeno za 2 svrhe. Vrijeme, i FAST PWM na OC0A i OC0B.

Svi ostali TIMER-i inicijaliziraju se kao PHASE CORRECT PWM i to u 8 bitnom modu kako bi radile funkcije PWM-a na njihovim izlazima i kako bi svi PWM izlazi bili recimo slični... osim tog prvog na TIMER-u 0 jer su napravili FAST PWM zbog ISR poziva svake 1024 us. Svi ostali su 8 bitni mod PHASE CORRECT PWM.

Funkcije izlaza i ulaza još im mogu oprostiti, iako glupo je imati funkcije koje ljudi lakše pamte kad postoje samo 3 registra AVR-a DDR, PORT i PIN... Zapravo sve funkcije vezane za postavljanje portova kao ulaz, kao izlaz ili kao ulaz sa PULL-UP otpornikom su po meni glupe jer se radi o pisanju po registrima koje valjda nitko ne želi zapamtiti...

Nadalje funkcije koje povezuju externi INTERRUPT su iskomplicirane do bola... Naime, arudino ih uopće nije složio po redosljedu INT0, INT1, INT2, nego po svojim HW pinovima, pa kad inicijaliziras vanjski prekid u IDE-u onda koristis njihov pin koji inicijalizira pravi istinski INT na HW-u, sto je obratno bilo kojoj logici AVR-a.

Funkcije koje koriste HW PWM su isto jadne... zapravo samo postave COM bitove za generiranje PWM-a pod pretpostavkom da su svi TIMER-i vec u PHASE CORRECT PWM modu, sto znaci da je nemoguce promjeniti niti mod, niti CS, nego su ljudi prisiljeni koristiti samo taj mod svih TIMER-a... Pa zaboga strasno...

UART super napravljen... Biblioteke su pisane u C++u, dio string.h CORE-a i nitko se ne mora muciti sa funkcijama C-a kad radi sa stringovima... Taj dio, svaka cast.

Tone.c također dobro napravljen, koristi 8 bitni TIMER2 i može generirati tone na bilo koji PIN.

Globalno gledajuci, ocekivao sam puno vise od ARDUINO CORE-a... No kad sam sad to sve procitao, uf... radije instalirajte AVR Studio i učite sve iznova!
InTheStillOfTheNight
User avatar
grunf
Pravo uznapredovao :)
Pravo uznapredovao :)
Posts: 286
Joined: 19-04-2008, 14:22
Location: Cvjećara

Re: EMoRo Arduino AT Heart

Post by grunf »

pozz,

super opisano, slozio bi se u svemu, ali kako radim u srednjoj skoli, smatram da je ova platforma za pocetnike odlicna i na nekom "intelektualno" prihvatljivom nivo za teenagere :D... realno 0,1 % bi ih se snaslo i razumjelo AVR studio, Code Composer studio ili nesto trece :D...dakle nije lose poceti s Arduinom, ali ako se neko zeli ozbiljno baviti istrazivanjem, imat ce kakvu bilo podlogu, koja je bolja od nikakve????sta mislis ti
User avatar
InTheStillOfTheNight
Odlično uznapredovao
Odlično uznapredovao
Posts: 938
Joined: 01-06-2006, 17:54
Location: Zagreb

Re: EMoRo Arduino AT Heart

Post by InTheStillOfTheNight »

Sama ideja je fenomenalna... pazi, nema FUSE, nema F_CPU, nema programatora, nema nikakvih podesavanja, nema muke sa AVR Studio4, AVR Studio5, AVR Studio6, nema registara, nema brojača nema apsolutno nicega...

Ne mogu reci da je koncept loš, za neke osnove programiranja je OK, ali nedo bog da netko zeli vise... Upoznati se sa registrima je gotovo nemoguce,,, ajde DDR, PORT, PIN još i mogu, ali TIMER-i su pomračina sunca... Nemreš imati ISR(vector) na 2 mjesta u SW-u jer compiler neće znati na što da preusmjeri vektor.

Dakle, moje mišljenje je da se za osnove programiranja super, ali nešto više neće ići... To više je često i velika promjena jer ne može se sa ARDUINO-a otići malo više, nego doslovno se prebaciti na AVR Studio, a to za sobom nosi puno, puno novih stvari.
InTheStillOfTheNight
User avatar
InTheStillOfTheNight
Odlično uznapredovao
Odlično uznapredovao
Posts: 938
Joined: 01-06-2006, 17:54
Location: Zagreb

Re: EMoRo Arduino AT Heart

Post by InTheStillOfTheNight »

Ajde, još protokoli komunikacije, ADC i takve stvari su mi OK, sad imati nekakvu gotovu biblioteku nije veliki problem, no ovi brojači mi ubiše logiku... Takvo računalo kao MEGA2560 ima TIMER 1, 3, 4, 5 koji su 16 bitni, , pogotovo kada gledamo što je sve moguće izvesti s takvim brojačima, poziv na overflow, Compare Match A, B ICP, Input capture, PWM na OCA, OCB... Prava je šteta takve brojače ubaciti u PHASE CORRECT 8 Bitni PWM i vrtiti ih na prescale /64... Šteta :(

Mislim, gledam sebe kad pišem SW za manje kontrolere... Pa 16 bitni TIMER čuvam kao oko u glavi jer sve što mogu izvesti na 8 bitnom ću i napraviti... Kako najčešće imam samo 3 TIMER-a na raspolaganju ovaj 16 bitni mi je spas ako nešto krene po zlu ili netko bude htio nešto ekstra. Zato mi je to malo na arduino-u glupo, ali ok, to je moje misljenje
InTheStillOfTheNight
User avatar
grunf
Pravo uznapredovao :)
Pravo uznapredovao :)
Posts: 286
Joined: 19-04-2008, 14:22
Location: Cvjećara

Re: EMoRo Arduino AT Heart

Post by grunf »

ponavljam , slažem se u potpunosti s tobom, ali nekako je moja logika, sto ne znači da je isparavna, da je na početku potrebno razviti "vještine" programiranja, a usput se nesto i "pali-gasi" i "vrti" :D...definitivno nije fakultetski nivo, imam osjecaj i tendencija je da ce nedaj bože kod nas u Bosni, postati...postoje i druge odlicne i jeftine platforme za taj fakultetski nivo, s odlično urađenim prijemjerima za sve....sta mislis o ovoj platformi???

http://www.ti.com/tool/EK-LM4F120XL
User avatar
InTheStillOfTheNight
Odlično uznapredovao
Odlično uznapredovao
Posts: 938
Joined: 01-06-2006, 17:54
Location: Zagreb

Re: EMoRo Arduino AT Heart

Post by InTheStillOfTheNight »

Nisam radio s time, ali vidim da ima i OS besplatan i brdo primjera... no ARM pa nije preporučljivo za početnike... AVR je po meni najbolji početak, čak i 8051 je ok jer nije toliko opširan... a što se tiče fakulteta, još su na Zilog Z80, baš neki profa u 68 godini života ima volje učiti nove arhitekture. Barem je tako u HR...
InTheStillOfTheNight
User avatar
grunf
Pravo uznapredovao :)
Pravo uznapredovao :)
Posts: 286
Joined: 19-04-2008, 14:22
Location: Cvjećara

Re: EMoRo Arduino AT Heart

Post by grunf »

da da, ARM je 32 bit, ma ispade offtopic, ali interesovalo ne tvoje misljenje s obzirom na iskustvo koje imas. hvala. veliki poz iz Tuzle
Post Reply