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 

Dva mikrokontrolerja at89c4051 in UART komunikacija

 
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
veter
Član
Član



Pridružen-a: Tor 06 Jan 2004 9:25
Prispevkov: 138
Aktiv.: 0.58
Kraj: Bled

PrispevekObjavljeno: Tor Feb 26, 2008 12:01 am    Naslov sporočila:  Dva mikrokontrolerja at89c4051 in UART komunikacija Odgovori s citatom

Pozdravljeni!

Veliko je podobnih tem na moj problem ampak točno takega nisem našel vforumu, zato sem odprl novo temo. Torej zadeva je naslednja:
Želim povezati dva ukontroleja at89c4051 da bi se lahko "pogovarjala" med seboj.
1.) Ali moram tudi vtem primeru uporabiti max232? Razdalja: cca 2-3m, uporabil bi kar kabel od telefonske slušalke (izmeril sem upornost cca 4.5 Ohm)

Če je odgovor JA, potem mi je jasno zakaj ne dela, če je odgovor NE, potem vprašanje št.2:
2.) Zadeva mi seveda ne špila, oz, mi deluje na naslednji način:
Če sem povezal ukontroler1 s Hypertermianlom in sem vtipkaval kode, se je vse odvijalo OK.
Če sem ukontroler2 povezal in opazoval izpise v Hyperterminalu je vse delalo OK

Potem pa sem dal ukontrolerju1 v neskonči zanki ukaz naj izpisuje št.1 ukontrolerju2 pa če bo prebral 1 naj prižge ledico. Dogajalo se je potem da mi je vsak toliko časa res prižgal ledico potem pa dolgo spte nič, v naključnem vrsten mredu. Potem sem dal ukaz če bo prebrana vrdnost različna od 0, in je ledica lepo svetila.
Zdi se mi kot da bi ne vedel kdaj je začetek byta ki ga dobi za prebrat...

Kakšen nasvet?
Programček sem pisal v BASCOM-u:
Program 1:
$baud = 9600
$crystal 11059200

Dim A As Byte
A = 1

Zanka:
Print A
Goto Zanka

Program2:
$baud = 9600
$crystal 11059200

Dim A As Byte
P1.0 = 0

Zanka:
Input A
If A = 1 Then
P1.0 = 1
Waitms 250
Else
P1.0 = 0
End If
Goto Zanka
End
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
dragoon
Član
Član



Pridružen-a: Čet 03 Maj 2007 21:51
Prispevkov: 452
Aktiv.: 2.05
Kraj: Trojane

PrispevekObjavljeno: Tor Feb 26, 2008 9:13 am    Naslov sporočila:   Odgovori s citatom

max232 se uporablja za pretvorbo nivojev. Se pravi če uporabljaš dve napravi ki imata iste nivoje ga ni treba uporabit.
Dolgo časa je že odkar sem nehal z bascomom, vendar mislim, da ukaz print brez dodatkov pošlje ascii kodo znaka + CR + LF. Tako, da če pošlješ 1 dobiš na drugem koncu 49 in še dva byta. Daj priklopi gor lcd in pa naredi izpis prejetega, da vidiš sploh kaj dobiš.
Avrji imajo tudi možnost vklopa interrupta za uart, ne vem kako je s tem pri teh prcesorjih.
namesto zanka...goto zanka je mogoče boljša uporaba do...loop ali pa while(1).

_________________
LP, Mitja
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo MSN Messenger - naslov
aly
Član
Član



Pridružen-a: Tor 28 Sep 2004 14:51
Prispevkov: 9407
Aktiv.: 39.71
Kraj: Kranj - struževo

PrispevekObjavljeno: Tor Feb 26, 2008 10:37 am    Naslov sporočila:   Odgovori s citatom

Kako si ti to priklapljal na Hyperterminal? Z dodatnim MAXom ali kar direkt?
Da ugotoviš, kaj procesor sploh pošilja, uporabi kakšen boljši terminal, npr. Bray-ev, pri katerem uporabiš HEX izpis in ne ascii.

Pricesorja med seboj lahko priključiš direktno.
Najprej preizkušaj z 10 cm dolgim kablom! Ko to deluje, podaljšaj.
Hitrost 9600 ne bi smela biti previsoka.
Preveri, da imaš dobro maso med obema vezjema. Če uporabiš več žil paralelno, ne bo nič narobe.
Če misliš, da boš imel lahko inducirane motnje v kablu, uporabi twisted-pair kabel in RS422 komunikacijo in ne RS232.

_________________
I'm going to stand outside, so if anyone asks, I'm outstanding Smile
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran MSN Messenger - naslov
veter
Član
Član



Pridružen-a: Tor 06 Jan 2004 9:25
Prispevkov: 138
Aktiv.: 0.58
Kraj: Bled

PrispevekObjavljeno: Tor Feb 26, 2008 11:14 am    Naslov sporočila:   Odgovori s citatom

Pozdravljena!

Na Hyperterminal sem preklopil preko MAX232...
Žal LCD ne morem priklopiti, ker sem (zaćetniška napaka) že izdelal končno ploščo samo z možnostjo izhoda RS232 preko MAX232).
Bom pa preveril, kako je s tistim +CR +LF (sicer se mi v tem trenutku še ne sanja kaj bi to bilo).
Baje lahko tudi Hyperterminal bere v HEX-u (to sem zvedel dopoldan). Torej bom probal nastaviti Hyperterminal v HEX in preveril tista +CR+LF (ker tudi to sem dobil danes indic od kolega da je baje možno da dobivam).
Zato je ideja, da bi poslal samo vsake recimo 100ms.
Ali mislite da se bom s tem izognil, da bi input prebiral še tista dva +CR in +LF?

Hvala lepa
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
aly
Član
Član



Pridružen-a: Tor 28 Sep 2004 14:51
Prispevkov: 9407
Aktiv.: 39.71
Kraj: Kranj - struževo

PrispevekObjavljeno: Tor Feb 26, 2008 2:12 pm    Naslov sporočila:   Odgovori s citatom

CR je "Carriage Return"
LF je "Line Feed"

To sta znaka, z desetiško vrednostjo napisana kot 13 in 10. Pomenita konec vrstice in začetek nove vrstice. Ko na tipkovnici pritisneš Enter, se generira koda 13 (CR).
Če se ti v Terminalu številke / znaki izpisujejo drug poleg drugega, potem nimaš CRLF.
Če pa se znaki izpisujejo drug pod drugim (v novi vrstici), potem imaš CRLF.
To sta dva dodatna znaka, ki se jima z delayem ne moreš izogniti. Lahko jih izklopiš na izvoru ali na sprejemu ignoriraš ali na sprejemu uporabiš kot znak za zaključek paketa podatkov.

HyperTerminal in HEX prikaz? Laughing Daj no daj Razz Vic dneva.
Na koncu TE strani imaš link do Brayevega terminala. Priporočam.

P.S.
- V programu ki pošilja, dodaj neko majhno zakasnitev. Ne more škoditi.
- tesni znak vzemi namesto $01 raje recimo nek ASCII znak, ki se ti lepo izpisuje v terminalu.
- Za Naslednji korak vzemi serijo dveh znakov, npr. "V" in "W", eden prižge LED, drugi ugasne.

_________________
I'm going to stand outside, so if anyone asks, I'm outstanding Smile


Nazadnje urejal/a aly Tor Feb 26, 2008 2:29 pm; skupaj popravljeno 1 krat
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran MSN Messenger - naslov
veter
Član
Član



Pridružen-a: Tor 06 Jan 2004 9:25
Prispevkov: 138
Aktiv.: 0.58
Kraj: Bled

PrispevekObjavljeno: Tor Feb 26, 2008 2:21 pm    Naslov sporočila:   Odgovori s citatom

Ja, znaki se mi izpisujejo lep oeden pod drugim...

No ja, priznam del krivde ker pač verjamem vsakomur kar mi povejo (glede Hyperterminala in HEX)...
Kakšna ideja kako se to reši v Bascomu (izklop oz ingoriranje teh dveh kod?)
Vsekakor bom pogledal link, hvala.

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



Pridružen-a: Tor 28 Sep 2004 14:51
Prispevkov: 9407
Aktiv.: 39.71
Kraj: Kranj - struževo

PrispevekObjavljeno: Tor Feb 26, 2008 2:31 pm    Naslov sporočila:   Odgovori s citatom

Pogledaš v navodila od Bascoma oz. po domače rtfm Wink
Ignoriranje ni možno, lahko pa narediš tako:
if A = CR then (do nothing)
if A = LF then (do nothing)
if A = "V" then (LED = 1)
if A = "W" then (LED = 0)

na primer. Sintaksa ni iz Bascoma, ker ga ne poznam.
Glede na zgoraj napisani program ti zadeva deluje. Znak 1 vklopi led, CR in LF (v else stavku) pa jo izklopita.

"Random" utripanje pa dobiš zato, ker en kontroler bruha podatke neprestano, drugi pa jih prebere samo 4x na sekundo, brez bufferja.
V prvem programu dodaj zakasnitev 1000ms, pa bo bolje. Upam, da ima ta tvoj kontroler vsaj 2 znaka HW bufferja, sicer ne bo šlo. Ali pa vrzi ven tistih 250ms neuporabne zakasnitve.
Še najbolje, pa če najdeš ukaz ali nastavitev, ki ne pošlje CRLF.

_________________
I'm going to stand outside, so if anyone asks, I'm outstanding Smile
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran MSN Messenger - naslov
veter
Član
Član



Pridružen-a: Tor 06 Jan 2004 9:25
Prispevkov: 138
Aktiv.: 0.58
Kraj: Bled

PrispevekObjavljeno: Tor Feb 26, 2008 5:38 pm    Naslov sporočila:   Odgovori s citatom

Hvala za odgovor. Bom zvečer preizkusil katero od variant.

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



Pridružen-a: Tor 06 Jan 2004 9:25
Prispevkov: 138
Aktiv.: 0.58
Kraj: Bled

PrispevekObjavljeno: Sre Feb 27, 2008 1:27 am    Naslov sporočila:   Odgovori s citatom

Dober večer /dobro jutro!

Zadeva je naslednja:
Nekako mi je uspelo da se ukontrolerja pogovarjata med seboj. Ukat PRINT mora imeti ; in se s tem znebiš CRLF, dodati sem mu moral ukaz za pavzico 1ms.
Podobno je tudi pri INPU manjkala pavzica.

Torej na ta način se mi uspeta pogovarjati.
Ampak sedaj ko gre zares pa se zopet ne pogovarjata. Namreč, z neskončno zanka preverjam štiri porte na katere so priključene štiri tipke. In zopet se nič ne zgodi. Če ni nobena tipka pritisnjena se pogovarjata (dal sem ukaz prin 1;) ko pa je katera tipka pritisnjena pa se nehata pogovarjati (čeprav sem po istem principu dal ukaz PRINT 1;). Kontrolna dioda zasveti, kar pomeni, da je ukontroler zaznal da je tipka bila pritisnjena.
Mislim, da je tu zopet problem s časovno sinhronizacijo.
Kako pa se sedaj reši ta problem?

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



Pridružen-a: Tor 28 Sep 2004 14:51
Prispevkov: 9407
Aktiv.: 39.71
Kraj: Kranj - struževo

PrispevekObjavljeno: Sre Feb 27, 2008 4:29 pm    Naslov sporočila:   Odgovori s citatom

Paralelno sprejemniku vežeš 2 žici še na max232 in na terminalu gledaš, kaj se dogaja. Povsem verjetno je nekaj narobe s programom, ki pošilja.
_________________
I'm going to stand outside, so if anyone asks, I'm outstanding Smile
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran MSN Messenger - naslov
veter
Član
Član



Pridružen-a: Tor 06 Jan 2004 9:25
Prispevkov: 138
Aktiv.: 0.58
Kraj: Bled

PrispevekObjavljeno: Sob Mar 01, 2008 11:28 pm    Naslov sporočila:   Odgovori s citatom

Ja, pozdravljeni vsi, ki sledite tej temi.

Odkril sem, kje je bila težava.
Namreč port P3 sem pred testiranjem postavil na 0 in s tem očitno zaklenil tudi TxD in RxD, ki se nahajata na P3.0 in P3.1. V tistem frugem testnem programu tega nisem naredil, zato mi je tam zadeva delovala.

Sicer sem poizkusil sedaj v BASCOM-u z ukazom OPEN, pa žal ne gre, tako da sem moral posamično zapreti tiste porte na P3, ki so me prej motili. Ima pa to slabo stran v tem, da če bo v komunikaciji kaj zaštekalo, da bom moral resetirati keypad...
Mogoče bom enkrat razvozlal kako pravilno odpreti z OPEN, da bo zadeva štimala, pa bi potem moral biti keypad tudi bolj stabilen.
No, zaenkrat sem se sprijaznil s tem.

Hvala vsem za nasvete in LP!

Tilen
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
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: 494 dni


Powered by phpBB © 2001, 2005 phpBB Group