[ zelja123 @ 10.03.2006. 13:51 ] @
Pozdrav svima,

pokusavam napraviti sklop i program koji ce preko kompa slati signale na PIC i preko toga paliti i gasiti releje ili ocitavati stanja na ulazima.

E sada. Koristim 16F628 i programiram ga preko MPlaba. Za kompjuter koristim Visual Basic.NET. Povezujem ih preko serijskog porta koristeci UART.

Nasao sam primjer koji mi odgovara na http://www.embeddedhub.com/development/pic-board/pic-io-a.html

i tamo ima source u assembleru za konkretni primjer. To mi odgovara ali PIC na mojoj ploci koristi interni oscilator. Dok ovaj koristi vanjski 20MHZ.

Moje pitanje je:

Mora li se koristiti vanjski oscilator. Odnosno u slucaju komunikacije preko serijskog je li potrebno koristiti vecu brzinu posto pretpostavljam da se moze koristiti i ovaj interni ali da nije dovoljno brz.

Drugo sto me zanima:

Ima li itko primjer za konkretno povezivanje 16F628 i kompjutera? Zanima me 4 ulaza i 4 izlaza. Ulazi se trebaju ocitavati dok je izlazima moguce mijenjati stanja. Ovaj sa linka gore mi odgovara ali mi kompliciran assembler koji ide u PIC. Mislio se uciti na necemu jednostavnijem.

Pozdrav Marko
[ 16f84 @ 10.03.2006. 16:09 ] @
Citat:
Mora li se koristiti vanjski oscilator. Odnosno u slucaju komunikacije preko serijskog je li potrebno koristiti vecu brzinu posto pretpostavljam da se moze koristiti i ovaj interni ali da nije dovoljno brz.


Može se i koristiti interni oscilator. Brzino nastaviš u SPBRG registru.
evo primer inicializacije za upotrebljen interni oscilator 4Mhz baudrate 19200
Code:

    clrf PORTA
    clrf PORTB
    movlw b'111'
    movwf CMCON        ;izklop komparatorjev 
    bsf STATUS,RP0
    movlw .12    ;25=BRGH=0==2400kb  12=BRGH=1==19200
    movwf SPBRG    ;baud rate generator    
    bsf TXSTA,TXEN    ;vklop TX
    bsf TXSTA,BRGH    ;velika brzina
    movlw b'1111'
    movwf TRISB    ;rb3-rb7 izhodi 





Citat:
Ima li itko primjer za konkretno povezivanje 16F628 i kompjutera? Zanima me 4 ulaza i 4 izlaza. Ulazi se trebaju ocitavati dok je izlazima moguce mijenjati stanja. Ovaj sa linka gore mi odgovara ali mi kompliciran assembler koji ide u PIC. Mislio se uciti na necemu jednostavnijem.


Pic se ne može direktno spajati na seriski port. Treba uraditi interface RS232 -> TTL.
U prilozi shema interfejsa.

[ zelja123 @ 15.03.2006. 15:48 ] @
Citat:
16f84: Pic se ne može direktno spajati na seriski port. Treba uraditi interface RS232 -> TTL.
U prilozi shema interfejsa.


Nisam ni mislio direktno spojiti. Uzeo sam MAX-a da mi to sredi.

Nasao sam primjer http://www.olimex.com/dev/pic-io-a.html


Ima i program i hardver. Ako neko ima jos neki dobar program neka slobodno pusti link
[ rsinisa @ 15.03.2006. 22:27 ] @
Citat:
16f84: Pic se ne može direktno spajati na seriski port.

Izvini, ali nisi u pravu, probano vise puta u praksi.

Pozdrav.
Sinisha
[ 16f84 @ 16.03.2006. 10:42 ] @
Možeš objsniti kako? Svi ulazi/ izlazi i UART kod PIC-a su tipa TTL osim pina RA4 koji je tipa "open coletor"?

A i specifikacije seriskog porta :
Space state (0) +5 ... +15
Mark state (1) -5 ... -15

Umesto max232 može se korititi i dva transistora kako i na na ploči sa linka u poruki gore. A da bi mogao direktno spajati UART pic-a i RS232 (serial port) to ja ne znam. Kod direktnog spajanja, če pic "propušiti"
[ rsinisa @ 16.03.2006. 19:43 ] @
Kod direktnog spajanja nece nista da se desi ako se upotrebi otpornik izmedju PIC-a i PC-a. Uostalom, ako moje iskustvo nije dovoljno, evo prevod iz PBP upuststva za naredbe kod kojih se koristi RS-232 (SERIN, SEROUT, DEBUG i sl):

"Iako su RS-232 konvertori nivoa uobičajeni i jeftini, zahvaljujući strujnoj implementaciji RS-2323 i odličnim I/O karakteristikama PIC mikrokontrolera, većina aplikacija ne zahteva konvertore nivoa. Zbog toga se radije koristi invertovani TTL mod ('mode' bit 14=1). Preporučuje se otpornik za ograničenje struje (mada bi RS-232 trebalo da bude otporan na kratak spoj)."

Za spajanje PIC-a sa Rx linijom na PC-u preporucuje se otpornik od 1K, a za Tx 22K.

Pozdrav.
Sinisha
[ 16f84 @ 16.03.2006. 21:23 ] @
Citat:
Zbog toga se radije koristi invertovani TTL mod ('mode' bit 14=1).

Kdje je ovaj "mode" bit 14=1 ? PIC-evi su 8 bitni.

Ako je priča o nekim višim jeziku PicBas%/(& ali slično toga ne poznajem. Ako je priča o assembleru i pic-u koji ima UART 16F628 ili sličan onda
se uart spremi za rad:

Uart koristi registre :
SPBRG -definišemo brzinu,

TXSTA statusni register transmita koji se upotrebljava:
bit7 - master/slave mode
bit6 - transmit 9/8 bit
bit5 - uključen izključen transmit
bit4 - sinhon/asihron mode
bit3 - nije koriščen
bit2 - velika/mala brzina
bit1 - transmit shift register pun/prazan
bit0 - 9bit / 9bit- mode

RCSTA
bit7 - seriski port izkljucen/uključen
bit6 - prijem 8/9 bit
bit5 - uklop/izklop single receive
bit4 - uklop /izklop cuntinius receive
bit3 - vklop/izkop detect adress
bit2 - framing error
bit1 - overrun error
bit0 - 9 bit /9bit mode

TXREG - register - u ovaj register upisuvamo što čemo slati
RCREG - register u za prijemanje


Evo i jedan moj primer tersiranja gornjog hardvera Komunikacija 1Wire(DS1820 termometer) ->PIC -> LCD ->RS232 -> Hyperterminal -> rs232 ->PIC ->LCD

ASM u prilozi


Izvinjavam se na moje loše pisanje u srbohrvatskem jeziku. Na zadnje sem pisal prije 25 godina kad sam služio JNA.



[Ovu poruku je menjao 16f84 dana 16.03.2006. u 22:26 GMT+1]
[ 16f84 @ 16.03.2006. 21:27 ] @
Još program - ASM
[ rsinisa @ 16.03.2006. 22:18 ] @
Da, kao što sam napisao, reč je o PBP-u, jednom od najboljih PIC basica (PIC Basic Pro). On ima izuzetno moćne serijske rutine, a taj pomenuti bit (parametar komande) odredjuje da li će logika biti normalna (kada se koristi neki konvertor nivoa kao što je MAX232) ili invertovana (kada se vezuje direktno).
Inače, i ja sam se dugo opirao upotrebi PBP-a, ali sam pod pritiskom drugara popustio i mogu da ti kažem da mi nije žao jer se aplikacije mnogo brže razvijaju nego u ASM-u, a pošto PBP omogućava ubacivanje i ASM-a, to poprilično koristim. Pošto sam PBP jako dobro proučio imam utisak skoro kao da pišem u ASM-u jer znam tačno kako se koja naredba ponaša i imam potpunu kontrolu nad situacijom. Toplo ti preporučujem da pokušaš, nećeš zažaliti. (izvinjavam se za ovo skretanje sa teme).
Što se tiče tvog pisanja na SH, jako je dobro - išao sam na MAXI forum i ne bih ni blizu uspeo da pišem na slovenačkom kao ti na SH, odn. srpskom.

Pozdrav.
Sinisha
[ indicator1 @ 19.03.2006. 19:52 ] @
Ako si odusevljen sa PBP, probaj Proton da vidis sta je mocan kompajler.
[ rsinisa @ 19.03.2006. 22:52 ] @
imas PP (da ne ometamo temu).

Pozdrav.
Sinisha