www.elektronik.si Seznam forumov www.elektronik.si
Forum o elektrotehniki in računalništvu
 
 PomočPomoč  IščiIšči  Seznam članovSeznam članov  SkupineSkupine  StatisticsStatistika  AlbumAlbum  DatotekeFilemanager DokumentacijaDocDB LinksPovezave   Registriraj seRegistriraj se 
  PravilaPravila  LinksBolha  PriponkePriponke  KoledarKoledar  ZapiskiZapiski Tvoj profilTvoj profil Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil PrijavaPrijava 

Komunikacija PIC - PC

 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Microchip PIC
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
California
Član
Član



Pridružen-a: Pet 26 Avg 2005 19:48
Prispevkov: 236
Aktiv.: 1.00
Kraj: Hrastnik

PrispevekObjavljeno: Ned Jun 25, 2006 8:19 am    Naslov sporočila:  Komunikacija PIC - PC Odgovori s citatom

Pozdravljeni, s PIC18F458 in PCF 8583 sem naredil uro, sedaj pa bi rad podatke za sekunde, minute, ure, dneve ... poslal preko RS232 na PC, kjer bi jih bilo možno z namenskim programom (LabView, Visual Basic) videti. Uspelo mi je prikazati podatek za sekunde, tule se pa tudi vse skupaj konča. Zanima me na kakšen način je možno več različnih informacij spraviti na serijski port.

LP Vlado

_________________
California
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Sokrat
Član
Član



Pridružen-a: Čet 25 Avg 2005 11:00
Prispevkov: 5584
Aktiv.: 23.57

PrispevekObjavljeno: Ned Jun 25, 2006 10:18 am    Naslov sporočila:   Odgovori s citatom

Kako mislis "vec razlicnih informacij" ? Naenkrat lahko posljes samo en bajt, ura pa recimo zahteva tri bajte + zacetek vlakca. Posljes torej stiri bajte in jih na drugi strani ustrezno interpretiras - ko pride zacetek, potem ves, da mu morajo slediti se trije bajti (npr. ure, minute in sekunde).
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
California
Član
Član



Pridružen-a: Pet 26 Avg 2005 19:48
Prispevkov: 236
Aktiv.: 1.00
Kraj: Hrastnik

PrispevekObjavljeno: Ned Jun 25, 2006 11:01 am    Naslov sporočila:   Odgovori s citatom

Torej pod informacijami sem mislil čas (sekunde, minute, ure, ... do letnice), potem pa še recimo meritve temperature v večih različnih točkah, digitalna stanja na kakšnih senzorjih. Skratka nek merilno - kontrolni sistem, katerega bi bilo možno nadzorovati (tudi) preko serijskega vmesnika. Mene predvsem zanima kako spraviti podatek o sekundah (0-3B hex) in ostale v tako imenovani vlakec. Koliko je prostora na takšnem vlaku in kaj naredimo, če imamo recimo dvakrat več podatkov, kot prostora na vlaku?

LP Vlado

_________________
California
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Sokrat
Član
Član



Pridružen-a: Čet 25 Avg 2005 11:00
Prispevkov: 5584
Aktiv.: 23.57

PrispevekObjavljeno: Ned Jun 25, 2006 12:35 pm    Naslov sporočila:   Odgovori s citatom

Dolzina je prakticno neomejena. Najprej naredi seznam informacij, katere zalis odposlati (skupaj z velikostjo podatka) - npr.:

ure (1 bajt)
minute (1)
sekunde (1)
temperatura1 (2 bajta)
temperatura2 (2)
temperatura3 (2)

Odposlal bos torej znak za zacetek prenosa (izberes znak, ki se sicer ne pojavlja med podatki - npr. 0xff, ce pa se pojavlja tudi med podatki, potem izberes doloceno kombinacijo, ki se nemore pojaviti, kot npr. 0xffff) ter 1+1+1+2+2+2 bajtov, morda pa se checksum/CRC kodo, s katero bos preveril veljavnost podatkov, katero ti je izracunal tvoj program v MCUju. Vsak znak ("vagoncek") odposljes posamicno, tako kot se to pac naredi na izbranem MCUju (ce ima hardverski UART je ponavadi vse, kar moras storiti, to, da UART ustrezno anstavis, potem pa podatek zapises v ustrezen register in pocakas da ga MCU odposlje sam, potem pa jovo na novo do konca vlakca).

Na strani MCUja je stvar preprosta; ko se odlocis, da je primeren trenutek za odposiljanje (recimo zato, ker si dobil od PCja zahtevo za posiljanje ali zato ker je pretekla ena minuta od zadnjega posiljanja, ti pa posiljas vsako minuto ...), posljej vse zgoraj nasteto, eno za drugim.

Na PCjevi strani je malo drugace - ker ne mores vedeti ali MCU deluje in ali deluje pravilno, cakas na sprejem podatkov. Ce je prvi znak (ali prvih nekaj znakov) enakih tvoji prednastavljeni vrednosti (0xff v zgorjnem primeru), potem beres znake dalje; 1. bodo ure, drugi minute, itd., na koncu pa checksum/CRC, katerega spet preracunas in tako preveris ali so podatki veljavni (ce si seveda sploh uporabil tako metodo za preverjanje integritete podatkov).

Ce so podatki veljavni, potem tvoj program na PCju naredi z njimi kar pac hcoes da naredi (recimo jih zapise v bazo ali na zaslon).

Ce podatki niso veljavni, je to lahko zato, ker si zacel brati sredi vlakca, ali pa zato, ker naprava ne deluje (vec) pravilno. V obeh primerih so podatki prakticno neuporabni in jih je napametneje zavreci in pocakati na naslednji vlakec podatkov.
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
California
Član
Član



Pridružen-a: Pet 26 Avg 2005 19:48
Prispevkov: 236
Aktiv.: 1.00
Kraj: Hrastnik

PrispevekObjavljeno: Ned Jun 25, 2006 2:01 pm    Naslov sporočila:   Odgovori s citatom

Trenutno mi program na PICu približno 2x na sekundo zapiše na UART trenutno vrednost sekund in ta je ista tako na displeju na protobordu kakor tudi na PCju, kjer uporabljam LabView za čitanje iz com porta. V LV imam možnost izbire števila čitanja bajtov. Zanima me kako se bo zadeva obnašala pozneje, ko se bo uri priključila še ostala periferija, kjer se izvajajo meritve temperature preko OneWire vodila (ura je na i2c vodilu), obdelava izmerjenih podatkov in krmiljenje izhodov na osnovi izmerjenih podatkov, namreč ko je PIC naložen s kompletnim programom, je vse skupaj počasnejše. Mimogrede programiram v MikroBasicu in brez UARTa mi zadeva že špila.
Hvala za odgovore, se še priporočam!
LP Vlado

_________________
California
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
egomez
Član
Član



Pridružen-a: Sob 03 Apr 2004 18:49
Prispevkov: 517
Aktiv.: 2.18
Kraj: Ljubljana/Sežana

PrispevekObjavljeno: Ned Jun 25, 2006 2:15 pm    Naslov sporočila:   Odgovori s citatom

Ne vem zakaj te moti, če bereš nekatere podatke iz OneWire in I2C, saj s PIC-em pač bereš te podatke na ustrezen način, potem pa jih zbereš tako obliko, da jih pošlješ preko UART-a. Kot je že Sokrat povedal, najprej nek start bit ali dva, nato pa enega za drugim tvoje podatke. V LV pa detektiraj start bit in nato prebereš koristne podatke ki jih želiš.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
California
Član
Član



Pridružen-a: Pet 26 Avg 2005 19:48
Prispevkov: 236
Aktiv.: 1.00
Kraj: Hrastnik

PrispevekObjavljeno: Ned Jun 25, 2006 3:21 pm    Naslov sporočila:   Odgovori s citatom

Problem je v tem, da ne vem kako sprogramirati zadevo.
LP Vlado

_________________
California
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
egomez
Član
Član



Pridružen-a: Sob 03 Apr 2004 18:49
Prispevkov: 517
Aktiv.: 2.18
Kraj: Ljubljana/Sežana

PrispevekObjavljeno: Ned Jun 25, 2006 3:35 pm    Naslov sporočila:   Odgovori s citatom

Ko želiš poslati podatke jih prebereš iz vhodnih portov in nekam shraniš. Nato pošlješ na PC recimo 0xffff in nato enega za drugim še ostale bite ki vsebujejo vrednosti, ki si jih prej prebral. Lahko pa najprej en podatek prebereš in ga pošlješ na PC, nato isto z drugim... tako do konca. V LV pa izbereš detekcijo 0xffff in nato nastaviš koliko bitov od tam naprej naj ti prebere. Nato ta "vlakec" razrežeš in dobiš ven željene podatke.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
California
Član
Član



Pridružen-a: Pet 26 Avg 2005 19:48
Prispevkov: 236
Aktiv.: 1.00
Kraj: Hrastnik

PrispevekObjavljeno: Ned Jun 25, 2006 3:41 pm    Naslov sporočila:   Odgovori s citatom

Vsekakor bom poizkušal zadevo spraviti v pogon. Poročilo pa tudi sledi.
LP Vlado

_________________
California
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Microchip PIC Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Stran 1 od 1

 
Pojdi na:  
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