» »

programiranje procesorja

programiranje procesorja

««
7 / 11
»»

korenje_ver2 ::

A mi kdo zna razlozit, kako naj razberem signal na RB5 portu, ki mora biti povezan na gnd preko upora? LCD mi daje 5V na tem portu, vendar ko prevertim z voltmetrom, kaze samo 0.8V in program se ustavi...

korenje_ver2 ::

Pravkar usposobil lcd 8-)
zadevo moram se malo spolirat. Problem je bil pri tem, da je lcd na db1 dajal +5v, kar je povzrocalo aktivacijo napacnih crk, zato sem moral spremeniti na picu ta pin na input. V bistvu vse, kjer naj ne bi bilo signala :p
tako mi bo sedaj zrlo ~40 ciklov za napis ene crke :(. To pomeni 40*80ns=3. 2us ;(

Na koncnem izdelku bom verjetno vse db* pine na lcdju dal na pulldown... Moram se ugotoviti, kaksen upor je primeren.

edit: mislm wtf. voltaza se kr spreminja tm na db1. Visja kot je napetost, veckrat dobim pravo crko. Pri nizji 4.5V je pa crka skoraj vedno napacna.

Zgodovina sprememb…

zcetrt ::

In kateri LCD uporabljaš? Oz. kakšen.
4.

korenje_ver2 ::

LCD je DEM 16101 SYH /V

korenje_ver2 ::

na sreco db1 ni uporabljen pri 4 bitni komunikaciji

korenje_ver2 ::

A kdo ve, kako se uporablja tblrd in tblwt?

Rad bi shranil "stavke" (ascii crke) v program memori, do katerega bi potem na hitro dostopal.

npr ce imam tablo:

tabla:
da "test1"
da "damir2"
da "krneki"

Zgodovina sprememb…

korenje_ver2 ::

No koncno mi je uspelo narediti menije za lcd.

Klik!

Zgodovina sprememb…

  • spremenil: Azrael ()

Azrael ::

Forum podpira kodo, glej Html tagi slo-techa.

Če je potrebno kodo prikazati C ali kakšnem drugem od podprtih formatov, sporoči, da popravim.
Nekoč je bil Slo-tech.

CaqKa ::

daj popravi toto kodo da nebo po nepotrebnem raztegovala teme..

JutriPS3 ::

jao, pa kak monitor imaš ti? z ločljivostjo 800x600?
čist dobr se vid brez scroolanja, če ti je pa tisti drsnik spodaj toliko v napoto pa :\
Jaz pa ne maram vertikalnih drsnikov>:D

Azrael ::

Spremnjeno, se opravičujem za zamudo, forum se danes nekam čudno vede.
Nekoč je bil Slo-tech.

korenje_ver2 ::

V glavnem jedro sem ze naredil... nekako osnovo. Sedaj bo potrebno dodati samo se kodo za branje senzorja in ostalih stvari :D

povezava




Pa a kdo ve, ce obstaja kaksen digitalno upravljiv potenciometer za stimanje kontrasta in svetlosti led diodice...?

Zgodovina sprememb…

Brane2 ::

Kar ne vem, kaj boljše zgleda. Izdelana tiskanina, številni "patchi" na njej, spoj žic na LCD ali to, da je vse skupaj hotelo reči "Maaaami" preko tekstovnega LCDja, pa mu ni ratalo.

A nisi ti nekaj razlagal kako boš realiziral neko barvno grafiko s to zadevo pa neke težke animacije ?

Op cvrc gevezen zajn. :D
On the journey of life, I chose the psycho path.

zcetrt ::

Najprej odgovori: Za ledico uporabi PWM oz. pulzno krmiljenje (hitro prižiganje in ugašanje, ki ga oko zazna kot manjšo svetlost.). Digitalni potenciometri obstajajo, čeprav ne vem, zakaj bi jih potreboval, saj ko je kontrast naravnan, je to to.

Sedaj p vprašanja: Kakšno funkcijo ima ledica na LCD-ju? Da zaslepi opazovalca? Kaj si želel napisati na lcd? To kar piše? Kje so pa meniji?

Moram pa priznati, da me je vseeno kar presenetilo, da ti je uspelo priti tako daleč pri tvojem načinu dela. Tudi LLLLLLCCCCCC je nekaj. Na ploščico pa jaz ne bi pisal "Made in EU":))
4.

TESKAn ::

Drugače če hočeš osvetlitev zaslona, obstajajo LCDji z osvetlitvijo:).
Uf! Uf! Je rekel Vinetou in se skril za skalo,
ki jo je prav v ta namen nosil s seboj.

korenje_ver2 ::

zcert, ta fotka je iz casa, ko mi je prvic uspelo napisat crke :P

meniji so ze, kot vidis v kodi. Na pulzno krmiljenje sem ze pomislil, vendar bi to porabilo grozno veliko procesorskega casa.... no razen ce ima ze integrirano hardwersko generiranje pulzov, kar moram se pogledat.

zej moram sam se filmcek convertat, da vidte menije ;)

ker nimam kam uploadat tega (shrani.si noce sprejet) sm dal kr na svoj pc:
povezava do filmcka

Zgodovina sprememb…

zcetrt ::

PWM nekateri že strojno podpirajo, lahko pa ga narediš tudi s timer interruptom, procesorskega časa pa gre pol tiča po zlu. Razen, če nimaš več na voljo timerjev ali pa izvajanje ostale kode tak interrupt lahko mnogo zmoti.

Aja, še en link. Kar huda stran.
4.

TESKAn ::

Kot je bilo povedano, softwerski PWM porabi skoraj nič časa. Z digitalnim potenciometrom boš pa moral zraven dat še kak tranzistor, ker niso zmožni dat od sebe prav velikega toka. Za eno ledico ga pa kar rabiš...v vsakem primeru dosti več, kot bo en tak potenciometer kdajkoli spravil iz sebe.
Uf! Uf! Je rekel Vinetou in se skril za skalo,
ki jo je prav v ta namen nosil s seboj.

korenje_ver2 ::

ja to vem teska, da bo treba vezat prek tranzistorja...
sem pogledal malo http://datasheets.maxim-ic.com/en/ds/MA... pa ni nic drugega kot navadn cip z omejenimi funkcijami. tko da ce pomislim, bi bilo bolje kupit nek 8 pinski pic 12F z notranjim clockom, ka bi ga lahko uporabu za te zadeve :\ pa se vec outputov bi mel...

Zgodovina sprememb…

Brane2 ::

Tudi če nimaš ne PWM hardverja ne interrupta lahko tak PWM ponavadi še vedno narediš brez porabe veliko časa, vendar moraš preplesti PWM generacijo z ostalo kodo in ti potem koda zgleda tako kot tvoj hardver. >:D
On the journey of life, I chose the psycho path.

Zgodovina sprememb…

  • spremenil: Brane2 ()

korenje_ver2 ::

a obstaja kakšen ultimativni editor za assembly. Morda kaj takega, kjer ti da subrutine na desno stran in skrije vsebino... in potem ko rabis kako subrutino, takoj vids kere so in jo sam povleces v kodo.
Namrec bolj kot pozabljam svojo lastno kodo, tezje je.

pa se tole me zanima...
a velja, da ce uporabim GOTO v subrutini, da se na ukazu RETURN se vedno vrne iz subrutine?

bo treba narest nekaksen stack overflow detektor :)

Zgodovina sprememb…

TESKAn ::

Razbij kodo na več fajlov in jih potem includaj na začetku kode. Pa imaš main.s za glavno kodo, rutine.s za podrutine itd.
Drugače je PWM komot naredit, če le imaš en timer prost in interrupt za ta timer. Narediš spremenljivko v timerju, ki ti šteje +1 ob vsaki prekinitvi in ko pride ta števec do sto, ga da nazaj na nulo in postavi PWM izhod na 1. Hkrati imaš pa še eno spremenljivko, ki jo poimenuješ duty_cycle in vanjo spravljaš vrednosti od 0 do 100. Potem ob interruptu vsakič, ko povečaš prvi števec še pogledaš, če sta enaka. Ko sta, postaviš izhod na 0. Tako imaš preprost PWM, ki mu lahko nastavljaš DC od 0 do 100% v korakih po 1%. Simpl k pasulj:).
Uf! Uf! Je rekel Vinetou in se skril za skalo,
ki jo je prav v ta namen nosil s seboj.

korenje_ver2 ::

ja jz imam tak sistem v svojem programu, da uporabljam nekaksen "duty cycle" za čas. tja bi se dalo komot zbasat kej takega. se posebej glede na to, da ne najdem pravih dividerjev za tocen cas, bo morala biti frekvenca kr velika.

drgac pa suxa, da ta MLAB editor nima pluskov zravn subrutin :P

btw, novi mplab je zunaj: POVEZAVA

iiiiiiiiiii lejte kva podpira :D
Code folding/browsing to expand and collapse areas of code for more efficient browsing

Zgodovina sprememb…

CaqKa ::

Jaz razmišljam o tem da bi si s picom naredil krmiljenje tega kako imam okno na avtu odrto v odvisnosti od hitrosti avtomobila... me zanima približno kakšen pic bi potreboval za to?

korenje_ver2 ::

lol... a nimas klime?
za to zadevo je dobr tudi najslabsi pic z 8 pini. vse kar moras delat je da krmislis releje za pomik sip in odcitavas stevec.

CaqKa ::

http://ferix.uni-mb.si/wiki/index.php/P...

za IDE. vem pa da sem pri kolegu gledal enega ko ima menije razvrščene kot ta novi office.. samo se imena ne spomnim, zguglat pa ga tudi ne znam ravno prav.

ne nimam klime. kontra: a ti ne znaš na roko ledice prižigat in ugašat?
to bom delal bolj zato da se kaj naučim. če bo znalo to pol avtomatsko šipe furat pa bo tudi ok.

zcetrt ::

Vprašanje je, od kod bi dobil podatek o hitrosti.
4.

CaqKa ::

to še razmišljam. se bom moral prej pod havbo spravit.

Brane2 ::

Odgovor je v zajli kilometerštevca. Hitrost vrtenja ustreza hitrosti avtomobila.

Mogoče bi kazalo pokukat v kilometerštevec sam in pogledat, če se da tja zmontirat kak senzor...
On the journey of life, I chose the psycho path.

zcetrt ::

To bi vsekakor šlo, če bi znal človek (oz. če bi si človek upal) odmontirati armaturno ploščo oz. števčno ploščo. Vem, da se je kolega lotil "samogradnje" avtomobilskega števca hitrosti in se je na koncu odločil za GPS modul. Kar je milo rečeno overkill.
4.

CaqKa ::

>>> Vem, da se je kolega lotil "samogradnje" avtomobilskega števca hitrosti in se je na koncu odločil za GPS modul. Kar je milo rečeno overkill

hehe, kul.
ja če sem na skuterju odšraufal dol bom pa še na avtu.
sicer ne verjamem.. ampak možno da je tudi kak električni signal pripeljan gor ki kaže hitrost.

Zgodovina sprememb…

  • spremenil: CaqKa ()

Brane2 ::

Ne upaj na električni signal, ampak na mehansko konfiguracijo, ki bi ti omogočila enostavno montažo senzorja.
On the journey of life, I chose the psycho path.

Azrael ::

Novejši avti (Alfe vsaj od letnika1985 dalje) imajo namesto zajle v menjalniku za meritev hitrosti dajalnike impulzov in je brzinomer narejen enako kot obratomer - prikazuje število impulzov, kar zelo poenostavlja beleženje hitrosti z uC.
Nekoč je bil Slo-tech.

korenje_ver2 ::

jz se ne bi tako zajebavu z avtom... prvo probaj na motorju :P

sicer pa ta pikdev izgleda zakon. crke ima kot mirc :D
skoda da se da sam subrutine v C kodi zapirat oz odpirat...

aja pa ta moj pic podpira PWM. Zakon tudi to :D
sam skoda ker sm te pine ze uporabil, hardwera se mi pa ne da patchat vec :8)

v glavnem dons moram termometer usposobit :D

Zgodovina sprememb…

neoto ::

Novejši avti (Alfe vsaj od letnika1985 dalje) imajo namesto zajle v menjalniku za meritev hitrosti dajalnike impulzov in je brzinomer narejen enako kot obratomer - prikazuje število impulzov, kar zelo poenostavlja beleženje hitrosti z uC.


Še bolje je pa to, da ta (oz. podoben) signal dobiš direktno na konektor za radio... Moj Pioneer zna prav lepo prilagajat glasnost hitrosti vožnje...

Žiga, sem ta kolega slučajno jaz? :D

korenje_ver2 ::

Se komu sanja, kako nej berem podatke iz senzorja - ds18s20, ne da bi oviral izvajanje kode? problem je namrec pri tem, da so potrebni veliki delayi.

Jz bi najrajse uporabil timer, v katerem bi dolocil, kdaj naj zacne pic brati iz senzorja in za koliko casa. Bedno je to da mora biti branje sinhrono...

neoto ::

Kaj tako časovno zahtevnega ti sploh laufaš, da te nekaj ms dolgi delayi motijo?

CaqKa ::

jajce se morjo 3 min kuhat ;>

neoto na tole finto z avtoradiem se sploh nisem spomnil.. ima kolega to na renoju...

brainstorming... samo tisto se priklopi na obrate ne na samo hitrost avta.

Azrael ::

@CaqKa:

Ali te lahko prosim, če odpreš novo temo, da ne bomo v tej odgovarjali eden čez drugega in na koncu vsi kuhali mulo, ko se ne bo več vedeo komu je kaj namenjeno. Hvala.
Nekoč je bil Slo-tech.

vibro ::

Najprej Danilo. Obstajajo merilniki pretoka zraka v obliki veternice ki se uporabljajo naprimer v letalstvu za merjenje hitrosti (ultralahka letala). Z njim lahko meris direktno hitrost vetra skozi avto. Naprimer ce se peljes proti vetru s hitrostjo 60 kmh in je hitrost vetra 30 kmh pomeni da je dejanska hitrost vetra mimo avta 90 kmh kar pomeni da bi morala biti sipa bolj zaprta kot pa ce se peljes 60 kmh v brezveterju.

Kar se tice temperaturnega senzorja sta v datasheetu dva primera kako poteka komunikacija med senzorjem in mikrokontrolerjem. Z mikrokontrolerjem mu posljes set ukazov nato pa cakas na odziv. problem je da vse poteka na enem pinu zato ga mores nastavit enkrat kod izhod drugic pa kot vhod. Taksne stvari bi bilo lazje pisati v C++u saj je stvar bolj pregledna ter veliko lazja za programiranje. Ne vem tudi zakaj hoces da se ti program tako hitro izvaja saj ko enkrat zapises text na display tam tudi ostane dokler ga ne prepises oz zbrises. Temperaturo pa lahko osvezujes tudi na par sekund. Veselo programiranje ti zelim se naprej.

korenje_ver2 ::

vibro, kaj pa ce zapiha kaksen mocnejsi veter proti avtu? :O
V Cju ne pisem, zato ker doda en kup ukazov, ki niso dejansko potrebni za normalno izvajanje, to pomeni ekstra cikli.
Jaz sem eden od tistih, ki cilja k popolnosti. Zelim da se koda izvaja cim hitreje.

BTW, a se da tele PICe kej overclockat? >:D
Bi delal kej hitrej, ce bi se kak 10 MHz oscillator gor prklopu? :\
Hm ze kr vem da nebi, ker je +5V signal enako dolg kot 0V...

Zgodovina sprememb…

icek ::

korenje_ver2 pa si preprican da toliko obvladas asembler, da bos napisal res najkrajso mozno kodo? Danasnji C compileri so ze toliko dodelani, da ti ni potrebno skrbet okoli dolzine kode. Jaz prisegam na C.
Mikrokontroler deluje glede na takt oscilatorja. Ce mu das zunaj hitrejsi oscilator bo delal hitreje. Seveda pa so meje. Probaj, vec kot ne delat ne more.
Rider of Theli
www.air-tv.net

Brane2 ::

Te zadeve se da ponavadi kar bogato overclockat, ni pa to uporabno pri resni uporabi, ker se na to ne moreš zanest.

Ponavad potem trpita uporabno temperaturno področje in pa napetostno področje. Tudi programiranje FLASH-a in EEPROM-a zna biti problematično ( če zadeva seveda to dovoljuje). Seveda bo tudi poraba bistveno narasla.
On the journey of life, I chose the psycho path.

Brane2 ::

kar se Cja na malim mikrokontrolerjih tiče, ima IMHO stvar svoje meje.

Če se greš prepletanja rutin in podobnih stvari, beš zelo težko dopovedal Cju, da pa določena zaporedja izvajanja morajo ostati točno taka in jih kak optimizer ne sme obrniti. Tudi mu težko dopoveš, da določen del mora trajati natanko X taktov itd.

A tudi če bi se prebil skozi to, bi verjetno izgubil vso prednost optimizacije, pa tudi koda bi bila najbrž grozna, ker bi se moral boriti proti "uslugam", ki ti jih nudi compiler.

Recimo da imaš krmilnik, kjer nimaš RS-232- porta in bi ga rad naredil softversko, en izhod pa bi rad uporabil tudi za zvočnik.

Če lahko byte pio COMportu sprejmeš ali oddaš kadarkoli je očitno, da moraš znati rutino za beep prepleti z rutino za generacijo zvoka (beep-a).

Ne vidim, kako bi to naredil enostavno v Cju in tudi če bi ti ratalo, kaj bi imel od tega.
On the journey of life, I chose the psycho path.

BluPhenix ::

Enostavno (no ne ravno enostavno, za začetnika) bi to naredil tako, da bi vzel enega od operacijskih sistemov za mikrokontrolerje in potem napisal taske ki jih rabiš.

Če rutine niso predolgese da narediti čisto enostaven time-slice sistem, ki se na vsake toliko ciklov zbudi in izvede rutino, ki je na vrsti, s tem res ni veliko dela. Za ta DS senzor bi bila to tudi ena od varjant.

Sicer pa korenje ... imaš timerje, uporabi jih. Ko daš senzorju ukaz konverzije lepo zaženeš timer, ko preteče 800ms, timer izvede interrupt, ki prebere podatke s senzorja, kje je problem?
Podpisa ni več, ker so me poskušali asimilirati.

Brane2 ::

Ja, seveda. Recimo da imaš takt 4MHz in bi rad delal pri recimo 38400 kbps. Ena perioda ti znese 26 mikrosekund, torej pri tem taktu samo 26 ukazov.
Pa recimo da rahlo overklokaš zadevo na 4.9 MHZ in imaš v času enega bita ravno 32 ukazov.

Treba je vedeti,d a to ni zadosti za sam začetek sprejema. Dokler ne dobiš start bita, moraš semplati vhod veliko hitreje in šele ko zaznaš start bit se moraš pomakniti na mesto, kjer ocenjuješ, da je sredina bita in šele od tam semplati na vsak bit.

V času 32 ukazov moraš torej zajeti podatek, in ga postaviti na ustrezno mersto v nekem bufferju. A to je samo, kar se te rutine tiče in samo med sprejemom, ko si se enkrat že sinhroniziral. Poleg tega ni to edino opravilo, saj je treba zgenerirati beep in mogoče tudi poslati kak bit po COM portu.

V tako omejenih razmerah bo težka s Cjem in ostalo kramo.
On the journey of life, I chose the psycho path.

VolkD ::

Brane2, se popolnoma strinjam s tabo. Vendar, vse prevečkrat sem se zaplezal v situacijo, kjer sem moral ko malo nor programirati v assemblerju. Zapravil sem ure in ure časa. Kasneje se je izkazalo, da sem uporabil "podhranjen" procesor.
Glede na ceno časa je v cilju spoštovanja do samega sebe, zelo pametno za zelo majhno razliko denarja vzeti močnejši procesor.
Je pa res, da je assembler zelo priporočljivo poznati, saj posamezne dele programa znotraj C main lahko naredimo tudi v assemblerju. Na ta način elegantneje rešimo na videz nerešljive situacije.
Preden zaspiš zapri oči. Preden zapreš oči, ustavi avto.

BluPhenix ::

Brane, malo kompliciraš.

Sicer pa po drugi strani, govoriš o mikrokontrolerju brez RS-232 porta ... in potem se sprašuješ zakaj bi se sploh mučil z implementacijo ... to tudi meni ni jasno, daj ima danes večina mikrokontrolerjev že vsaj 2. Tako da primer ni bil ravno najboljši ...

Compilerju se da dopovedati marsikaj. Če že drugače ne gre, se v c kodo doda assembler za časovno/izvajalno kritične dele. Sej se vednao dela tako.
Podpisa ni več, ker so me poskušali asimilirati.

icek ::

Brane: Vcasih je res bilo potrebno spisati cim manjso kodo, saj so imeli mali mikrokontroleri tudi po 1KB flasha in manj. Danes to vec ni problem. Ce ti zmanjka flasha, pac vzames vecji mikrokontroler. Na voljo je tudi vsa mogoca periferija, tako da se ni potrebno mucit na primer z RS232. Drugace te casovne zadeve (komunikacija) resis z timerji in se ne sekiras kako dolgo se ti koda izvaja. Je pa res, da za casovno kriticne zadeve lahko vedno vkljucis asembler kodo v C.

Jaz se nikoli nisem naletel na problem, katerega se z C-jem nebi dalo resit. ASM se mi zdi zguba casa, saj z C-jem dosti prej resis zadeve. Je pa po moje dobro, da poznas ASM ze zaradi boljsega razumevanja delovanja mikrokontrolera.
Rider of Theli
www.air-tv.net

Brane2 ::

BluePhoenix:


NIti ne. Ti imaš lahko en port, dostikrat rabiš pa lahko še enega.

ALi pa vzemi ravno primer te teme:

Stranka ima šitload PIC12C509, rada bi naredila recimo termometer, ki bi bil:

- miniaturen
- narejen s PICom, ki ga ima na zalogi in s tem DSjem( 1820 alkajježe) em
- baterijsko napajan in s čimmanjšo porabo ali pa recimo napajan kar s COM porta, tako kot recimo miška
- imel nek zasilni COM port, toliko da lahko z nečem drugim vsake toliko odčita akumulirane podatke

So, what do you do ?
On the journey of life, I chose the psycho path.

Zgodovina sprememb…

  • spremenil: Brane2 ()
««
7 / 11
»»


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Microchip MPLAB icd 2 (pic16f876a)

Oddelek: Programiranje
111115 (992) Highlag
»

PIC18F4550 in ds18s20

Oddelek: Elektrotehnika in elektronika
191882 (1561) snow
»

Zelo pocasno utripanje LED diode (strani: 1 2 )

Oddelek: Elektrotehnika in elektronika
508398 (7603) a13misko
»

PIC 16f84A - utripanje

Oddelek: Elektrotehnika in elektronika
222087 (1887) ql000
»

mikrokontrolerji, programatorji, c/asm ?

Oddelek: Elektrotehnika in elektronika
292854 (2473) snow

Več podobnih tem