EMoRo Arduino AT Heart
Moderators: pedja089, stojke369, trax, InTheStillOfTheNight
- InTheStillOfTheNight
- Odlično uznapredovao
- Posts: 938
- Joined: 01-06-2006, 17:54
- Location: Zagreb
EMoRo Arduino AT Heart
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
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
Re: EMoRo Arduino AT Heart
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.
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.
- InTheStillOfTheNight
- Odlično uznapredovao
- Posts: 938
- Joined: 01-06-2006, 17:54
- Location: Zagreb
Re: EMoRo Arduino AT Heart
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.
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
Re: EMoRo Arduino AT Heart
tek kad pokusaju koristiti dvije biblioteke koje koriste isti timer i skontaju da ne mozekako 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?
- InTheStillOfTheNight
- Odlično uznapredovao
- Posts: 938
- Joined: 01-06-2006, 17:54
- Location: Zagreb
Re: EMoRo Arduino AT Heart
grunf wrote: tek kad pokusaju koristiti dvije biblioteke koje koriste isti timer i skontaju da ne moze
InTheStillOfTheNight
- InTheStillOfTheNight
- Odlično uznapredovao
- Posts: 938
- Joined: 01-06-2006, 17:54
- Location: Zagreb
Re: EMoRo Arduino AT Heart
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!
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
Re: EMoRo Arduino AT Heart
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 ... realno 0,1 % bi ih se snaslo i razumjelo AVR studio, Code Composer studio ili nesto trece ...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
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 ... realno 0,1 % bi ih se snaslo i razumjelo AVR studio, Code Composer studio ili nesto trece ...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
- InTheStillOfTheNight
- Odlično uznapredovao
- Posts: 938
- Joined: 01-06-2006, 17:54
- Location: Zagreb
Re: EMoRo Arduino AT Heart
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.
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
- InTheStillOfTheNight
- Odlično uznapredovao
- Posts: 938
- Joined: 01-06-2006, 17:54
- Location: Zagreb
Re: EMoRo Arduino AT Heart
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
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
Re: EMoRo Arduino AT Heart
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" ...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
http://www.ti.com/tool/EK-LM4F120XL
- InTheStillOfTheNight
- Odlično uznapredovao
- Posts: 938
- Joined: 01-06-2006, 17:54
- Location: Zagreb
Re: EMoRo Arduino AT Heart
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
Re: EMoRo Arduino AT Heart
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