» »

programiranje procesorja

programiranje procesorja

««
9 / 11
»»

Brane2 ::

Oće to, ponekad... :D
On the journey of life, I chose the psycho path.

Zgodovina sprememb…

  • spremenil: Brane2 ()

korenje_ver2 ::

no karkoli ze, zdej sem naredil softwerske timerje :D

vsak timer ima svoj id, prvi del idja je programska addressa od subrutine, drugi del pa stevilka. pol pa se ostale funkcije...

to pride cca 50 vrstic za vstavitev timerja, kar znasa ~4us. En vnos znasa 9 bajtov. Vec kot dolocim bajtov, dlje bo brskalo po ramu in iskalo, kje se lahko vpise oz prepise timer.

Zadeva bi bla mnogo lazja, ce nebi mel high in low za lokacijo v programskem spominu... oz ce bi mel polno 16bitno delovanje.

ql000 ::

Welcome to the world of uC programming. Jaz sem zadnjič skoraj umrl, ko sem iskal neki bug. Po TREH dneh sem ugotovil, da je bil v for-stavku namesto znak manjše, znak večje. Pošiziš!

korenje_ver2 ::

/me is a C hater :|

sicer pa kako ti uspe narest napako v Cju >:D

Tutankhamun ::

Zelo enostavno :D.
Pa lih dons sm brov knjigo Writing solid code za C. Kakšni zanimivi Bugi, sploh si neb mislu kje use tičijo pankrti. Prov zanimiv pregledat.

Drgač mi je pa ta tema prov zakon, komi čakam da korenje kej napiše... Zmer se nasmejim ;)
Tko da kr piši kaj kej delaš, čim več
AMD Phenom QUAD 9950 Black Edition, 8GB

Zgodovina sprememb…

korenje_ver2 ::

:D

men so pa glih vasi responsi vseć >:D

korenje_ver2 ::

za znoret.... neki sem spremenu, pa ne vem kaj... in zdej mi ne dela vec....
Zakaj tile stavki ne preberejo podatkov, ki so na lokaciji menu1 in jih zapisejo v ram na #menu+0, #menu+1 itd...
???
ok #menu+0 in #menu+1 kaze da je 0000000 00000000...




#menu res menu_length

_menu_init
MOVLW HIGH menu1
MOVWF #buffer+1
MOVLW LOW menu1
MOVWF #buffer+2
__menu_init
MOVFF #buffer+1, TBLPTRH
MOVFF #buffer+2, TBLPTRL
CALL _menu_exec, FAST ; write menu tables to RAM
CALL _menu_exec_over, FAST ; execute code for position
RETURN FAST

_menu_exec ; read from FLASH, write to RAM
MOVLW menu_length
MOVWF #buffer+1
LFSR FSR0, #menu
__menu_exec:
TBLRD*+
MOVFF TABLAT, POSTINC0 ; copy from program memory to RAM
DECFSZ #buffer+1
BRA __menu_exec
;*******************************
MOVF #menu+0, W
call _lcd_ddram_a, FAST
call _lcd_showbits, FAST
MOVF #menu+1, W
call _lcd_ddram_b, FAST
call _lcd_showbits, FAST
.led1 .255
movlw .250
call _delay_s
;********************************
RETURN FAST

ORG 0x800
menu1
da H'0201', H'0403', menu2, H'0807', _over_time, H'0000', _timed_time, H'0064'

Zgodovina sprememb…

TESKAn ::

MOVFF TABLAT, POSTINC0 ; copy from program memory to RAM
Če jaz prav razumem tvojo kodo, moreš tle dat namesto POSTINC0 #menu+0, #menu+1 itd.
Uf! Uf! Je rekel Vinetou in se skril za skalo,
ki jo je prav v ta namen nosil s seboj.

korenje_ver2 ::

teska ze ze...
sam to je indirektni zapis, ki naj bi zacel pisat na #menu+0 vse do #menu+((#buffer+1)-1)
zaradi fsr0 a ne?

postinc0 naj bi inkrementiru #menu, če je naprimer #menu 0x60, bo v naslednjem loopu 0x61 itd...

dejansko bi moralo tisto prebrati data na lokaciji menu1 in naloziti 01h v #menu+0 in 02h v #menu+1.

Zgodovina sprememb…

TESKAn ::

Maš prov. Si pogledal s simulatorjem, kaj ti tu dela tvoj program? Pogledaš vrednosti vseh spremenljivk, če so take, kot morejo bit. Po mojih izkušnjah tako še najhitreje vidiš, kje se zatika.
Uf! Uf! Je rekel Vinetou in se skril za skalo,
ki jo je prav v ta namen nosil s seboj.

korenje_ver2 ::

Lej tole teska.... tisti #menu
enkrat je 0x123 (lokacija na ramu)
drugic pa 0x23







aaaaaaaaaa sele zdej mi je prslo....
da ni slucajn banking vklopljen in ni high bita za ram notri?

aja zdej vidm... da je BANKED enako 1, kar pomeni da upošteva BSR register. đizs a ni tko da je po defaultu 0 oz ACCESS.

aha ce spremenim v access dobim pa tole:
Error[171] C:\ASM\LCD\SUBS_MENUS.INC 4 : Address specified is not in access ram range of [0x60, 0xFF]

matr zadnjic v zivljenju sm kupu 8 bitni kontroler!!!!

ok z banksel dela cool, sam bo zdej treba celo kodo preuredit, da se bo upostevalo ram banke.

Zgodovina sprememb…

  • zavaroval slike: Azrael ()

korenje_ver2 ::

zakon vse sem pogruntu...

tiste addrese, ki so nad FF bytov v ramu so itak uporabljene samo pri ukazu LFSR, ta pa sprejme konstanto veliko FFF, tko da ni treba bankirat.
V glavnem nc ne bo treba cele kode spreminjat. :))

pa zakon srbija je zmagala na euroviziji. so itak mel najboljsi komad :D

korenje_ver2 ::

yeeeeeee... uspesno sem ustvaril softwerske timerje. Sedaj lahko poljubno dodajam timerje, ki se bodo izvajali na frekvenci (osnovni_hardwerski_timer)*(timer_high)*(timer_low)
Kolicina moznih timerjev se fiksno nastavi, nato pa v tem hw timer loopu dekrementiram vse timerje in pozenem kodo, ce je ze na 0.
Ram ki ga zavzame je pa 9 bajtov na timer. Ce bi mel kak megabajt rama, bi se mi koda lahko 3x hitreje izvajala, tko pa ...
v glavnem koda bo kmalu na vpogled :P

naslednji problem, ki ga vidim je ta, da ko pritisnem vse tri tipke, se mi kontrast na lcdju ful zmanjsa. nc jasno zakaj je to tako...
ob pritisku na tipko je +5V na enem izmed pinov na picu. Baje ta kuri 20mA, max 35mA, kar pomeni max 105mA, ce drzim vse tipke. Bi morda moral dati upor med pinom in tipko? Sedaj imam pulldowne na tipkah prek 300kohm uporov, pa ne vem zakaj.

BluPhenix ::

Kontrast ful zmanjša in ni jasno zakaj. Lahko 2x ugibaš zakaj. Očitno je prešvoh napajalnik s katerim furaš in ti tipke žrejo odločno preveč toka, ko so pritisnjene.
Podpisa ni več, ker so me poskušali asimilirati.

korenje_ver2 ::

kaj pa vem no... napajalnik je iz ohisja in pise da daje na tistem molexu 1A, kar bi moralo zadostovati. Kot sem ze vprasal, ali bi pomagalo, ce bi dal kak upor neposredno med tipko in PICom?

snow ::

Ko je pin definiran kot vhod (stanje visoke impedance), teče v njo tam 0,01 mikroA.
Saj imaš nastavljen pin kot vhod (TRISŽx = 1)? :\

Tipko je najlažje imeti narejeno tako, da skelene na maso (logično 0), ko je pritisnjena ter vklopljen interni pull up (logična 1, ko tipka ni pritisnjena).
Random mutation plus nonrandom cumulative natural selection - Richard Dawkins

korenje_ver2 ::

kle je moj rezultat do sedaj:

povezava

Rabim pa.... sej veste. pretvornik binary to ascii za pic18F. ma kdo razen interneta? :D

Brane2 ::

Kul dizajn. Edino ime je preskromno. Mogoče iUra ? :D
On the journey of life, I chose the psycho path.

JutriPS3 ::

:D Dej še postaj Korenje! Prva stvar ko prižgem PC je da uletim v to temo pogledat kako napreduje.
You just made my day

korenje_ver2 ::

hej hej hej... to je alfa verzija ;) :\
brane, to je meni. ko se premaknes v dolocen meni, se pozene del kode in en timer.
v tem primeru timer bere podatke iz rama in pise na zaslon.

v ozadju sicer dela se en timer za uro... ka je dokaj kompliciran, vendar se bo to resilo z enim 32khz kristalom, ki ga bom dodatno priklopil pri "koncnem izdelku" :P

Zgodovina sprememb…

Tutankhamun ::

Korenje nared si eno ascii tabelco pa pol bereš vn.

Sej maš tko dost memorije, unih 60 številk boš pa že shranu :D

Če pa na netu kej najdeš pa napiš, da vidm kak se to hitrej nardi ;)
AMD Phenom QUAD 9950 Black Edition, 8GB

Tutankhamun ::

Al pa še laži.
Maš dve spremenljivke desetice pa enice pol pa sam bereš vn iz tabelce.


display (tabela [desetice])
display (tabela [enice])

tabela [] = '0','1','2','3' ... '9'
AMD Phenom QUAD 9950 Black Edition, 8GB

Brane2 ::

korenje_v2: Če bi ti delal bombne detonatorje za Alkajdo, bi dnevniki spet postali zanimivi... :D
On the journey of life, I chose the psycho path.

Zgodovina sprememb…

  • spremenil: Brane2 ()

tonic ::

korenje_ver2: ko si že glih pri uri, in si se pošteno poglobil v stvar, ti priporočam uporabo kakšnega DCF77 ali vsaj PCF8583

bo vsaj približno točna, čeprav binarna :D

pa še cajgre oz. kazalce boš lahko narisal na grafični display...

Brane2 ::

V bistvu ne rabi PCF8583 in podobne šare, ker se da narediti zelo solidno uro že s samim PICom, če je nanj obešen kvarc, le levak ne smeš biti.

Mislim, kaj ste napalamudili dosedaj, to kar res ni.

Na koncu bo tip šel še cezijevo ali vsaj rubidijevo časovno normalo kupit, da bo iz tega naredil ekvivalent eclheapo $1 budilke... :D
On the journey of life, I chose the psycho path.

neoto ::

Prednost teh time-keeping čipov je v tem, da porabijo res zelo malo štroma in se lahko ob enem kondenzatorju tudi po cel dan napajajo (primer Dallas DS2417(oscilator running) + 3300uF kondenzator - zdrži BP čez noč, mogoče celo več, a nisem imel časa testirat). PICa lahko sicer daš v sleep, ampak potem moraš na ne toliko točni RC oscilator preklopit...

Brane2 ::

Že v redu, ampak tole ni problem tu. Tip napaja zadevo iz PCjevega napajalnika, če sem prav razumel.
On the journey of life, I chose the psycho path.

korenje_ver2 ::

oj nazaj sem. tm v datasheetu je example, kako se naredi real time clock z timer1 in 32.2khz kristalom. tko da bom naredil tko.

kle so pa konverterji http://www.piclist.com/techref/microchi...

uporabna konverterja sta pa tale: http://www.piclist.com/techref/microchi...
od scotta datalla

(btw dons je 31°C zunaj :D http://the-nox.com/cgi-bin/temp.pl )

Zgodovina sprememb…

Zlikovec ::

Še moj prispevek k obravnavanemu problemu z uro, priporočam ti uporabo enega zunanjega RTC modula, FM31256, ki ga na PIC priklopiš prek I2C vodila. Zraven daš še en supercap, okol 1,5 F, pa imaš baterijsko podporo za cel teden brez napajanja, zraven boš pa pridobil še nekej izkušenj s komunikacijo, ki je v embedded sistemih zelo pomembna. Pa čimprej se prestavi na C jezik - asemblerske osnove so ti približno jasne, in jih boš pri C-ju lahko dobro uporabil. Priporočam ti še en zastonjski prevajalnik s solidnim IDE: MikroC
Vidim pa, da imaš kar velik motiv in mislim, da boš hitro zakapiral, za kaj se pri tej stvari gre ...
Ducati Monster, Ducati 750 SS FF, Yamaha XJ6,
Honda Hornet 600, Yamaha Fazer 800, R NineT

korenje_ver2 ::

nocem posebi cipov za te stvari, ko imam lahko preprosto en majhen kristalcek.

Kle je moja dokoncana ura:
http://the-nox.com/ibm60gb/lcd-ura-1.wmv

Tm na vsakih 11 sekund preskoci stevilko, to je zato ker je timer ki prikazuje stevilke nastavljen na 1.09s... drugace ne gre zaradi 48mhz oscillatorja. ampak v ozadju se stevilke pisejo tocno za cas, tko da je zadeva narejena tako da ne odstopa vec kot 1 minuto na leto.

sam ta C mi je pa ful prevec zakompliciran. niti ne vem kje se ga zaceti uciti...
sam moram pa rect da tale mikrobasic izgleda zakon. skor "drag & drop" zadeva. (to mi ni vsec :\, ceprov je zlo produktivno)

me pa zanima, ce tale ze integrirana komunikacija z lcdjem deluje v "skoraj" non-blocking nacinu, tko kot pri meni :D
aja pardon, sem gledal za basic :D

Zgodovina sprememb…

BluPhenix ::

Čakaj na začetku si govoril da hočeš imet dva pica, enega za uro, enega za program, potem pa še enega za LCD, zdej pa nočeš posebej čipa, ki drži točno uro?

S kristalom ne boš naredil nevem kako točne ure, dokler ne boš imel pri roki dobrega frekvenčnega merilnika, s katerim bi uglaševal "nihajni krog", oz. frekvenco kristala.
Podpisa ni več, ker so me poskušali asimilirati.

korenje_ver2 ::

ma sm naredu tak dobr buffering sistem in timerje, da bi ga blo zal, ce bi uporabu pic posebi za cas :D
Posebi pic bom uporabil kvecjemu za graficni lcd iz mobitela... ko mi bo nekoc uspelo spajkat tiste miniaturne kontakte :D

aja pa sem nastimu, da se mi zdej se prikazovanje casa prikazuje skoraj tocno na eno sekundo, tko da ne bo vec preskakovalo. sm cist pozabu da mam to funkcijo :8)

Zgodovina sprememb…

Brane2 ::

Ne rabiš posebne opreme za uglaševanje kristala, če znaš napisati pameten softver, ki dovoljuje kalibracijo.

Če recimo uro po začetni nastavitvi čez mesec dni ponastaviš, bi program iz tega lahko potegnil za koliko se mora reklaibrirati in zatem bi ura tekla točneje.

Kako hiter kristal izbereš tu pravzaprav niti ni važno
On the journey of life, I chose the psycho path.

korenje_ver2 ::

to ne mores verjet... ura mi kr neki neha delat, kot da bi PC naredu jump na neko drugo lokacijo v programskem spominu.... a je to mozno?

Tutankhamun ::

če si naredu tako funkcionalnost potem ja.
Kdaj ti pa urca crkne, na začetku po nekem času...? A si probu v Mplab-u kej simulirat?
AMD Phenom QUAD 9950 Black Edition, 8GB

BluPhenix ::

Brane, če gre za nek embedded sistem, kjer uro nastaviš enkrat, potem pa gre v uporabo si ne moreš ravno privoščit takih stvari.
Podpisa ni več, ker so me poskušali asimilirati.

Brane2 ::

Poglej še enkrat fotko njegove stvaritve in mi povej, kam hudiča bi jo lahko embeddal, razen mogoče komu v čelo ali eventualno v kanto... :D

Očitno je, da gre za domačo stvaritev, ki zlahka prenese opisano kalibracijo.

SPloh pa tudi če zadeva tega ne bi prenesla in bi doma delal majhne do zmerne serije teh stvari, bi se dalo doma narediti dokaj enostaven in poceni kalibrator.
On the journey of life, I chose the psycho path.

zcetrt ::

Imam občutek, da tista ledica veliko bolj osvetli opazovalca, kot vsebino lcd zaslona.

Zakaj se ti pa pri eni minuti pokaže 00:00 in naslednji prikaz 01:01? To bi pa res lahko odpravil, preden si šel posneti zadevo.

Sicer pa lahko dobiš urine impulze tudi iz omrežne napetosti 220V 50Hz. Preverjeno so zelo točni na daljša obdobja. Pa še tema bo bolj zanimiva, ko bo v igri 220V :))

Fan evrosonga, a?

Sicer pa, poskusi narediti take cifre:

4.

Zgodovina sprememb…

  • zavaroval slike: Azrael ()

korenje_ver2 ::

zcert, ja sem odpravil vse napake. pri skoku iz 59 na 00 inkrementira minute in enako za ure.

ura mi pa neki crkne po 13 minutah.... to bi pa simuliral ene 10 ur.

na nej mi kdo pregleda source kodo :D

http://the-nox.com/ibm60gb/LCD.rar

zcert, moj lcd ne omogoca kostumiziranje chram prostora na lcdju in je enovrsticen...


a ze vidm... da nism mel par "return FAST", pa je zgleda stack overflowal. upam da bo zdej cool.

Zgodovina sprememb…

Jackal ::

ura mi pa neki crkne po 13 minutah.... to bi pa simuliral ene 10 ur.


V skoraj vsakem simulatorju imaš možnost "run to" oz. nekaj podobenga, za kar nastaviš podatke spremenljivk in program teče s polno hitrostjo dokler ne izpolni tvojega pogoja. Potem pa spet greš lepo po korakih naprej.
Walking the way is something completely different than imagining the way.

zcetrt ::

Si prepričan, da ne omogoča kreiranje 8 znakov na začetnih adresah?
4.

korenje_ver2 ::

zcert? o cem ti to?

ha.. zdej sm vidu da mi tocno po 14 minutah crkne lcd...

hmm...

da vidmo zdej... ce ne bo spet isto cez 14 minut crknlo, pomen da je lahko hardwerski problem...

Zgodovina sprememb…

zcetrt ::

Vsak Hitachi HD44780 baziran dot matrix lcd ima 8 prostih mest v svoji mapi za definiranje pikic, ki se naj prikažejo na displeju (v enem kvadratku 5x8). Če si ogledaš prikaz na displeju, boš opazil, da je uporabljenih 8 različnih prikazov znotraj enega "pravokotnička" za vse cifre.

Torej le enkrat povem, kakšne pikice naj se prižgejo, ko kličem določen naslov v ramu (kreiram lasten znak), ta ostane, dokler je lcd priklopljen na napajanje.

Jasno?
4.

korenje_ver2 ::

ja. moj lcd tega ne omogoca.

zcetrt ::

Ja, tvoj lcd to omogoča.

Le kaj pomeni Write Data To Ram ukaz, CGRAM (naslovi od 0 do 8).
4.

korenje_ver2 ::

a to je to? :\
jz sm pa mislu da je to za prikazovanje crk.

zcetrt ::

CGRAM je za lastne znake. V ASM sem delal to pred dvema letoma (dokaj na začetku mojega ukvarjanja z mikrokontrolerji), zato ti kode nebi pošiljal, ker ni za zgled. Poglej si na internetu kakšen tutorial ali pa poskusi. Znak vneseš po vrsticah (vodoravnih), s tem da se MSB-ji ignorirajo, se mi zdi. Torej 8 bajtov pošlješ, vmes pa še poveš naslov, kamor vnašaš. Kličeš pa te znake nato tako kot črke. Naslovi so v datasheetu (prvi stolpec, kjer so cifre od 1 do 8. Prvi naslov je 0x00).
4.

korenje_ver2 ::

ja dej posl kodo, da mal primerjam s svojo >:D

korenje_ver2 ::

v glavnem se zdej ne vem zakaj se mi pic restarta ko ura preide 14 min. ne najdem nobene povezave....

TESKAn ::

Da nimaš slučajno kakega watchdog timerja vklopljenega?
Uf! Uf! Je rekel Vinetou in se skril za skalo,
ki jo je prav v ta namen nosil s seboj.
««
9 / 11
»»


Vredno ogleda ...

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

Microchip MPLAB icd 2 (pic16f876a)

Oddelek: Programiranje
111119 (996) Highlag
»

PIC18F4550 in ds18s20

Oddelek: Elektrotehnika in elektronika
191888 (1567) snow
»

Zelo pocasno utripanje LED diode (strani: 1 2 )

Oddelek: Elektrotehnika in elektronika
508418 (7623) a13misko
»

PIC 16f84A - utripanje

Oddelek: Elektrotehnika in elektronika
222092 (1892) ql000
»

mikrokontrolerji, programatorji, c/asm ?

Oddelek: Elektrotehnika in elektronika
292872 (2491) snow

Več podobnih tem