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 

UART komunikacija
Pojdi na stran 1, 2  Naslednja
 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Elektronika
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
zuti
Član
Član



Pridružen-a: Tor 01 Feb 2005 23:49
Prispevkov: 65
Aktiv.: 0.27
Kraj: Mb

PrispevekObjavljeno: Pon Okt 24, 2005 5:32 pm    Naslov sporočila:  UART komunikacija Odgovori s citatom

Lep pozdrav!
Že kar nekaj dni se mučim z eno stvarjo, pa ji ne pridem do dna, zato bi prosil, če je komu jasno karkoli otipljivega, za pomoč. Stvar je sledeča. Zaradi dolžine bom prikazal samo strnjen primer kode, ki pa mi v bistvu povzroča težave. V danem primeru se dogaja sledeče: Z Atmelom 2051 štejem frekvenco na enemu od pinov, ter nato podatek preko UARTA pošiljam v Atmel 89S8252, ki služi kot sprejemnik. Tam nato obdelam podatke, ter (v originalni kodi) nekaj izvršim. Dogaja se mi pa to: Po 88 "Loopih" v sprejemniku , nekaj zablokira. Ali ostane na LCD-ju prikazano da je bilo izvršeno 88 loopov in stvar ostane zablokirana, ali pa LCD v celoti potemni, ter po cca 5 sekundah ponovno prične prikazovati podatke, le da se ob tem stevec "LOOP-ov" resetira na 1, ter ponovno steje, seveda samo do 88. Probal sem že vsemogoče, ampak............ Zakaj ravno 88 in to zmeraj, to mi je uganka ki je ne znam razvozljati. Drugače je števec loop-ov brezpredmeten, v tem primeru je dodan samo zaradi lažje kontrole.

Koda:

'Oddajnik - Atmel 2051
Dim Podatek As Word , A2 As Byte , Vstop As Byte
Dim S As String * 5 , I As Byte , Dum As Byte , Pomdum As Byte

$crystal = 12000000
Open "com3.1:300" For Output As #1
Open "com3.0:300" For Input As #2

' V loop zanki cakam na start bit iz sprejemnika

Do
Get #2 , Vstop
If Vstop <> "v" Then Loop
' Zakasnitev 500mS, da sigurno sprejmem start bit
Waitms 250
Waitms 250
' Navadni stevec impulzov
Config Timer0 = Counter , Gate = Internal , Mode = 1
Counter0 = 0
Start Counter0
Waitms 250
Waitms 253
Stop Counter0
Podatek = Counter0
'spremenim stevilo v string, da ga lahko posljem
'tudi ce je vecje kot Byte v sprejemnik
S = Str(podatek)
Dum = Len(s)
For I = 1 To Dum
A2 = Mid(s , I , 1)
Put #1 , A2
Waitms 30
Next
' A2 je zakljucni bit
A2 = "X"
Put #1 , A2
A2 = ""
Return
Close #1
Close #2

***************************************

'Sprejemnik - AT89S8252
$large
Dim A2 As String * 1
Dim S As String * 4
Dim Cifra As Single
Dim Prikaz As String * 4
Dim Stevec As Byte
Dim Vstop As Byte

Config Lcdpin = Pin , Db4 = P0.4 , Db5 = P0.2 , Db6 = P0.5 , Db7 = P0.3 , E = P0.1 , Rs = P0.0
Cursor Off
Config Lcd = 16 * 2
$crystal = 12000000
'stevec samo pomaga steti koliko Do-Loop
'zank se izvede
Stevec = 1
'Vstop je start bit za oddajnik
Vstop = "v"

Open "com3.0:300" For Input As #1
Open "com3.1:300" For Output As #2

Zacetek:
'posljem v oddajnik start bit
Put #2 , Vstop
'v loop zanki sprejemam podatke in ko prispe
'prekinitveni ("X") bit skoci iz zanke
' ter prikaze podatek
Do
Get #1 , A2
If A2 <> "" Then
If A2 = "X" Then
Cifra = Val(s)
Prikaz = Fusing(cifra , 0)
Exit Do
Else
S = S + A2
End If
End If
Loop
'brisem vrednost "S", prikazem podatek
' ter ponovim vse skupaj znova
S = ""
Cls
Lcd "vstop=" ; Prikaz
Lowerline
Lcd "stevec=" ; Stevec
Incr Stevec
Gosub Zacetek

Close #1
Close #2
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
micabauc
Član
Član



Pridružen-a: Tor 03 Jun 2003 7:12
Prispevkov: 177
Aktiv.: 0.75
Kraj: Celje

PrispevekObjavljeno: Pon Okt 24, 2005 9:48 pm    Naslov sporočila:   Odgovori s citatom

Napisi v asemblerju, pa bo delalo!
Po mojem, ti zmanjka spomina, pa se stvar povozi.

Stevec lahko pade na 1 samo ce se program zresetira, ali pa se obrne okoli.(overflow).
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
tibi
Član
Član



Pridružen-a: Tor 16 Dec 2003 11:08
Prispevkov: 253
Aktiv.: 1.07
Kraj: bukovje

PrispevekObjavljeno: Tor Okt 25, 2005 6:16 am    Naslov sporočila:   Odgovori s citatom

micabauc je napisal/a:
Napisi v asemblerju, pa bo delalo!


Zakaj pa bi moral pisati v asemblerju Evil or Very Mad
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
NeoTO
Član
Član



Pridružen-a: Pon 28 Mar 2005 19:19
Prispevkov: 2752
Aktiv.: 11.61
Kraj: Trzic

PrispevekObjavljeno: Tor Okt 25, 2005 7:39 am    Naslov sporočila:   Odgovori s citatom

Ali ostane na LCD-ju prikazano da je bilo izvršeno 88 loopov in stvar ostane zablokirana, ali pa LCD v celoti potemni

Hm... Tole se mi zdi malce čudno. Si preveril napajanje? Imaš kakšen pin tako zvezan, da ti naredi kratek stik in restarta mikrokontroler?
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo MSN Messenger - naslov
zuti
Član
Član



Pridružen-a: Tor 01 Feb 2005 23:49
Prispevkov: 65
Aktiv.: 0.27
Kraj: Mb

PrispevekObjavljeno: Tor Okt 25, 2005 3:36 pm    Naslov sporočila:   Odgovori s citatom

Tudi meni se zdi čudno. Napake na vezju ni nikjer - preverjeno, sem pa pozabil napisati še en primer ki se pojavi. Če v "do - loop" zanki sprejemnika uporabim ukaz namesto "exit do" , "gosub...recimo.... prikazi:", pa se loop izvrši samo 44 krat, torej polovico manjkrat, nato sledi vse ostalo. Bil bi res zelo vesel, če bi kdo "piknil " ta dva čipa v testno ploščo, ter stvar sprobal. V kodi ne vidim napake, pa tudi Bascom v ozadju "vsaj mislim" generira asemblersko kodo, tako da ??? Tudi sam program je velik komaj nekaj čez 2 k ........ ne vem. Vse skupaj je v glavnem čudno.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
NeoTO
Član
Član



Pridružen-a: Pon 28 Mar 2005 19:19
Prispevkov: 2752
Aktiv.: 11.61
Kraj: Trzic

PrispevekObjavljeno: Tor Okt 25, 2005 4:40 pm    Naslov sporočila:   Odgovori s citatom

Daj priklopi vezje na serijski port računalnika in preko nekega terminalskega programa glej kaj se dogaja. Najprej si oglej, kaj prvi mikrokontroler sploh pošilja, potem pa še drugega priklopi in mu preko tipkovnice vpisuj znake ter glej rezultat.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo MSN Messenger - naslov
zuti
Član
Član



Pridružen-a: Tor 01 Feb 2005 23:49
Prispevkov: 65
Aktiv.: 0.27
Kraj: Mb

PrispevekObjavljeno: Tor Okt 25, 2005 9:12 pm    Naslov sporočila:   Odgovori s citatom

Bom še probal malo "šarati" po programu, ker si moram narediti kable za povezavo na PC. Ali lahko sploh priklopim kontroler na PC brez Max-a 232? Pa v bistvu kaj bom videl na terminalskem oknu drugega, kot na LCD-ju? Če je napaka v oddajniku, bo tudi v terminalskem oknu prikazalo neko "kvako", če pa v sprejemniku, pa bo na LCD-ju prikaz isti, in zopet ne bom vedel čemu je vzrok takega prikazovanja. Alli se motim?
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: Tor Okt 25, 2005 9:38 pm    Naslov sporočila:   Odgovori s citatom

Ne, ne mores prikljuciti mikrokontrolerja (TTL) neposredno na serijski port racunalnika (RS232) in racunati na to, da bi MCU prezivel.

Kaj bos videl v terminalskem oknu ? Niz podatkov, ki jih posilja oddajnik. Ker najbrz ves kaksne podatke naj bi oddajnik posiljal, jih bos lahko primerjal s pricakovanimi in ugotovil ali poslje tudi kaj cesar ne bi smel, kar posledicno povzroci crash na sprejemni strani. Ce je napaka v sprejemniku, bos to najlazje ugotovil tako, da izlocis drugi del (oddajnik). Cel kup dejavnikov vpliva na podatek, preden le-ta pride od oddajnika do LCDja; s spremljanjem na PCju bos vmesne dejavnike izlocil.

Zakaj bi to pocel ? Nakljucno spreminjanje kode je praviloma zelo neucinkovito; ce ves kje je problem, ga je bistveno lazje odpraviti, a ce ti ugibanje bolj ustreza - veliko srece, najbrz jo bos potreboval Wink
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
zuti
Član
Član



Pridružen-a: Tor 01 Feb 2005 23:49
Prispevkov: 65
Aktiv.: 0.27
Kraj: Mb

PrispevekObjavljeno: Tor Okt 25, 2005 10:26 pm    Naslov sporočila:   Odgovori s citatom

V vsakem primeru bi rad prišel stvari do dna, pa če bo treba, bom seveda tudi priklopil vse skupaj na PC. Veš, da kode naključno ne bom spreminjal, ker v bistvu niti nimam kaj spremenit, ker taka kot je, bi stvar po vseh pravilih morala delovati.
Poraja se mi pa eno vprašanje: Ko bom dodal Max-a 232, ali se bo dogajalo isto, ali ne? Veš, rad bi slišal kakšne izkušnje nekoga, ki je takšno ali pa slično stvar že naredil in ali je imel slične probleme ali ne. Obstaja mogoče celo možnost napake Bascoma pri prevodu kode?.
Če ne bo kakega otipljivega namiga, jutri priklopim na PC, Pa da vidim Shocked !
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
NeoTO
Član
Član



Pridružen-a: Pon 28 Mar 2005 19:19
Prispevkov: 2752
Aktiv.: 11.61
Kraj: Trzic

PrispevekObjavljeno: Tor Okt 25, 2005 10:28 pm    Naslov sporočila:   Odgovori s citatom

Poleg tega lahko narediš tudi test sprejemnika, tako da namesto oddajnika ti pošiljaš podatke preko serijskega vmesnika računalnika.

Kabel si pa le zrihti, to je osnova za enostavno 'razhroščevanje' programa.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo MSN Messenger - naslov
zuti
Član
Član



Pridružen-a: Tor 01 Feb 2005 23:49
Prispevkov: 65
Aktiv.: 0.27
Kraj: Mb

PrispevekObjavljeno: Tor Okt 25, 2005 10:39 pm    Naslov sporočila:   Odgovori s citatom

Ja vse lepo in prav, samo vseeno: zakaj ravno vedno 88 ali pa 44 krat ? Nikoli enkrat več ali enkrat manj. Kot da se v sprejemniku nekaj polni z podatki, potem pa zzzccck!
No ja, bom videl jutri, ampak vseeno sumim, da mi v kodi nekaj manjka.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Lagrange
Član
Član



Pridružen-a: Pet 10 Okt 2003 10:07
Prispevkov: 164
Aktiv.: 0.69
Kraj: Ljubljana

PrispevekObjavljeno: Sre Okt 26, 2005 9:05 am    Naslov sporočila:   Odgovori s citatom

Meni se je nekaj podobnega dogajalo z MSP, ko sem pozabil izklopiti wdt.
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
smatjaz
Član
Član



Pridružen-a: Pon 10 Nov 2003 16:33
Prispevkov: 846
Aktiv.: 3.57

PrispevekObjavljeno: Sre Okt 26, 2005 9:41 am    Naslov sporočila:   Odgovori s citatom

Problem imaš s tem:
"Gosub Zacetek" !!!

Tu skačeš sam vase. To pa pomeni, da po določenem številu ciklov zapolniš RAM. V tvojem primeru je to verjetno 88. Poskusi s še eno Do.. Loop zanko, pa bo vse delalo tako kot treba.

LP Matjaž

_________________
Električni aparati delujejo na dim ... ko dim iz njih uide ... ne delujejo več!
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
vilko
Član
Član



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

PrispevekObjavljeno: Sre Okt 26, 2005 4:06 pm    Naslov sporočila:  Ali pa Odgovori s citatom

ali pa namesto

gosub Zacetek

receš

goto Zacetek

_________________
Nihče ni za vojno in vsi so za mir,
vsi so za bratstvo, nihče za prepir.
Od same ljubezni vsak čas na granatah
bo vtisnjeno geslo: "Darilo za brata"
Janez Menart
Nazaj na vrh
Prisoten Poglej uporabnikov profil Pošlji zasebno sporočilo
zuti
Član
Član



Pridružen-a: Tor 01 Feb 2005 23:49
Prispevkov: 65
Aktiv.: 0.27
Kraj: Mb

PrispevekObjavljeno: Sre Okt 26, 2005 5:07 pm    Naslov sporočila:   Odgovori s citatom

Probal sem goto začetek, čeravno mora delovati tudi z gosub, probal sem dodati še eno do - loop zanko pa nič novega. Pa saj v bistvu tudi z do - loop zanko skačeš "sam v sebe" , ali ne? To da se mu polni ram tudi sam sumim, samo kako to preprečiti - tega nažalost ne vem.
Lagrange, kaj si mislil s tem: Meni se je nekaj podobnega dogajalo z MSP, ko sem pozabil izklopiti wdt.. Mi lahko prosim malo podrobneje namigneš?
Zvečer pa probam priklopiti na PC, pa da vidim.
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 -> Elektronika Č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: 494 dni


Powered by phpBB © 2001, 2005 phpBB Group