skraceni kurs ucenja picbasica

Rasprava o PIC mikrokontrolerima, PIC projekti i drugo vezano za PIC-eve...

Moderators: pedja089, stojke369, [eDo], trax

Post Reply
pavle1993
Posts: 6
Joined: 11-03-2010, 16:56

Re: skraceni kurs ucenja picbasica

Post by pavle1993 »

Vidi, mogu ja napisati jednostavan program da mi upali diode ali moj problem je sto on nece da ih pali na porta.0,1,2,3 i na portb0,1,2,3... Uopste ne mogu da da upalim te portove...
ni kada upisem

trisb=0

pocetak:
high portb.0
high portb.1
pause 1000
low portb
goto pocetak

taj port nece da mi radi...A ako to napise za portc ili portd onda radi pa me zanima gde gresim :)
User avatar
Momak
Pravo uznapredovao :)
Pravo uznapredovao :)
Posts: 304
Joined: 13-03-2011, 01:07

Re: skraceni kurs ucenja picbasica

Post by Momak »

ja sam imao slican problem, nije hteo da izvrsava program kako treba, pa se ispostavilo na kraju da mi programator nije bio ok, tako da ga proveri ili mozda je i do programa u kom programiras..
Kad pijemo, mi se i napijemo.
Kad se napijemo, mi i zaspemo.
Kad spavamo, mi ne činimo grehe.
Ako ne činimo grehe, onda idemo u raj.
Zato i pijemo da bi otišli u raj.
pavle1993
Posts: 6
Joined: 11-03-2010, 16:56

Re: skraceni kurs ucenja picbasica

Post by pavle1993 »

E, ovo sa pic16f887 sam resio... Ali i dalje pic16f877a mi brljavi, tj skoro uopste ne radi... ako neko je neko ima slicnih problema neka se javi, bio bi jako zahvalan! :)
User avatar
pedja089
Administrator sajta
Administrator sajta
Posts: 7873
Joined: 20-02-2007, 14:50
Location: Beočin -Srbija

Re: skraceni kurs ucenja picbasica

Post by pedja089 »

Treba poiskljucivvati sve periferije koje su na nekim pinovima. Isto tako trebas podesiti jumpere na easypic za dato kuciste...
User avatar
Momak
Pravo uznapredovao :)
Pravo uznapredovao :)
Posts: 304
Joined: 13-03-2011, 01:07

Re: skraceni kurs ucenja picbasica

Post by Momak »

Poz, ako zelim iz jednog broja da izdvojim jedinice i desetice istovremeno u drugi broj, da li to mogu napisati ovako:

broj2 = broj1 DIG 01

Hvala.
Kad pijemo, mi se i napijemo.
Kad se napijemo, mi i zaspemo.
Kad spavamo, mi ne činimo grehe.
Ako ne činimo grehe, onda idemo u raj.
Zato i pijemo da bi otišli u raj.
User avatar
InTheStillOfTheNight
Odlično uznapredovao
Odlično uznapredovao
Posts: 938
Joined: 01-06-2006, 17:54
Location: Zagreb

Re: skraceni kurs ucenja picbasica

Post by InTheStillOfTheNight »

Što znači izdvojiti jedinice i desetice istovremeno u drugi broj?

Ako nešto izdvajaš, to znači da nešto iz nečega izdvajaš negdje. No ti bi to izdvojio istovremeno nigdje...
Tamo gdje prestaje logika počinje tvoje pitanje...
InTheStillOfTheNight
User avatar
Momak
Pravo uznapredovao :)
Pravo uznapredovao :)
Posts: 304
Joined: 13-03-2011, 01:07

Re: skraceni kurs ucenja picbasica

Post by Momak »

Ako je moj broj1=123 i napisem broj2=broj1 DIG 1, to znaci da je broj2=20, pa sam mislio da li je moguce napisati broj2=broj1 DIG 01 pa da broj2 bude 23? Verovatno sam se lose izrazio i jos sam pocetnik i ne znam jos kako i da pravilno baratam svim pojmovima ali da li zbog toga neko ko je bolji od mene treba da me spusta ili da mi pomogne i ukaze na greske ako je voljan da to uopste i ucini?
Kad pijemo, mi se i napijemo.
Kad se napijemo, mi i zaspemo.
Kad spavamo, mi ne činimo grehe.
Ako ne činimo grehe, onda idemo u raj.
Zato i pijemo da bi otišli u raj.
User avatar
InTheStillOfTheNight
Odlično uznapredovao
Odlično uznapredovao
Posts: 938
Joined: 01-06-2006, 17:54
Location: Zagreb

Re: skraceni kurs ucenja picbasica

Post by InTheStillOfTheNight »

Kao prvo da ti ja nisam odgovorio tako kako jesam, svi ostali bi te vjerojatno ignorirali pošto ti pitanje nema smisla, pa onda ne kukaj zbog toga jer pitanje tek sada ima smisla...

Prvu stvar koju nisi naveo je tip varijable, no predpostaviti ću kako se radi o cjelobrojnom broju.
HINT ->
Kada želiš izdvojiti decimale u programiranju najjednostavnije je računati ostatak cjelobrojnog dijeljenja.

uzmimo tvoj broj 123 i pokušajmo izvući samo jedinice:
novi_broj = 123%10 = 3

Pokušajmo izvući desetice i jedinice:
novi_broj = 123%100 = 23

Pokušajmo izvući stotice, desetice i jedinice:
novi_broj = 123%1000 = 123

Znak "%" u C-u označava ostatak cjelobrojnog dijeljenja.
Kada 123/10 dobiješ 12,3, a ostatak cjelobrojnog dijeljenja je 3.
Kada 123/100 dobiješ 1,23, a ostatak cjelobrojnog djeljenja je 23.
Kada 123/1000 dobiješ 0,123, a ostatak cjelobrojnog dijeljenja je 123.

Operacija se zove modus, a u c-u se označava sa znakom %, pa predpostavljam da se u BASICU piše ovako:
moj_novi_broj = 123 mod 100

Dakle, ako gore navedena linija ne radi onda:
MODUS
BASIC
http://www.google.com

ili pričekaj da ti netko sa foruma odgovori, jer sada napokon znamo što te muči
InTheStillOfTheNight
User avatar
InTheStillOfTheNight
Odlično uznapredovao
Odlično uznapredovao
Posts: 938
Joined: 01-06-2006, 17:54
Location: Zagreb

Re: skraceni kurs ucenja picbasica

Post by InTheStillOfTheNight »

Momak wrote: ali da li zbog toga neko ko je bolji od mene treba da me spusta ili da mi pomogne i ukaze na greske ako je voljan da to uopste i ucini?
Admin offtopic:
To stalno radim na forumu i to cu i dalje raditi... Ne spuštam ja nikoga i nikada ne gledam koliko tko zna. Nazovi ovo šok terapijom...

Ako te pitam, ti ćeš odgovoriti, ako te pitam ponovno, opet ćeš odgovoriti... i tako ćemo se ti i ja dopisivati barem 10 postova dok ja skužim što ti uopće želiš...

Kada sa 10 postova razvučem temu onda se pojavi novih 10 intelektualaca, a svaki od njih ima svoj novi komentar i smjer i tvoje pitanje se jednostavno izgubi u hrpi komentara.

Zato koristim tu metodu da te opako napadnem, možda ružno odgovorim, samo da bih te natjerao da bolje postaviš pitanje kako bih ti mogao odgovoriti prije nego se skupi 100 komentara i tvoje pitanje izgubi smisao.

Ovo vrijedi za sve moje postove i ispričavam se svima koji u tome vide napad ili preseravanje... Ja tu vidim samo provokaciju na dobro pitanje i precizan odgovor, što je po meni najbitnije...
InTheStillOfTheNight
User avatar
Momak
Pravo uznapredovao :)
Pravo uznapredovao :)
Posts: 304
Joined: 13-03-2011, 01:07

Re: skraceni kurs ucenja picbasica

Post by Momak »

Ima smisla to sto kazes, sve u svemu hvala! :)
Kad pijemo, mi se i napijemo.
Kad se napijemo, mi i zaspemo.
Kad spavamo, mi ne činimo grehe.
Ako ne činimo grehe, onda idemo u raj.
Zato i pijemo da bi otišli u raj.
User avatar
andrejevica
Pocetnik na forumu
Pocetnik na forumu
Posts: 35
Joined: 07-03-2011, 18:06

Re: skraceni kurs ucenja picbasica

Post by andrejevica »

Image

Uploaded with ImageShack.us
Da li neko zna zasto mi izbacuje assembler errors.kada se kompajlira sa 16f628 radi sve ali nece da se kompajlira i sa 18f2420.
User avatar
pedja089
Administrator sajta
Administrator sajta
Posts: 7873
Joined: 20-02-2007, 14:50
Location: Beočin -Srbija

Re: skraceni kurs ucenja picbasica

Post by pedja089 »

Zato sto ne koristis interapt za 18F seriju...
User avatar
Black Angel
Odlično uznapredovao
Odlično uznapredovao
Posts: 980
Joined: 08-10-2008, 20:54
Location: Dubrovnik

Re: skraceni kurs ucenja picbasica

Post by Black Angel »

Moze pomoc ?
Sav sretan krenuo da cu pocet programirat nesto za PIC18F4520 u microcode studiu kad sto, nemam taj pic medu onim gore ponudenim :shock:
Mater !!
Ima li mozda koja novija varijanta koja sadrzi taj pic ili sta mi je ciniti ? :lol:
Korg X5D <3
User avatar
pedja089
Administrator sajta
Administrator sajta
Posts: 7873
Joined: 20-02-2007, 14:50
Location: Beočin -Srbija

Re: skraceni kurs ucenja picbasica

Post by pedja089 »

Skini noviji kompajler.
User avatar
Black Angel
Odlično uznapredovao
Odlično uznapredovao
Posts: 980
Joined: 08-10-2008, 20:54
Location: Dubrovnik

Re: skraceni kurs ucenja picbasica

Post by Black Angel »

Logicno, zar ne :lol:
Uglavnom, skinuo sam ga i sad je sve ok...
Tnx :D

Aj sad da krenem sa malo drukcijim pitanjima xD
1. http://hades.mech.northwestern.edu/imag ... lports.jpg
Pogubio sam se u ovim silnim portovima :lol:
Ovako znaci, da li su svi kanali koji su oznaceni kao analogni (AN0,AN1.....AN11,AN12), spojeni na ADC unutar pica ili su na njega spojeni samo pinovi sa port A registra?
Drugim rijecima, koje pinove mogu koristit kao ulazne za ADCIN naredbu ?
A sa druge strane, koje sve pinove mogu koristit kao izlaze ?
Dosad sam radio samo sa 16f84 pa mi je ovo ovdje totalan kupus i razaznajem samo port A i port B...
Sto je sa ovima C, D i E ?
Meni ce izlazi vecinom kontrolirati najobicnije releje ili neki prekidacki sklop, dok ce oni SDO, SDI i SCK pinovi (port C) bit rezervirani za SPI protokol za digitalni potenciometar.
Znaci koje bi sve izlaze mogo koristit za gore navedenu svrhu ?

I zasad jos jedno pitanje.
http://tigoe.net/pcomp/pic/pic-analog.shtml
Sa ove stranice sam opljacko ove osnovne naredbe za podesavanje ADC-a ali mi nije jasna ova ADCON1 naredba.

Code: Select all

Then we need to set some bits in the ADC configuration register ADCON1:

ADCON1 = %10000010

The first bit in this register sets the input pins labeled AN0, AN1, etc. to read analog input readings instead of digital.

Once we've done that, we can use the ADCIN command. It has the following format:
Moze neko malo pojasnjenje ? xD
Sta tocno namjesta sa tom naredbom jer kaze da prvi bit namjesta da analogni kanali citaju analogni ulaz umjesto digitalnog no onda se kasnije pojavljuje jos jedan koji je 1 pa mi nije jasno sta se tu tocno dogada :lol:

Hvala puno puno unaprijed :D
Korg X5D <3
User avatar
andrejevica
Pocetnik na forumu
Pocetnik na forumu
Posts: 35
Joined: 07-03-2011, 18:06

Re: skraceni kurs ucenja picbasica

Post by andrejevica »

Nadji na netu sta radi ADCON0 i ADCON1 registar.
User avatar
Black Angel
Odlično uznapredovao
Odlično uznapredovao
Posts: 980
Joined: 08-10-2008, 20:54
Location: Dubrovnik

Re: skraceni kurs ucenja picbasica

Post by Black Angel »

Pogledao sam u datasheetu pica no to je samo donjelo jos vise pitanja :lol:
Sad znam cemu sluze ali me tu i tamo neka stvar buni za svaki od njih xD
ADCON0:
http://i41.tinypic.com/4gj52f.jpg
Posto cu koristit minimalno pola analognih kanala, nemam pojma sta bi trebao stavit za ovo "analog channel select bits" ?
Bit 0 kuzim da moram postavit na 1 da bi osposobio ADC al sta mu znaci ovaj Bit 1 ?
Valjda se u glavnoj petlji sa pomocu ADCIN naredbe ADC aktivira i zapocinje konverziju ?
Sta bi mu tu trebao stavit ?

ADCON1:
http://i39.tinypic.com/ipsg7q.jpg
Ovdje su problem bitovi 3-0 tj. njihov redosljed
Kako tamo u datasheetu sve pisu od nazad prema naprijed, jel se to isto odnosi i na ovu prokletu tablicu ? :lol:
Npr. ako zelim postavit da svi primaju analogni signal ocu li pisat:
ADCON1 = %00011000
ili
ADCON1 = %10001000

I naposljetku
ADCON3:
http://i40.tinypic.com/qrylue.jpg
Sta mu je ovaj bit 7 pobogu ? :lol:
Jel ima neka generalno najbolja postavka za acquisition time i conversion clock ?

P.S.
Iz datasheeta je jasno vidljivo da se svi analogni mogu koristit kao ulazni za ADC no jos uvijek stoji ono staro pitanje za izlazne kanale ?

Ajde malo pomozite ljudi, nemojte da vam je tesko....
Pokusavam i ja sam skopcati neke stvari ali nemogu vam opisati koliko je frustrirajuce kad neko ko nema pojma oko programiranja pokusava napravit ovako slozen program :roll:
Korg X5D <3
User avatar
InTheStillOfTheNight
Odlično uznapredovao
Odlično uznapredovao
Posts: 938
Joined: 01-06-2006, 17:54
Location: Zagreb

Re: skraceni kurs ucenja picbasica

Post by InTheStillOfTheNight »

Kad nitko neće, onda ću ja:
Koliko analogno digitalnih pretvarača ima tvoj PIC?

Ako pogodiš imaš pivo :)
InTheStillOfTheNight
User avatar
InTheStillOfTheNight
Odlično uznapredovao
Odlično uznapredovao
Posts: 938
Joined: 01-06-2006, 17:54
Location: Zagreb

Re: skraceni kurs ucenja picbasica

Post by InTheStillOfTheNight »

Aj kolega da te ne davim sa pitanjima napisati cu ti post za tvoj upit... Mrzim PIC još od rođenja, pa ako nešto krivo napišem neka pedja ili netko ispravlja jer to računalo nije u mojoj "like" zbirci.

Prva stvar koja te buni je činjenica da tvoje računalo ima samo 1 ADC... Ako malo dublje zabiješ nos u hardware ADC-a možeš skužiti da postoji samo jedan jedini ADC. Tu počinje pitanje koje te najviše buni:
"Kako ADC ima n kanala a samo je jedan?"

Odgovor ti također piše u datasheetu, a zove se multiplexer:
http://en.wikipedia.org/wiki/Multiplexer

U principu ti sve kanale mjeriš sa istim ADC-om jer ih nemaš 2. Iz toga ti proizlazi jednostavna činjenica da ti sa takvim računalom nikako ne možeš mjeriti 12 kanala istovremeno.
Mjerenje ADC-a seljački rečeno izgleda ovako:
1. Konfiguriraj PORT ADC-a
2. Konfiguriraj Referentni napon
3. Odaberi frekvenciju ADC-a
4. Odaberi kanal koji želiš mjeriti
5. Pokreni ADC
6. Čekaj da on završi mjerenje
7. Čitaj registar ADC-a

Malo mi se neda otvarati datasheet tog pic-a, ali registri se zovu dosta logično pa evo odgovor i na bit1
U slici koji si postavio u prvom linku taj bit se zove GO/DONE. Sa tvoje strane gledanja to znači samo da postavljanjem tog bita u logičku jedinicu upravo započinje konverzija koja je kod mene opisana u stavci:
5. Pokreni ADC

Isti taj bit srušiti će sam hardware ADC-a kada završi mjerenje (što je opisano kao stavka 6) i kada on padne sa 1 na 0 upravo se dogodila stavka:
7. Čitaj registar ADC-a

Čini li se tebi možda kako ovaj tekst pišem od sredine? Očito dakle da ti je i pitanje postavljeno obratno, pa se zato u opisu ADC-a vraćamo malo nazad i to na stavku:
1. Konfiguriraj PORT ADC-a

Svaki port računala može ti biti i digitalni i analogni, ali ti očito moraš sam odlučiti što je digitalno, a što je analogno jer mašina ne zna tvoje želje i tvoje potrebe. Upravo to se nalazi u tvoja 4 nejasna bita ADCON1 registra. Ako želiš da ti svi AD kanali mogu čitati analogni signal onda su obe tvoje predpostavke netočne.
U datasheetu je za taj slučan navedeno da na odabir analognih i digitalnih ulaza utječu 4 desna bita, što bi značilo da za sve AD kanale oni moraju biti "0". Taj registar bi u najmanju ruku morao izgledati ovako:
ADCON1 = %xxxx0000 , dakle sa 4 desne nule, a ne tri desne nule, ili recimo ovo:
ADCON1 = %xxxx0001
ADCON1 = %xxxx0010
Ralike potraži u datasheetu jer imaš note za prvi slučaj, i za kanale 5, 6, 7

Trebao bi primjetiti i da bitovi [3-0] nisu 3 bita, nego su 4 bita, jer i 0 je bit + ova 3 su ukupno 4.

Tvoje sljedeće pitanje vezano je za ADCON3 i 7 bit.
Taj bit ti određuje hoće li rezultat biti prikazan s lijeve ili s desne strane:
Ako 8 Bitni ADC čita vrijednos 3, onda to može biti prikazano kao 00000011 ili kao 11000000. Tim bitom se zamaraj tek ako ti rezultat bude okrenut naopako.

Što se tiče stavke:
3. Odaberi frekvenciju ADC-a
Naravno da ima najbolje moguće podešavanje clocka. A to ti piše u datasheetu, i najprije trebaš znati na kojoj frekvenciji se vrti PIC, tj koji je oscilator, te izračunati prescaler za najoptimalniji clock ADC-a po datasheetu. Za ATMEL je to negdje oko 200 kHz, Za pic traži u datasheetu

Ja ne vidim tvoje staro pitanje za izlazne kanale, jer ne znam na što točno misliš.

Jedno pitanje nisi uopće niti postavio, a bez toga ti ADC opet neće raditi:
2. Konfiguriraj Referentni napon
Iz tvojih slika vidim da se to nalazi u ADCON1 registru...

I za kraj ti je još bitno što i kako s tim svim govnima?
1. Konfiguriraj PORT ADC-a------------> Samo jedamput i nikada više
2. Konfiguriraj Referentni napon------> Samo jedamput i nikada više
3. Odaberi frekvenciju ADC-a----------> Samo jedamput i nikada više
4. Odaberi kanal koji želiš mjeriti-----> Podešavaj stalno, ovisno o kanalu kojeg trenutno mjeriš
5. Pokreni ADC---------------------------> Pokreći stalno jer želiš mjeriti
6. Čekaj da on završi mjerenje--------> Čekaj jer ne može biti brže
7. Čitaj registar ADC-a------------------> Čitaj ADC ako te zanima što je izmjerio
InTheStillOfTheNight
User avatar
pedja089
Administrator sajta
Administrator sajta
Posts: 7873
Joined: 20-02-2007, 14:50
Location: Beočin -Srbija

Re: skraceni kurs ucenja picbasica

Post by pedja089 »

4. Odaberi kanal koji želiš mjeriti-----> Podešavaj stalno, ovisno o kanalu kojeg trenutno mjeriš
5. Pokreni ADC---------------------------> Pokreći stalno jer želiš mjeriti
6. Čekaj da on završi mjerenje--------> Čekaj jer ne može biti brže
7. Čitaj registar ADC-a------------------> Čitaj ADC ako te zanima što je izmjerio
To radi komanda ADCIN.
Ali sve se svodi na citanje datasheeta, i gledanje blok sema...
A pogledaj u example folderu u pbp. Imas jednostavan primer...
Post Reply