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


Pridružen-a: Sob 08 Mar 2008 13:47 Prispevkov: 2173 Aktiv.: 10.33 Kraj: Maribor (Pohorje)
|
Objavljeno: Pon Apr 13, 2009 9:42 am Naslov sporočila: Terminal, RS232, ATmega16 |
|
|
Pozdravljeni!
Imam en problem, že od nekdaj, ki mi je zdaj začel iti skrajno na živce. Imam ATmego16, povezano prek RS232 kabla na računalnik, na katerem je Terminal v1.9b - 20041226 - by Br@y++. Finta je v tem, da komuniciranje ČIP->Računalnik deluje odlično, tudi pri večjih hitrostih pošiljanja daljših podatkov ni niti ene napake.
Problem pa nastave v smeri Računalnik->ČIP. Tukaj se vse zmeša. V Bascom-AVR sem sestavil eno čisto kratko kodo, ki čaka, da računalnik nekaj pošlje čipu in čip potem to takoj pošlje nazaj.
$regfile = "m16def.dat"
$crystal = 11059200
$baud = 115200
Dim Odgovor As Word
Waitms 500
Print "Seos!"
Waitms 500
Print "Pošlji mi neko številko, pa bomo vidli, kaj bom dobo (ti pošlem nazaj)."
Do
Odgovor = Waitkey()
Print Odgovor
Loop
End
Zdaj pa poglejmo, kaj mi napiše v Terminalu:
Seos!
Pošlji mi neko številko, pa bomo vidli, kaj bom dobo (ti pošlem nazaj).
6.............(pošljem 0)
103.........(pošljem 1)
51...........(pošljem 2)
102.........(pošljem 3)
25...........(pošljem 4)
101.........(pošljem 5)
50...........(pošljem 6)
100.........(pošljem 7)
12...........(pošljem 8)
99...........(pošljem 9)
103.........(pošljem 10)
6
103.........(pošljem 11)
103
103.........(pošljem 12)
51
... in tako naprej. Tako je pri številkah, pri črkah je še bolj zamešano. Ne gre pa za kake napake pri povezavi, ker je ta "napaka" vedno ista, vsaka številka ima vedno enak svoj Odgovor.
Kako se da to rešiti? Ali obstaja kak drug terminal (Hyper Terminala več v Visti ni) ali pa je težava kje drugje?
To bi res moral nekako rešiti, ker zdaj ne morem komunicirati s čipom in odpadejo kakšni projekti, kot npr. CNC...
_________________ Upanje ni del naše projektne strategije.
Member of Trisat - 1. Slovenian satellite running new fault tolerant aerospace processor.
|
|
Nazaj na vrh |
|
 |
mucek Član


 
Pridružen-a: Tor 01 Avg 2006 10:47 Prispevkov: 5529 Aktiv.: 24.06 Kraj: Domzale
|
Objavljeno: Pon Apr 13, 2009 10:16 am Naslov sporočila: |
|
|
Katero verzijo Bascoma imaš? Vem, da so nekatere stare verzije imele nek podoben problem ...
Uporabljaš interni oscilator ali kvarc?
Lp, Grega
|
|
Nazaj na vrh |
|
 |
program_er Član


Pridružen-a: Sob 08 Mar 2008 13:47 Prispevkov: 2173 Aktiv.: 10.33 Kraj: Maribor (Pohorje)
|
Objavljeno: Pon Apr 13, 2009 10:37 am Naslov sporočila: |
|
|
Imam zunanji kristal 11059200Hz.
Verzija Bascom-AVR 1.11.9.1.
_________________ Upanje ni del naše projektne strategije.
Member of Trisat - 1. Slovenian satellite running new fault tolerant aerospace processor.
|
|
Nazaj na vrh |
|
 |
drVrh Član



Pridružen-a: Sre 20 Feb 2008 20:17 Prispevkov: 918 Aktiv.: 4.35 Kraj: Slovenija-Koroska-Prevalje-Lese
|
Objavljeno: Pon Apr 13, 2009 10:46 am Naslov sporočila: |
|
|
Baudovo hitrost imaš preveliko zmanjšaj jo na 6900 potem bo vredo komuniciralo (vsaj mislim si pri 8051 je tako), preveri pa tudi HyperTerminal
imaš nek čuden terminal.
Poskusi terminal do Windowsov, kako pa se zadeva obnaša v Bascom -AVR terminalu? (Aja praviš da jih v Visti ni, poskusi na kakšnem drugem računalniku)
Aja nastavitve ki so nastavljenje v Bascom terminalu poskusi prepisati v tvoj terminal ter nato preveri.
Pravkar berem Help od Bascom AVR:
Citiram: |
Config Com1 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0 |
Nastavitve poskusi vpisati direktno v mikrokontroler.
_________________ Iz dneva v dan sem se spraševal kaj je to elektrika, vendar nisem našel odgovora ... in še vedno si postavljam to vprašanje
LP
Grega |
|
Nazaj na vrh |
|
 |
program_er Član


Pridružen-a: Sob 08 Mar 2008 13:47 Prispevkov: 2173 Aktiv.: 10.33 Kraj: Maribor (Pohorje)
|
Objavljeno: Pon Apr 13, 2009 7:06 pm Naslov sporočila: |
|
|
Baud hitrost je kar pravilna, sem imel tudi na manjših (do 4800), pa se je dogajalo popolnoma enako.
Bascom terminal je, samo mi nekaj ne dela... HyperTerminala ni v Visti. Imam pa ta terminal, ki niti ni tako čuden in ga marsikdo uporablja.
Sem dodal ta košček kode, pa je enako. Saj tako je že privzeto nastavljeno.
ps.: Bascom-Terminal mi dela. Spet je enaka napaka, so pa cifre druge... 1 je 127, 2 je 63, edino 0 je 0.
Opis: |
Rabil bi pa to za to kodo (testiranje koračnega motorja). Sicer še ni izpopolnjena, ampak vseeno. Ampak tam pri 1 ali 0 se ustavi, ker čip dobi neko drugo cifro. |
|
 Download |
Ime datoteke: |
KORAčNI MOTOR.zip |
Velikost datoteke: |
2.13 KB |
Downloadano: |
15 krat |
_________________ Upanje ni del naše projektne strategije.
Member of Trisat - 1. Slovenian satellite running new fault tolerant aerospace processor.
|
|
Nazaj na vrh |
|
 |
domen_puncer Član

Pridružen-a: Čet 01 Maj 2008 13:30 Prispevkov: 78 Aktiv.: 0.37 Kraj: Ljubljana, Mozirje
|
Objavljeno: Pon Apr 13, 2009 10:09 pm Naslov sporočila: |
|
|
Citiram: |
1 je 127, 2 je 63, |
Bitno je to 00000001 -> 01111111; 00000010 -> 00111111
Mogoce je nakljucje, ampak meni vsaj to izgleda malo prelepo.
Se mi pa ne sklada s prejsnjimi trditvami o tem kaj posljes in kaj dobis. Tudi nisi pisal ali posljes '0' ali '\0'... torej znak '0', ali prvi znak ascii tabele?
_________________ Tiskanje sudoku |
|
Nazaj na vrh |
|
 |
siljo Član



Pridružen-a: Tor 28 Okt 2003 8:08 Prispevkov: 1035 Aktiv.: 4.37 Kraj: Ribn'ca
|
Objavljeno: Pon Apr 13, 2009 10:21 pm Naslov sporočila: |
|
|
Zakaj je Odgovor tipa word, če pa waitkey() vrne ascii ?
poskusi najprej z:
Dim Odgovor as Byte
_________________ Lep pozdrav! |
|
Nazaj na vrh |
|
 |
program_er Član


Pridružen-a: Sob 08 Mar 2008 13:47 Prispevkov: 2173 Aktiv.: 10.33 Kraj: Maribor (Pohorje)
|
Objavljeno: Tor Apr 14, 2009 4:46 pm Naslov sporočila: |
|
|
V priponki je v zipu (.html ne morem dodat) datoteka HTML s kodo iz helpa.
RS232 ukazi:
A = Waitkey() - Zaustavi program in čaka, dokler ne dobi iz UARTa nekega znaka. V A shrani ASCII kodo znaka (ne znak).
A = Inkey() - Leti mimo in če slučajno kak znak čaka na UARTu, ga "pobere" in njegovo ASCII vrednost shrani v A.
Zdaj pa še, kaki je lahko ukaz print:
Print A - Napiše originalno vrednost A, taka, kot je v resnici.
Print Hex(A) - Napiše vrednost A v HEX obliki.
Print Bin(A) - Napiše vrednost A v binarni obliki.
Print Chr(A) - Če je A slučajno ASCII koda od kakega znaka, napiše ta znak, vrednost A pretvori v ASCII znak.
V priponki si poglejte kodo, ker je kar dolga (iz helpa prilepljena) in je nebom lepil tukaj.
V glavnem, kodo sem naložil na ČIP in poglejmo dogajanje v Terminalu:
Hello, hit any alphanumerical key... (pošljem A)
95
Thanks!, as you could see the controller prints a number
but not the key you pressed.
Now try the enter key... (spet pošljem A)
95
The number you see is the ASCII value of the key you pressed.
We need to convert the number back to the key...
Please try an alphanumerical key again... (spet pošljem A)
_ (tukaj bi se zdaj moralo prikazat A)
That's fine!
For a lot of functions, just one key is not enough...
Now type your name and hit enter to confirm
Tukaj se ustavi, ker napišem Bojan in stisnem ENTER, vendar izgleda, da narobe zazna ENTER!
Torej, nekako se mi zdi, kot da ČIP in terminal nebi imela enake ASCII tabele. Nekaj čudnega je tukaj narobe... Ali je možno, da je pri vsem tem kriv čip ATmega16?
Opis: |
|
 Download |
Ime datoteke: |
RS232 KOMUNIKACIJA 2.zip |
Velikost datoteke: |
1.28 KB |
Downloadano: |
9 krat |
_________________ Upanje ni del naše projektne strategije.
Member of Trisat - 1. Slovenian satellite running new fault tolerant aerospace processor.
|
|
Nazaj na vrh |
|
 |
dragoon Član


Pridružen-a: Čet 03 Maj 2007 21:51 Prispevkov: 452 Aktiv.: 2.05 Kraj: Trojane
|
Objavljeno: Tor Apr 14, 2009 5:09 pm Naslov sporočila: |
|
|
Še enkrat preberi siljotov odgovor, probaj, potem pa poglej v help pod data types in si probaj razložit pojav.
hint: domen_puncer je na pravi poti. nekaj v zvezi z negativnimi števili in zapisom le teh v dvojiškem kodu.
_________________ LP, Mitja |
|
Nazaj na vrh |
|
 |
program_er Član


Pridružen-a: Sob 08 Mar 2008 13:47 Prispevkov: 2173 Aktiv.: 10.33 Kraj: Maribor (Pohorje)
|
Objavljeno: Tor Apr 14, 2009 6:47 pm Naslov sporočila: |
|
|
dragoon je napisal/a: |
Še enkrat preberi siljotov odgovor, probaj, potem pa poglej v help pod data types in si probaj razložit pojav.
hint: domen_puncer je na pravi poti. nekaj v zvezi z negativnimi števili in zapisom le teh v dvojiškem kodu.  |
Če pogledaš moj odgovor pred tem, so vse spremenljivke tipa Word, pa še kar ne dela.
Zdaj enkrat grem kupit drug čip, eno ATmego32, mogoče je pa čip blesav...
_________________ Upanje ni del naše projektne strategije.
Member of Trisat - 1. Slovenian satellite running new fault tolerant aerospace processor.
|
|
Nazaj na vrh |
|
 |
dragoon Član


Pridružen-a: Čet 03 Maj 2007 21:51 Prispevkov: 452 Aktiv.: 2.05 Kraj: Trojane
|
Objavljeno: Tor Apr 14, 2009 8:11 pm Naslov sporočila: |
|
|
heh, čip ni nič blesav.. sem pogledal tvojo zadnjo kodo v htmlju.
kolikor vidim ti ob pritisku vrača kodo 95, to je v tabeli podčrtaj. velik A je v ascii na 65. mestu, mali a pa na 97.
nikjer ne vidim kako imaš nastavljen UART. si ziher da bascom naredi tako kakor imaš ti v terminalu? poskusi ročno nastavit uart s takšno nastavitvijo registrov, popravi komentarje in znak ki predstavlja hexa kod v bascomu (0xff=&ff?)
Koda: |
// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: On
// USART Transmitter: On
// USART Mode: Asynchronous
// USART Baud rate: 9600
UCSRA=0x00;
UCSRB=0x18;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x47;
|
takšne parametre komunikacije nastavi tudi v terminalu.
_________________ LP, Mitja |
|
Nazaj na vrh |
|
 |
program_er Član


Pridružen-a: Sob 08 Mar 2008 13:47 Prispevkov: 2173 Aktiv.: 10.33 Kraj: Maribor (Pohorje)
|
Objavljeno: Tor Apr 14, 2009 9:35 pm Naslov sporočila: |
|
|
Ok, to sem dodal kodi:
Ucsra = &H00
Ucsrb = &H18
Ucsrc = &H86
Ubrrh = &H00
Ubrrl = &H47
Kako pa to nastavim v terminalu (hopsasa spremenite v shrani . si Presneta scripta )?
No, saj nisem rabil kaj dosti spreminjati... samo baud sem moral dati na 9600, Drugače pa je napaka enaka.
Zdaj sem nekako rešil problem, vendar bolj zakomplicirano. Pomagam si s tem programčkom:
Dim A As byte
Do
A = Waitkey()
Print "ASCII koda " ; A ; " iz RS232, znak " ; Chr(a)
Loop Until A = 27
In tako vem, kad čip dobi, ko jaz kaj napišem. Zdaj sem pač napisal if A = 6 Then in If A = 103, kar ponazarja 0 ali 1.
_________________ Upanje ni del naše projektne strategije.
Member of Trisat - 1. Slovenian satellite running new fault tolerant aerospace processor.
|
|
Nazaj na vrh |
|
 |
siljo Član



Pridružen-a: Tor 28 Okt 2003 8:08 Prispevkov: 1035 Aktiv.: 4.37 Kraj: Ribn'ca
|
|
Nazaj na vrh |
|
 |
bolha95 Član


Pridružen-a: Pet 14 Dec 2007 21:33 Prispevkov: 296 Aktiv.: 1.39 Kraj: Križe / Tržič
|
Objavljeno: Sre Apr 15, 2009 11:26 am Naslov sporočila: |
|
|
Free Serial Port Monitor
_________________ LP,
Robi
Kjer se znanje konča, se domišljija začne |
|
Nazaj na vrh |
|
 |
program_er Član


Pridružen-a: Sob 08 Mar 2008 13:47 Prispevkov: 2173 Aktiv.: 10.33 Kraj: Maribor (Pohorje)
|
Objavljeno: Sob Apr 18, 2009 9:12 pm Naslov sporočila: |
|
|
Malo sem raziskoval in prišel do spoznanja, da je ASCII tabela in tudi sam čip popolnoma delujoča in pravilna. Ni problem v pretvarjanju znakom in pošiljanju le teh nazaj v Terminal, temveč je krivec vsega sam Terminal, ki pošilja napačne podatke.
Najboljše da si pogledate kodo v Bascom-AVR in LOG file Terminala (sta v priponki kot .html in .txt), kjer je vse razvidno.
V bistvu jaz v programu v string spremenljivko S zapišem en znak, nato pa ga pretvorim v decimalno in HEX obliko njegove ASCII vrednosti. Nato pa, da se prepričam, da čip pretvarja pravilno, decimalno oblike ASCII vrednosti spet pretvorim v znak in gledam, če sta enaka. In sta! Torej je napaka v terminalu. Edino, kar je pravilno je, da če v terminal napišem #0 (# - decimalna vrednost - 0), mi čip vrne, da sem napisal znak NUL oz. <0>. Enak efekt pa je, če stisnem đ in pošljem. Torej "po terminalovo" je đ enak znaku NUL z ASCII vrednostjo #000. Ali pa ga samo čip tako prebere...
Portmon mi je med drugim vrnil nekaj nastavitev Terminala:
Rate: 115200
StopBits: 1 Parity: NONE WordLenght: 8
EOF: 0 ERR: 0 BRK: 0 EVT: 0 XON: 11 XOFF: 13
Shake: 1 Replace: 0 XonLimit: 512 XoffLimit: 1
Purge: TXABORT RXABORT TXCLEAR RXCLEAR
InSize: 2048 OutSize: 2048
RI: 1 RM: 1 WM:0 WC: 0
Kaka nova ideja za rešitev? Hvala!
Opis: |
|
 Download |
Ime datoteke: |
RS232 komunikacija.zip |
Velikost datoteke: |
1.62 KB |
Downloadano: |
13 krat |
_________________ Upanje ni del naše projektne strategije.
Member of Trisat - 1. Slovenian satellite running new fault tolerant aerospace processor.
|
|
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: 494 dni
Powered by phpBB © 2001, 2005 phpBB Group
|