www.elektronik.si Seznam forumov www.elektronik.si
Forum o elektrotehniki in računalništvu
 
 PomočPomoč  IščiIšči  Seznam članovSeznam članov  SkupineSkupine  StatisticsStatistika  AlbumAlbum  DatotekeFilemanager DokumentacijaDocDB LinksPovezave   Registriraj seRegistriraj se 
  PravilaPravila  LinksBolha  PriponkePriponke  KoledarKoledar  ZapiskiZapiski Tvoj profilTvoj profil Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil PrijavaPrijava 

S čim nadaljevati?
Pojdi na stran 1, 2, 3, 4  Naslednja
 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Osnove programiranja AVR-jev
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
matejcek81
Član
Član



Pridružen-a: Pon 16 Mar 2009 12:32
Prispevkov: 1526
Aktiv.: 7.71
Kraj: Maribor

PrispevekObjavljeno: Ned Jan 06, 2013 11:35 pm    Naslov sporočila:  S čim nadaljevati? Odgovori s citatom

Pozdrav,

prosim, vzdržite se odgovorov tisti, ki ne preberete celotnega prispevka. Hvala.

Torej, moja pot mikro-krmilnikov se je začela davnega leta '99 s takrat popularnim PIC 16f84 v ASSEMBLER-ju. Bili so enostavni programčki.
Na fakulteti sem se prijavil z robotkom, ki išče pot iz labirinta. Program sem napisal z basic-om za pic-a, vendar se zaradi bolezni (bil sem v bolnici) tega tekmovanja nisem udeležil.
Nadalje me je pot, kot delavca ponovno zanesla v programerske vode... Nekatere projekte, pri katerih sem sodeloval lahko srečate v določenih nakupovalnih centrih. Katere in kje sem se zavezal, da ne objavim, ker je to del pogodbe.
Žalostno pri vsem skupaj je bilo to, da so želeli samo shemo vezja in HEX kodo. Moj pogoj je bil, da je PIC (edino s čim sem se srečal). Seveda sem ubral najlažjo pot (basic za PIC-a).

Kdaj mi je prekipelo? Dva dni nazaj. Ali sem spesnil program v Basic-u ali v FlowCode-u je bilo isto sranje. Na izhod sem dal signal "delay 10us" in sem pomeril signal s osciloskopom je bil signal 25uS. V FlowCode-u sem imel vsaj možnost namesto bloka dodat "custom C code" in sem spesnil:

Koda:

delay_us(7);
asm
{
   NOP
   NOP
   NOP
}


Na osciloskopu(tektronix tds2002) je bil signal 10us.

Kaj me zanima in zakaj pišem v AVR temo:
Zdaj v poplavi mikro-kontrolerjev te ali druge zvrsti me zanima ali obstaja pri atmelu kakšno orodje, ki mu lahko z ukazom dopovem, da želim 10us pulz na izhodu brez strojne kode?

Res se mi ni problem hecat z temi stvarmi za hobi. Če pa za "delo" in želim izvest projekt (ki me čaka), pa raje natuhtam nekaj drugega kot picbasic, flowcode...
Obstaja kakšen višjenivojski jezik, ki dela to, kar mu zadaš?
npr: pulz 10us na pin "PORTA.0" in da je dejansko 10 mikrosekund?

Seveda PIC odpade, zato sem pisal v to temo.

moje predznanje:
- ASSEMBLER: Zamegljeno (karkoli sem delal sem pozabil razen osnovnih ukazov).
- C: Zelo malo.
- Basic: Kar dobro.
- Visual Basic: Srednje (uporabno).
- Visual - ostalo: nula.

Visual Basic (Visual Studio) me spremlja kar nekaj časa in tudi data-logger sem naredil z njim. Tudi z PoKeys-om(prva liga za ta denar) imam izkušnje.

pa LP

ps: ne me kamenjat Smile

_________________
Če ne gre - ne obstaja!
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
gregoral
Član
Član



Pridružen-a: Pet 24 Nov 2006 9:42
Prispevkov: 688
Aktiv.: 3.04
Kraj: Ljubljana

PrispevekObjavljeno: Pon Jan 07, 2013 12:45 am    Naslov sporočila:   Odgovori s citatom

Sicer sem šele dobro začel z mikrokontrolerji ampak mislim da ti bom znal pomagat Smile.

Če hočeš natačno prožit impulze je najbolje da uporabiš vgrajen hw.
Torej zelo verjetno bo to nekaj v smislu timerja ali pwm.

Odvisno od procesorja je potem kaj lahko nastaviš.
Večina mikroprocesorjev po mojem podpira to da se izvede samo en cikel timerja ali pwm.

Recimo varianta 1:
- izberem/nastavim znano frekvenco za bazo (recimo 1 MHz)
- izračunam koliko ciklov je pri 1 MHz dolg moj interval (10 us = 10 ciklov)
- nastavim timer tako da postavi izhod na 1 in po 10 ciklih nazaj na 0
- nastavim tudi da se timer po 10 ciklih izklopi
- vklopim timer

Recimo varianta 2:
- nastavim timer ki naj pokliče rutino x vsakih 1 us (recimo Urca1us)
- uporabim globalno spremenljivko PreostanekImpulza in Urca1usVklopiCasovnik
- ko želim sprožiti impulz dolžine 10uS vpišem v PreostanekImpulza številko 10
- in potem v Urca1usVklopiCasovnik na 1
- Urca1us se pokliče vsako 1us
- če je Urca1usVklopiCasovnik == 1: postavi izhod x na 1 in Urca1usVklopiCasovnik na 0 in konča
- če je PreostanekImpulza > 1 odšteje 1 in konča
- če je PreostanekImpulza == 1 postavi izhod x na 0

Pri varianti 2 je že precej pomembno kaj počnemo znotraj Urca1us!
Mora se izvesti v čimkrajšem času (izogibaj se deljenju in moženju).

Edit:
Dodal bi še to da je tole precej osnoven scenarij.
Boljši procesor izbereš, več možnosti bo podpiral (več neodvisnih timerjev, več neodvisnih pwmjev, ...)
Zares se začne zapletati ko moraš pravilno prožiti več impulzov (sploh če so medsebojno odvisni).
Poglej si tudi tutoriale oz. sample za tvoj procesor.
Tudi kak aplication note preberi.
Marsikaj se lahko naučiš iz obstoječe kode če jo analiziraš.

LP, Gregor


Nazadnje urejal/a gregoral Pon Jan 07, 2013 1:44 am; skupaj popravljeno 2 krat
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
VolkD
Član
Član



Pridružen-a: Pet 24 Sep 2004 21:58
Prispevkov: 14228
Aktiv.: 60.06
Kraj: Divača (Kačiče)

PrispevekObjavljeno: Pon Jan 07, 2013 1:13 am    Naslov sporočila:   Odgovori s citatom

Karkoli se boš lotil, bo potrebno dobro poznati arhitekturo mikrokontrolerja.
Filozofijo kako se to rešuje ti je že predhodnik povedal. Največje možnosti do izjemno natančnih rezultatov seveda nudi assembler. No moja ocena je, da je zate ta jezik premalo produktiven. Kot izbira ti ostane torej C. Če naletiš na posamezen del, ki je časovno zahteven, ti C omogoča, da le ta del izvedeš v asm.

V bistvu sem to isto pot prehodil tudi sam. Opustil sem bascom, ker so stvari narejene v njem delale preveč nezanesljivo in ker nisem imel možnosti dostopa do vseh resourcev mikrokontrolerja. Imel pa sem to srečo, da se mi je zataknilo že pri mjem 4 ali 5-tem projektu in nisem zapravil preveč časa.

_________________
Dokler bodo ljudje mislili, da živali ne čutijo, bodo živali čutile, da ljudje ne mislijo.
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
Silvo
Moderator
Moderator



Pridružen-a: Pon 24 Feb 2003 17:09
Prispevkov: 14673
Aktiv.: 61.94
Kraj: Koroška-okolica Dravograda

PrispevekObjavljeno: Pon Jan 07, 2013 9:43 am    Naslov sporočila:   Odgovori s citatom

Predhodnika sta v glavnem vse povedala. Za natančen čas odpade notranja ura. Vzeti boš moral kristal. Procesor pa boš moral zagnati čim hitreje.
_________________
lp
Silvo
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
bpavsic
Član
Član



Pridružen-a: Pet 03 Apr 2009 20:45
Prispevkov: 354
Aktiv.: 1.79
Kraj: Maribor

PrispevekObjavljeno: Pon Jan 07, 2013 10:04 am    Naslov sporočila:   Odgovori s citatom

V bistvu je bilo že vse povedano... Sam se ponavadi izogibam višje nivojskim jezikom takrat, ko želim popolni nadzor nad kontrolerjem. Zato tudi vse take kritične dele naredim v assemblerju. Sam assembler niti ni težak, bolj je problem v tem, da verjetno delaš vsake toliko časa in vmes pozabiš. Enako je z arhitekturo mikrokontrolerja. Sam sem začel s PICi, potem preklopil na AVRje, vmes malo "počival", sedaj me je spet prijelo in sem "na novo" začel z XMegami, potem pa sta me oba Volk-a spravila na LPCje. Ta zadnje spoznavam skozi C in mi natančnost ciklov/časa zaenkrat ni bistvenega pomena.

Glede internega RC oscilatorja je pa tak. Sam največkrat ploščico naredim brez, pustim pa test-pointe za kalibracijo preko externega kristala, ki ga začasno priključim, toliko, da internega skalibriram. Primer za to (za AVRje) je tukaj (vsaj ideja): http://www.atmel.com/Images/doc8002.pdf
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
matejcek81
Član
Član



Pridružen-a: Pon 16 Mar 2009 12:32
Prispevkov: 1526
Aktiv.: 7.71
Kraj: Maribor

PrispevekObjavljeno: Pon Jan 07, 2013 2:14 pm    Naslov sporočila:   Odgovori s citatom

Hvala za odgovore,

za oscilator sem uporabil 20MHz kristal. Pač me je razjezilo, da če dam v višje-nivojskem razvojnem okolju blok, ki zakasni signal za 10us to tudi pričakujem. Vse pogoje sem izpolnil, vendar na forumu od FlowCode piše, da za kakšne male čase bolje uporabit assembler. Zakaj pa potem omogočajo zakasnitve ranga mikrosekund ? Za manj zahtevne aplikacije je super, saj osnovni programček vržeš skupaj v par minutah, podpira dosti periferije, prekinitve, itd.

Pač sem se odločil, da preklopim na nekaj druga.

Sem zasledil prav, da za določene atmele ne potrebujemo programatorja in se dejansko programirajo/debuggirajo preko USB?
Ali velja to samo za Arduino?

Hvala za pomoč in LP

_________________
Če ne gre - ne obstaja!
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
mucek
Član
Član



Pridružen-a: Tor 01 Avg 2006 10:47
Prispevkov: 5529
Aktiv.: 24.06
Kraj: Domzale

PrispevekObjavljeno: Pon Jan 07, 2013 2:34 pm    Naslov sporočila:   Odgovori s citatom

Da, atmele z vgrajenim USBjem lahko programiraš direktno s FLIPom (preko bootloaderja). No, saj lahko tako programiraš tudi ostale, samo prvič mu moraš bootloader gor dati in potem preko UARTa kodo gor poslat.

Glede časovnih težav v višjenivojskih jezikih je po mojem prej problem v samem programiranju kot v jeziku: če ti npr. v ozadju tečejo neki interrupti, ti pa za pulz uporabiš "navadno" wait komando ti bo ta logično trajala dlje časa kot bi morala, saj se vmes izvajajo še druge stvari (interrupti). In pa seveda uporaba kvarca je obvezna, interni oscilator preveč niha.

Sam delam v Bascomu, CodeVision-u in nekaj se trudim s Keilom (kaj češ, treba malo naprej v ARMe pogledat - so precej cenejši in zmogljivejši).

Pri Bascomu pogrešam, kot so že prej napisali, da velikokrat sploh ne veš, kaj se v ozadju dogaja. Dokler vse dela po pričakovanjih (no, in to je pogosto!) je super. Ko se začnejo dogajati čudne stvari in ko kodo pogledaš že stotič in še vedno ne veš, kje je problem, potem se pa začneš malo "čohati" in brskati po raznih knjižnjicah (ki so itak spisane večinoma v assemblerju) in na koncu ugotoviš, da v bistvu nisi ti zaj ... Tudi pregleden ni najbolj.

CodeVision mi je zelo pri srcu kot C prevajalnik, ker ima fletnega "wizzarda", s katerim že v štartu narediš precej kode, s katero bi se sicer kot začetnik mučil. Je pa program, se mi zdi, že malo zastarel. Sam razmišljam, da bom počasi šel na Arduino (tudi C), predvsem zaradi odlične podpore, kupa primerov za vse živo ... Všečen C compiler mi je tudi od Mikroelektronike, a je baje precej hroščat.

Če imaš voljo in čas, bi mogoče šel rajši v smer ARMa, ker so cenejši in bolje opremljeni kot AVR. Heh, pa še glede programiranja je fukiš (ne podpirajo tega vsi): ga na USB vidiš kot "removable drive", skopiraš gor hex, resetiraš in je to to!

LP, g

_________________
...lahko pa se tudi motim ...


Nazadnje urejal/a mucek Pon Jan 07, 2013 2:36 pm; skupaj popravljeno 1 krat
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
PZUFIC
Vseved



Pridružen-a: Sob 17 Nov 2007 19:06
Prispevkov: 6987
Aktiv.: 32.64
Kraj: Rakek

PrispevekObjavljeno: Pon Jan 07, 2013 6:17 pm    Naslov sporočila:   Odgovori s citatom

Ko ga začne Flowcode srati, ga serje tako, da v simulaciji vse dela na krmilniku pa nič. Sem delal zgolj neko prižiganje in ugašanje portov z 0,5-1s zakasnitvijo. No ko me je dokončno spravilo na obrate sem inštaliral MikroC, napisal 5 vrstic kode, naložil in je delovalo. Drugače sicer uporabljam Basic in je zaenkrat za moje potrebe dovolj. Poleg tega verjetno Flowcode vtakne v program vse kar potrebuješ in ne potrebuješ. Sicer to verjetno naredi tudi Basic, ampak domnevam, da v manjšem obsegu.
_________________
Ne čakaj, da se bo nekaj premaknilo pojdi in nekaj premakni.
Lp Primož
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran MSN Messenger - naslov
matejcek81
Član
Član



Pridružen-a: Pon 16 Mar 2009 12:32
Prispevkov: 1526
Aktiv.: 7.71
Kraj: Maribor

PrispevekObjavljeno: Pet Jan 18, 2013 2:12 pm    Naslov sporočila:   Odgovori s citatom

Hvala za nasvete.

Nekako se nagibam k arduino razvojnim okoljem. Za začetek bom naročil nano-ta.

Zanima me, če bi tale kombinacija delovala:
- NANO
- ISP Programator
- PIN adapter

Programator bi uporabil za nalaganje boot-loaderja.

Prosim za nasvet.

Hvala in LP

_________________
Če ne gre - ne obstaja!
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
mucek
Član
Član



Pridružen-a: Tor 01 Avg 2006 10:47
Prispevkov: 5529
Aktiv.: 24.06
Kraj: Domzale

PrispevekObjavljeno: Pet Jan 18, 2013 2:51 pm    Naslov sporočila:   Odgovori s citatom

Če boš nabavil Adruino nano, imaš bootloader že gor in programatorja sploh ne rabiš ...
(je ga pa koristno imeti, če kaj zaflashaš Smile )
Bootloader imajo že tovarniško naložen tudi vsi Atmeli z USB podporo (programiraš s Flip-om).

LP, g

_________________
...lahko pa se tudi motim ...
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
matejcek81
Član
Član



Pridružen-a: Pon 16 Mar 2009 12:32
Prispevkov: 1526
Aktiv.: 7.71
Kraj: Maribor

PrispevekObjavljeno: Pet Jan 18, 2013 3:48 pm    Naslov sporočila:   Odgovori s citatom

@mucek:

Ja, to mi je jasno, da je bootloader že gor. Gledal sem tisto opcijo, da lahko stlačiš gor bootloader, ki deluje z bascomom. Ker sem v Cju razmeroma svež, bi kaj takšnega prišlo prav. Nabavil bi dva nanota. Eden bi deloval z bascomom, drugi z arduino C-jem. Zraven tega bi prišel programator prav, če bi kakšno svojo platico naredil.

Zanima me, če lahko s tem programatorjem programiram arduino bazirane mikrokontrolerje.

Sicer ne vem, zakaj je pri nano-tu spodaj še en ogromen IC prispajkan. Čemu služi? za RS232/USB mi izgleda kar velik. Kakšna ideja?

LP

_________________
Če ne gre - ne obstaja!
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
cimer
Član
Član



Pridružen-a: Sob 07 Okt 2006 0:07
Prispevkov: 122
Aktiv.: 0.54
Kraj: Ljubljana

PrispevekObjavljeno: Pet Jan 18, 2013 4:10 pm    Naslov sporočila:   Odgovori s citatom

Pozdrav,

Nanota lahko programiraš tako iz Bascom okolja kot tudi iz arduino razvojnega okolja. Bascom podpira uporabo arduinotovega bootloaderja. Poglej v help od Bascoma. Tam piše kako moraš v Bascomu nastaviti parametre za arduino bootloader.

_________________
Lep pozdrav!

Marko S.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Obelix
Član
Član



Pridružen-a: Pon 19 Maj 2008 13:59
Prispevkov: 1881
Aktiv.: 9.05
Kraj: Maribor

PrispevekObjavljeno: Pet Jan 18, 2013 4:17 pm    Naslov sporočila:   Odgovori s citatom

matejcek81 je napisal/a:
Sicer ne vem, zakaj je pri nano-tu spodaj še en ogromen IC prispajkan. Čemu služi? za RS232/USB mi izgleda kar velik. Kakšna ideja?

Pa je za komunikacijo z USB (FT232R?). Pa sploh ni velik. Za nas, ki že malce slabše vidimo, je za spajkanje jeb... majhen Wink
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
mucek
Član
Član



Pridružen-a: Tor 01 Avg 2006 10:47
Prispevkov: 5529
Aktiv.: 24.06
Kraj: Domzale

PrispevekObjavljeno: Pet Jan 18, 2013 5:04 pm    Naslov sporočila:   Odgovori s citatom

Z ISP programatorjem lahko programiraš vse AVR kontrolerje družin Mega in Tiny (razen 6 pinskih). To, kaj uporabljaš zadaj (okolje: Bascom, Arduino ...) nima veze, programator pač rabi HEX kodo in to je to.

Kot je povedal že predhodnik, ne rabiš dveh platk, da bi uporabljal 2 programa; tudi Bascom omogoča Arduino bootloader, pa tudi če ga ne bi, bi lahko še vedno program skompajlal v Bascomu in potem iz Arduino okolja naložil HEX kodo, zgenerirano v Bascomu.

LP, g

_________________
...lahko pa se tudi motim ...
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Jaka57
Moderator
Moderator



Pridružen-a: Ned 12 Dec 2004 21:47
Prispevkov: 5819
Aktiv.: 24.56
Kraj: Grosuplje

PrispevekObjavljeno: Pet Jan 18, 2013 6:40 pm    Naslov sporočila:   Odgovori s citatom

Če boš kupil dva nano-ta potem niti ne potrebuješ ISP programatorja, ker je lahko nano sam po sebi ISP programator. Je pa dobro, da ga imaš, saj gre nalaganje bootloaderja hitreje.
Bootloader je za Arduino IDE (prevajalnik je GCC) kot za Bascom enak.
Bootloaderjev je na Netu kar nekaj, ki se v glavnem razlikujejo glede na uporabljen kontroler.
Jaz imam na svojih Arduino-tih naložen Optiboot boot loader, ki je bistveno manjši od ostalih in tudi nalaganje programa je hitrejše.
Kot je @mucek napisal, kontroler potrebuje HEX kodo, katero običajno naložiš v kontroler s programatorjem. V primeru Arduina in še nekaterih drugih "platform" pa programatorja ne botrebuješ, saj zato poskrbi bootloader in HEX, ki ga dobi preko USBja, naloži v flash.

_________________
Lp, Jaka
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Osnove programiranja AVR-jev Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Pojdi na stran 1, 2, 3, 4  Naslednja
Stran 1 od 4

 
Pojdi na:  
Ne, ne moreš dodajati novih tem v tem forumu
Ne, ne moreš odgovarjati na teme v tem forumu
Ne, ne moreš urejati svojih prispevkov v tem forumu
Ne, ne moreš brisati svojih prispevkov v tem forumu
Ne ne moreš glasovati v anketi v tem forumu
Ne, ne moreš pripeti datotek v tem forumu
Ne, ne moreš povleči datotek v tem forumu

Uptime: 493 dni


Powered by phpBB © 2001, 2005 phpBB Group