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 

BASCOM Uart komunikacija.
Pojdi na stran 1, 2  Naslednja
 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> AVR, LPC900, x51
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
rizzo
Neznanec
Neznanec



Pridružen-a: Pon 13 Jan 2014 22:54
Prispevkov: 3
Aktiv.: 0.02

PrispevekObjavljeno: Sre Avg 05, 2015 9:46 am    Naslov sporočila:  BASCOM Uart komunikacija. Odgovori s citatom

Pozdravljeni. Imam problem pri pošiljanju podatkov po serial portih. Načeloma komunikacija deluje problem nastane v tem ko mi naprava pošlje nek ukaz v mikrokotroler ta zadevo premelje in jo pošlje nazaj v sistem. No tu nastane problem ker v tem času ko mikrokontroler pošlje podatke se oglasi tudi sistem in prav tako pošlje v mikrokontroler podatke.

Gre za enožično komunikacijo ki jo z posebnim vezjem ločim na rx tx. Tako da rx in tx v tem primeru ne moreta istočasno delovati.

Moralo bi delovati tako da ko želim poslati podatke mora mikrokontroler najprej preveriti na rx-u če kaj dobiva če je vse tiho pošlje podatek v sistem.

Baje se da to rešiti z nekimi interupti samo nevem kako. Uporabljam Bascom AVR in pa ATMEGA 32 DIL
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
besoft
Član
Član



Pridružen-a: Ned 01 Apr 2012 10:22
Prispevkov: 585
Aktiv.: 3.99
Kraj: Žižki - Prekmurje

PrispevekObjavljeno: Čet Avg 06, 2015 8:03 am    Naslov sporočila:   Odgovori s citatom

Če maš komunikacijo sprejema v interuptu, potem pri pojavu podatka na vhodu postaviš eno zastavico, ki ti v glavni zanki prekine pošiljanje oziroma ti v glavni zanki spremlja dogajanje.
Kako pa ima naprava rešeno? tudi posluša kaj se dogaja na liniji ?

Lahko kaj malo veš napiše ?
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
rizzo
Neznanec
Neznanec



Pridružen-a: Pon 13 Jan 2014 22:54
Prispevkov: 3
Aktiv.: 0.02

PrispevekObjavljeno: Čet Avg 06, 2015 5:59 pm    Naslov sporočila:   Odgovori s citatom

Gre za komunikacijski protokol v vozilu tako imenovan LIN BUS.

Komunikacija po kateri se moduli pogovarjajo in poslušajo po eni žici.

Gre za niz podatkov v hex obliki v katerem je naziv govornika ki pove kateri napravi opravi neko operacijo. Sepravi ko želi neka naprava nekaj povedati preveri linijo če je ta prosta pošlje paket podatkov.

No pri meni je problem ker jaz ne poslusam linije samo posljem v tem casu se pa oglasi neka naprava in se mi nekaj ukazov ne izvede.

Sr pravi rabil bi pred posiljanjem ukaza preverjanje linije ce je ta prosta.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
frenki
Moderator
Moderator



Pridružen-a: Ned 23 Feb 2003 21:26
Prispevkov: 6553
Aktiv.: 29.42
Kraj: Ljubljana (JN76GB)

PrispevekObjavljeno: Pet Avg 07, 2015 2:18 pm    Naslov sporočila:   Odgovori s citatom

V naslovu teme malce zavajaš. V tem primeru gre sicer res za serijski prenos podatkov, je pa na LIN vodilu kar natančno definiran protokol prenosa in struktura podatkovnih paketov. Brez upoštevanja specifikacije ne bo šlo. Prilagam specifikacijo vodila, kjer je sam protokol natančno opisan.


LIN_Specification_Package_2.2A.pdf
 Opis:

Download
 Ime datoteke:  LIN_Specification_Package_2.2A.pdf
 Velikost datoteke:  3.49 MB
 Downloadano:  14 krat

Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo Obišči avtorjevo spletno stran
rizzo
Neznanec
Neznanec



Pridružen-a: Pon 13 Jan 2014 22:54
Prispevkov: 3
Aktiv.: 0.02

PrispevekObjavljeno: Pet Avg 07, 2015 3:22 pm    Naslov sporočila:   Odgovori s citatom

Že samo me zanima kako bi spisal program da ko se nekaj na RX vhodu v mikrokontroler nekaj dogaja da takrat ne pošilja po TX.

Skratka pred pošijanjem bi moral preveiti na RX če so kakšni podatki po LIN-busu če jih ni pošlje...
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
besoft
Član
Član



Pridružen-a: Ned 01 Apr 2012 10:22
Prispevkov: 585
Aktiv.: 3.99
Kraj: Žižki - Prekmurje

PrispevekObjavljeno: Pet Avg 07, 2015 4:20 pm    Naslov sporočila:   Odgovori s citatom

Na forumu je kar nekaj primerov kako izvest komunikacijo z interuptom..ko to imaš, preverjaš če je v sprejemnem buferju kaj ..ali je prazen. V kolikor je prazen lahko delaš kar koli, v primeru, da se v buferju kaj pojavi pa pač prekineš ostali del programa in poslušaš..

Čeprav priporočam, da preštudiraš link do specifikacij protokola.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
rudiP
Član
Član



Pridružen-a: Tor 07 Avg 2007 15:30
Prispevkov: 1234
Aktiv.: 6.07
Kraj: KOPER

PrispevekObjavljeno: Pet Avg 07, 2015 9:24 pm    Naslov sporočila:   Odgovori s citatom

tu imaš nekaj osnov serijske komunikacije.

http://www.elektronik.si/phpBB2/viewtopic.php?t=13792

_________________
Lep pozdrav iz Kopra Rudi
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
stursc
Član
Član



Pridružen-a: Tor 08 Jun 2004 14:29
Prispevkov: 323
Aktiv.: 1.45

PrispevekObjavljeno: Tor Nov 10, 2015 3:52 pm    Naslov sporočila:   Odgovori s citatom

Nerazumljiva dogajanja so me pognala po pomoč.
Za spremljanje programa imam SW-UART. Na testni plošči je vse delovalo.
Ko sem vse prenesel na delovno ploščo, tukaj sem moral zaradi razporeda zamenjati pin
za SW_UART (prej je bil na pinb.6 , sedaj na pina1).
Vse lepo deluje dokler imam konektor programatorja na pinih delovne plošče, ko snamem
konektor programatorja, SW-UART neha delovati, ostali del programa deluje b.p.
Pametne ideje več nimam, zato prosim za kak komentar, ki bi me približal rešitvi


Hvala

LP, stursc
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
protoncek
Član
Član



Pridružen-a: Sre 31 Jan 2007 9:41
Prispevkov: 9573
Aktiv.: 45.68
Kraj: Mengeš

PrispevekObjavljeno: Tor Nov 10, 2015 5:18 pm    Naslov sporočila:   Odgovori s citatom

Jaz bi najprej dal kakšen pull-up ali pull-down upor. Itak ga je dobro imeti, da ne vleče preveč motenj.
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
stursc
Član
Član



Pridružen-a: Tor 08 Jun 2004 14:29
Prispevkov: 323
Aktiv.: 1.45

PrispevekObjavljeno: Tor Nov 10, 2015 9:34 pm    Naslov sporočila:   Odgovori s citatom

Da se malo dopolnim
Vsi pini imajo zunaje pullup 10K upore. Poskušal sem zmanjšati pullup na 5K, razlike ni.
Potem sem odstrali pullup upor, razlike ni.
Vrnil sem se nazaj na testno ploščo in ugotovil enako stanje, namreč na testni plošči (minipin) ni bilo potrebe odstranjevati programatorja in teh težav nisem opazil. Sedaj sem tudi na testni odstarnil programator (COM kabel) in terminal na SW UART ne dela več. Če priklopim programator nazaj na COM port, SW-uart spet normalno izpisuje.
Nadaljnih idej mi je zmanjkalo (vsaj za danes). Premeril sem morebitne slabe povezave, predvsem GND, vse OK.

Vsakega pregloga, komentarja bom vesel, predvsem, ker sem tak sistem komunikacije že uporabil in še danes deluje, tukaj se je pa nekaj zapletlo.


LP, stursc
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
protoncek
Član
Član



Pridružen-a: Sre 31 Jan 2007 9:41
Prispevkov: 9573
Aktiv.: 45.68
Kraj: Mengeš

PrispevekObjavljeno: Tor Nov 10, 2015 9:40 pm    Naslov sporočila:   Odgovori s citatom

Daj ledici na TX in RX, da vidiš, ali kaj utripajo v enem in drugem primeru.
Pa poskusi dati upor na maso (pull-down). Probat ni greh...
A ostalo pa dela? Da ni AVR v stanju reseta ? (daj upor z reseta na maso) na en pin sprogramiraj utripanje ledice, da vidiš, če AVR sploh teče. Jaz sem imel bogate težave na EasyAVR, ko se mi je na 3.3V po cca 15 sekundah AVR ustavil. Na koncu sem ugotovil, da progrmator nekako na polovico potegne reset gor, ravno dovolj, da se ustavi. Dodatni pull-down upor je pomagal...
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
vilko
Član
Član



Pridružen-a: Pet 13 Feb 2004 10:26
Prispevkov: 3351
Aktiv.: 15.04
Kraj: Dragomer

PrispevekObjavljeno: Sre Nov 11, 2015 1:19 pm    Naslov sporočila:   Odgovori s citatom

Torej, če je komunikacija obojesmerna in ni nekoga, ki bi upravljal promet na liniji, je potrebno predvideti, da pride do čim manj kolizije - zaletavavanja telegramov na liniji, to se zgodi, ko več udeležencev linije želi oddati podatke.

Kot vidim iz sheme, (Lin2.1book stran 111) lahko iz ene žicel ločiš TX in RX signala

Sam uporabljam dvožično RX485 komunikacijo na sledeč način:

RX vežem izključno na hardware uart RX. Ta omogoča serial interrupt.
V serial interrupt rutini lovim bajte iz linije in sestavljam telegram, podatek v spremenljivko tipa string.
Ko ugotovim, da je telegrama konec, prenesem cel string v drugo polje, da s tem sprostim prvi string za sprejemanje novih podatkov. Postavim zastavico glavnemu programu, da obdela podatek.
Pri sprejemu vsakega bajta rx interrupt rutina postavi števec časa na nič.
Ta števec časa poriva naprej timer prekinitveni podprogram, tako vem, koliko časa je bila na liniji tišina, ni nihče nič oddajal.

Pri pošiljanju podatkov v linijo, najprej čakam neko slučajnostno vedno drugo število - čas. Na samo oddajanje bajtov grem šele, ko ugotovim, da je bila na liniji tišina toliko časa, kot je generator slučajnih števil predlagal za to oddajo.

Kolizija telegramov s tem ni izključena, a s pravilnim uglaševanjem je verjetnost kolizije tako majhna, da je zadeva uporabna.



snap.jpg
 Opis:
 Velikost datoteke:  18.07 KB
 Pogledana:  7400 krat

snap.jpg



_________________
Prepričan sem, da je inteligentnih bitij v vesolju veliko. A ker so inteligenta, se nam nočejo prikazati.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
stursc
Član
Član



Pridružen-a: Tor 08 Jun 2004 14:29
Prispevkov: 323
Aktiv.: 1.45

PrispevekObjavljeno: Sre Nov 11, 2015 9:06 pm    Naslov sporočila:   Odgovori s citatom

Hvala za vse komentarje, vsak je dobrodošel.
Napako se odkril naključno, slaba masa na vmesniku, ki ga sicer uporabljam že 3 leta.
Se zgodi, da moraš kaj popraviti za sabo. Torej komunikacija deluje in sedaj lahko ugotavljam tudi druge napake.
Takoj sem ugotovil naslednjo napako (povezano z komunikacijo).
Ta je sigurno "softwerska", vendar še nisem našel rešitve, namreč gre za sistem in povezavo z GSM modulom TC35 in ATmega 32.
Kaj se dogaja? Modulu pošljem SMS z vsebino za opravljeno delo. SMS je vredu prebran, zahtevana naloga se izvede OK, potem gre program v podprogram brisanje SMS sporočila (Bascomaši vedo, da je to ukaz AT+CMGD=id_sms)
Problem je le brisanje tega sporočila po izvedeni zahtevi.
Da bi se prepričal o kompatibilnosti ukaza, sem dodal tipko za prehod v ta del podprograma, ki ob prehodu dejansko zbriše določeno sporočilo.
Ukaz (gosub brisi_sms) po izvedeni zahtevi SMS sporočila, ki jo solidno opravi, sicer gre v sam podprogram (vidno iz izpisa podatkov), vendar sporočila ne briše.

Nabiram si šele izkušnje z tem modulom, zato so vaše izkušnje dobrodošle.


Hvala za sodelovanje

LP, stursc
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
arksi
Član
Član



Pridružen-a: Sre 03 Sep 2008 10:19
Prispevkov: 741
Aktiv.: 3.90
Kraj: Dolenjska

PrispevekObjavljeno: Čet Nov 12, 2015 7:56 am    Naslov sporočila:   Odgovori s citatom

stursc je napisal/a:
................... Modulu pošljem SMS z vsebino za opravljeno delo. SMS je vredu prebran, zahtevana naloga se izvede OK, potem gre program v podprogram brisanje SMS sporočila (Bascomaši vedo, da je to ukaz AT+CMGD=id_sms)
Problem je le brisanje tega sporočila po izvedeni zahtevi.......................

LP, stursc


Sporočila na sim kartici se ti kopičijo do zapolnitve spomina. Ko je sim kartica polna ne sprejme modem več sporočila. Potrebno je brisati sporočilo ali vsa sporočila, da naredimo prostor za sprejem novega SMS.

Sedaj ne vem kako ti to sporočilo brišeš oz. bom vprašal drugače.
Kako veš na kateri lokaciji je sporočilo za brisanje? Dobiš lokacijo sporočila tako, da ti jo posreduje sam modem, ali imaš narejeno tako, da vedno brišeš prvo ali kakšno drugo lokacijo sim kartice? Ukaz AT+CMGD=id_sms naj bi bil pravi, saj imajo, verjetno, vsi modemi standardizirane ukaze.
Ukaz AT+CMGD=1 torej izbriše sporočilo na lokaciji 1.
Ukaz AT+CMGD=2 torej izbriše sporočilo na lokaciji 2.
...........

Nekateri modemi so malo "leni" in potrebujejo med posameznimi ukazi malo pavze. Npr. pri nekaterih modemih zadostuje cca 100ms med posameznim ukazom in potem stvar deluje.

LP
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
stursc
Član
Član



Pridružen-a: Tor 08 Jun 2004 14:29
Prispevkov: 323
Aktiv.: 1.45

PrispevekObjavljeno: Čet Nov 12, 2015 10:01 am    Naslov sporočila:   Odgovori s citatom

arksi je napisal/a:


Sporočila na sim kartici se ti kopičijo do zapolnitve spomina. Ko je sim kartica polna ne sprejme modem več sporočila. Potrebno je brisati sporočilo ali vsa sporočila, da naredimo prostor za sprejem novega SMS.

LP


Saj, zato pa brišem sporočila takoj po obdelavi. Če je sporočilo od "pravega Clipa", ga obdeluje, drugače ga kar briše. Ker berem le 2X na minuto obstaja možnost prejema več sporočil med branjema. Naredil sem tako, da kontroliram do 9 sporočil (če je več kot eno), obdela vsakega, če je pošiljatelj "pravi" in potem briše, tako vse do zadnjega.

Ukaz je že pravi, saj mi ga na prehodu v podprogram z simulirano tipko normalno briše.
Se bo treba še malo poigrati. Vsak komentar včasih le pripelje do rešitve.


LP,stursc
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 -> AVR, LPC900, x51 Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Pojdi na stran 1, 2  Naslednja
Stran 1 od 2

 
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: 69 dni


Powered by phpBB © 2001, 2005 phpBB Group