 |
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
sampi Član


Pridružen-a: Pet 25 Feb 2005 10:29 Prispevkov: 21 Aktiv.: 0.09
|
Objavljeno: Ned Apr 10, 2005 2:32 pm Naslov sporočila: pic-vf oddajnik---vf sprejemnik-pic optimizacija |
|
|
Delno tudi po vaši zaslugi mi je uspelo vzpostaviti komunikacijo med dvema picema s pomočjo VF modulov iz SE. Komunikacija poteka preko USART.
Ko pošljem recomo ASCII "a" mi vklopi rele, ko pa recimo pošljem "b" pa izklopi.
Sedaj pa bi rad optimiziral prenos, saj mi včasih ne prenese pravega znaka. Pa me zanima kako najbolj elegantno rešit ta problem. A bi bilo najbolje recimo 5 krat zaporedoma poslat isti znak (na drugi strani vklapljam neke releje) ali obstaja kakšna boljša rešitev (protokol)?
Lp |
|
Nazaj na vrh |
|
 |
ma73 Član

Pridružen-a: Ned 04 Jan 2004 21:56 Prispevkov: 49 Aktiv.: 0.21
|
Objavljeno: Ned Apr 10, 2005 6:59 pm Naslov sporočila: |
|
|
S katerim picem, pa si to napravil? Sam sem podobno preko UARTa poskušal, prenašati podatke, sam je bilo to zelo slaba izkušnja.
Lahko morda priložiš kodo?
lp |
|
Nazaj na vrh |
|
 |
bungee Član


Pridružen-a: Pon 07 Mar 2005 18:49 Prispevkov: 1479 Aktiv.: 6.24 Kraj: Ljubljana
|
Objavljeno: Ned Apr 10, 2005 8:38 pm Naslov sporočila: |
|
|
Jaz sem razmišljal podobno, nisem pa še preizkusil. Razmišljal sem pa da bi bilo vrjetno bolje če bi stvar delal preko RC5 protokola, ker je ta že namenjen za prenos podatkov preko "nezanesljivih" medijev.  |
|
Nazaj na vrh |
|
 |
sampi Član


Pridružen-a: Pet 25 Feb 2005 10:29 Prispevkov: 21 Aktiv.: 0.09
|
Objavljeno: Pon Apr 11, 2005 8:53 am Naslov sporočila: |
|
|
Oddajnik sem naredil s 16f628a, katerega lahko priklopiš na 3V, ima pa že vgrajen oscilator, sprejemnik pa sem naredil z 877a.
Trenutno je narejeno v BASIC-u.
Tak da verjetno vam prekaljenim mačkom ne koristi preveč.
'SPREJEMNIK
'---------------------------------------------------------
DEFINE LCD_DREG PORTD
DEFINE LCD_DBIT 4
DEFINE LCD_RSREG PORTD
DEFINE LCD_RSBIT 1
DEFINE LCD_EREG PORTD
DEFINE LCD_EBIT 0
DEFINE LCD_LINES 4
DEFINE LCD_COMMANDUS 7000
DEFINE LCD_DATAUS 200
Pause 500
' izbriši zaslon
Lcdout $fe, 1
TRISA=%11111111
TRISB=%00000000
pir var bit
znak var byte
' Initialize USART
TRISC = %10111111 ' Set TX (PortC.6) to out, rest in
SPBRG = 25 ' Set baud rate to 2400
RCSTA = %10010000 ' Enable serial port and continuous receive
TXSTA = %00100000 ' Enable transmit and asynchronous mode
zanka:
if PORTA.4=0 THEN
HIGH PORTB.1
endif
if PORTA.5=0 THEN
LOW PORTB.1
pir=0
endif
If PIR1.5 = 1 Then
pir=PIR1.5
znak = RCREG
if znak="a" then
HIGH PORTB.0
endif
if znak="b" then
low PORTB.0
endif
endif
LCDOUT $FE, $80
lcdout "Sprejel sem: ", znak
LCDOUT $FE, $C0
lcdout "PIR=", BIN pir, ", ", RCREG
goto zanka
'-----------------------------------------------------------
'ODDAJNIK
'------------------------------------------------------------
znak var byte
TRISB= %10110000
' Inicializacija usart
SPBRG = 25 ' Set baud rate to 2400
RCSTA = %10010000 ' Enable serial port and continuous receive
TXSTA = %00100000 ' Enable transmit and asynchronous mode
zanka:
if PORTB.4=0 THEN
znak="a"
high PORTB.0
call usarttx
endif
if PORTB.5=0 THEN
znak="b"
LOW PORTB.0
call usarttx
endif
goto zanka
usarttx: ' Wait for transmit register empty
If PIR1.4 = 0 Then usarttx
TXREG = znak
znak=0
Return ' Go back to caller |
|
Nazaj na vrh |
|
 |
ma73 Član

Pridružen-a: Ned 04 Jan 2004 21:56 Prispevkov: 49 Aktiv.: 0.21
|
|
Nazaj na vrh |
|
 |
sampi Član


Pridružen-a: Pet 25 Feb 2005 10:29 Prispevkov: 21 Aktiv.: 0.09
|
|
Nazaj na vrh |
|
 |
|
|
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: 492 dni
Powered by phpBB © 2001, 2005 phpBB Group
|