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


Pridružen-a: Ned 09 Jul 2006 12:13 Prispevkov: 1250 Aktiv.: 5.42 Kraj: Savinjska dolina-okolica Gornjega Grada
|
Objavljeno: Ned Mar 30, 2008 8:13 pm Naslov sporočila: Branje ASCII znakov v ATmega32 preko rs232 komunikacije |
|
|
Pozdrav!
Zanima me sledeče:
- Imam testni program, ki je napisan tako, da prebere ASCII znak in prebranega pošlje nazaj. Vendar imam tu en problem; ukaz INPUT mi ne prebere nobenega znaka. Čaka v nedogled, medtem ko ukaz PRINT deluje normalno.
Se pravi, da če preko Bascom terminala pošiljam ASCII znake, mi program v atmelu ne prebere nobenega znaka.
Poizkusil sem veliko kombinacij, vendar mi v nobenem primeru stvar ne deluje. Mogoče kdo ve, v čem je težava?
Pripenjam še kodo (eden od primerov):
Koda: |
$regfile = "m32def.dat"
$crystal = 8000000
$baud = 9600
' za RS232
Dim Na As String * 10
Waitms 10
Print "Start"
Do
Input Na
Waitms 2
Print Na
Waitms 2
Loop
End
|
Programiram v Bascomu in sicer z STK200/300 in z AVR ISP (STK500) programatorjema.
_________________ Lp
Tomaž, S57KO |
|
Nazaj na vrh |
|
 |
mucek Član


 
Pridružen-a: Tor 01 Avg 2006 10:47 Prispevkov: 5529 Aktiv.: 24.06 Kraj: Domzale
|
Objavljeno: Ned Mar 30, 2008 8:46 pm Naslov sporočila: |
|
|
Če uporabljaš ukaz Input, moraš po vpisu v HT pritisniti Enter!
Sicer uporabljaj ukaz inkey (poglej še waitkey).
LP, Grega
|
|
Nazaj na vrh |
|
 |
trobida Član


Pridružen-a: Ned 09 Jul 2006 12:13 Prispevkov: 1250 Aktiv.: 5.42 Kraj: Savinjska dolina-okolica Gornjega Grada
|
Objavljeno: Pon Mar 31, 2008 6:40 pm Naslov sporočila: |
|
|
mucek je napisal/a: |
Če uporabljaš ukaz Input, moraš po vpisu v HT pritisniti Enter!
Sicer uporabljaj ukaz inkey (poglej še waitkey).
LP, Grega |
Sem poizkusil uporabit tudi ta dva ukaza, vendar je problem isti, še vedno nekaj ni ok.
Sem takšno rešitev uporabljal že na 89c20xx primerkih, vendar je zadeva vedno delovala. Sedaj sem prešel na AVR-je pa mi stvar ne deluje. Pri samem HT-ju mi sicer izpiše start, vendar ne morem vnesti nobenega znaka (že to mi je malo nenavadno). Poskusil sem tudi z programom Docklight, kjer lahko točno definiraš vsak znak posebej, vendar tudi to ni delovalo. Same Fuse sem nastavil tako, kot predlagajo v Bascom helpu.
Predvidevam, da je neka banalna malenkost, samo mi enostavno ni jasno kaj bi to lahko bilo.
PS: Preveril sem tudi z osciloskom, če deluje komunikacija PC - Atmel, vendar je vse ok.
_________________ Lp
Tomaž, S57KO |
|
Nazaj na vrh |
|
 |
clownfish Član

Pridružen-a: Pet 05 Avg 2005 13:05 Prispevkov: 765 Aktiv.: 3.23 Kraj: Povir / Ljubljana
|
Objavljeno: Pon Mar 31, 2008 11:38 pm Naslov sporočila: |
|
|
Najprej poizkusi iz atmela oddaljati in na Pc strani sprejemati..
Če to deluje poizkusi še obrnjeno..
Kateri program na PC-ju uporabljaš?
nastavitve portov?
kakšen quartz imaš na kontrolerju?
|
|
Nazaj na vrh |
|
 |
trobida Član


Pridružen-a: Ned 09 Jul 2006 12:13 Prispevkov: 1250 Aktiv.: 5.42 Kraj: Savinjska dolina-okolica Gornjega Grada
|
Objavljeno: Tor Apr 01, 2008 8:11 pm Naslov sporočila: |
|
|
teslo je napisal/a: |
Najprej poizkusi iz atmela oddaljati in na Pc strani sprejemati..
Če to deluje poizkusi še obrnjeno..
Kateri program na PC-ju uporabljaš?
nastavitve portov?
kakšen quartz imaš na kontrolerju? |
Ja to sem tudi testiral. Pošiljanje iz Atmela na PC deluje brezhibno. Sem poskušal tudi na različnih baudrate-ih in ni bilo nikjer problema.
Težava pa se je pojavila pri obratni komunikaciji od PC-ja na Atmel. Tukaj mi ni šla komunikacija nikjer skozi.
Na PC-ju uporabljam: Docklight, HT, poskusil sem tudi z Basom-ovim terminalom, ampak povsod ista zgodba.
Spodnja slika prikazuje nastavitve na terminalu.
Ouartz pa uporabljam negovega internega in sicer:
- Int. RC Osc. 8 MHz; Start-up time:........
V bistvu uporabljam istega, kot ga predlagajov Bsacom helpu. Sem probal tudi z drugimi frekvencami, pa je isto.
Opis: |
|
Velikost datoteke: |
29.34 KB |
Pogledana: |
3 krat |

|
_________________ Lp
Tomaž, S57KO |
|
Nazaj na vrh |
|
 |
eddie Član

Pridružen-a: Sre 10 Dec 2003 21:02 Prispevkov: 723 Aktiv.: 3.05 Kraj: Severna primorska
|
Objavljeno: Sre Apr 02, 2008 8:51 am Naslov sporočila: |
|
|
Hardware je ok?
|
|
Nazaj na vrh |
|
 |
clownfish Član

Pridružen-a: Pet 05 Avg 2005 13:05 Prispevkov: 765 Aktiv.: 3.23 Kraj: Povir / Ljubljana
|
Objavljeno: Sre Apr 02, 2008 10:27 am Naslov sporočila: |
|
|
trobida je napisal/a: |
Ouartz pa uporabljam negovega internega in sicer:
|
Daj gor quartz in velika verjetnost je, da ti bo stvar začela delovati.
Sam sem imel podobne težave.. Komunikacija je sicer delovala ampak zelo klavrno.
Po dodajanju quartza je stvar začela delovati kot urica.. in to brez spremembe kode..
|
|
Nazaj na vrh |
|
 |
trobida Član


Pridružen-a: Ned 09 Jul 2006 12:13 Prispevkov: 1250 Aktiv.: 5.42 Kraj: Savinjska dolina-okolica Gornjega Grada
|
Objavljeno: Čet Apr 03, 2008 6:39 am Naslov sporočila: |
|
|
Hvala za nasvet, sicer tega še nisem preveril, še bom .
Prej pa me zanima ena zadeva. Imam testno ploščo, kjer imam zunanji quartz 8MHz. Zanima me, kateri Fuse bit moram nastavit, da vklopim zunanji quartz. Sem namreč pred časom poizkusill na AT Mega8 in sicer sem nastavil Fuse bit
na zunanji 8 MHz quartz (sliko pripnem popoldne). Posledica, pa je bila, da nisem mogel več programirati tega čipa (če kdo ve kako resetirati to nastavitev, bi mu bil zelo hvaležen).
Zato me sedaj zanima, kateri Fuse moram nastaviti, da vklopim zunanji oscilator oz. quartz, da se mi ne bo ponovila zgornja zgodba. Ko mi bo to uspelo, pa bom poizkusil še komunikacijo.
PS: Komunikacijo sem preveril z osciloskopom, in deluje. Do pina na mojem Atmelu pride signal, tako da hardware ni problem, poleg tega pa sem probal na različnih atmelih, tudi na AT Mega 32 in ravno tako ne deluje.
Slika nastavitve fuse bitov sledi.
_________________ Lp
Tomaž, S57KO |
|
Nazaj na vrh |
|
 |
clownfish Član

Pridružen-a: Pet 05 Avg 2005 13:05 Prispevkov: 765 Aktiv.: 3.23 Kraj: Povir / Ljubljana
|
Objavljeno: Čet Apr 03, 2008 9:18 am Naslov sporočila: |
|
|
trobida je napisal/a: |
PS: Komunikacijo sem preveril z osciloskopom, in deluje. Do pina na mojem Atmelu pride signal, tako da hardware ni problem, poleg tega pa sem probal na različnih atmelih, tudi na AT Mega 32 in ravno tako ne deluje.
|
Predvidevam da tudi na AtMega32 nisi imel zunanjega quartza..
|
|
Nazaj na vrh |
|
 |
mucek Član


 
Pridružen-a: Tor 01 Avg 2006 10:47 Prispevkov: 5529 Aktiv.: 24.06 Kraj: Domzale
|
Objavljeno: Čet Apr 03, 2008 10:17 am Naslov sporočila: |
|
|
Komunikacija na 2400 mora (!) delati z internim oscilatorjem. Prej bi rekel, da nekje (na računalniku ali v Bascomu) ni pravilno nastavljena hitrost komunikacije.
Si v Bascomu nastavil Options-Compiler-Communication pravilno, glede na hitrost, ki jo uporabljaš in hitrost oscilatorja?
LP, Grega
|
|
Nazaj na vrh |
|
 |
Sokrat Član


Pridružen-a: Čet 25 Avg 2005 11:00 Prispevkov: 5584 Aktiv.: 23.57
|
Objavljeno: Čet Apr 03, 2008 12:26 pm Naslov sporočila: |
|
|
mucek je napisal/a: |
Komunikacija na 2400 mora (!) delati z internim oscilatorjem. |
A lahko to trditev utemeljis ?
Asinhron prenos je "odporen" na razlike v hitrosti, ki ne presegajo dolzine intervala med vzorcenjem dveh zaporednih bitov. V praksi je to (odvisno od izvedbe UARTa) od nekaj % v praksi pa do 10% v teoriji (1 start + 8 data + 1 stop bit). Napaka, ki jo povzroci oscilator, ki generira clock UARTa, ki deluje z drugacno frekvenco kot oscilator na drugi strani, je izrazena v procentihvedno enaka ne glede na izbrano hitrost; 10% razlike je 10% tako pri 2400 bps kot pri 115200 bps.
_________________ Ka ti bo pa torba ce si kupu kolo ? |
|
Nazaj na vrh |
|
 |
trobida Član


Pridružen-a: Ned 09 Jul 2006 12:13 Prispevkov: 1250 Aktiv.: 5.42 Kraj: Savinjska dolina-okolica Gornjega Grada
|
Objavljeno: Čet Apr 03, 2008 2:24 pm Naslov sporočila: |
|
|
Še prej omenjena slika...
Opis: |
|
Velikost datoteke: |
67.42 KB |
Pogledana: |
1 krat |

|
_________________ Lp
Tomaž, S57KO |
|
Nazaj na vrh |
|
 |
smatjaz Član


Pridružen-a: Pon 10 Nov 2003 16:33 Prispevkov: 846 Aktiv.: 3.57
|
Objavljeno: Čet Apr 03, 2008 3:01 pm Naslov sporočila: |
|
|
Če imaš interni oscilator moraš nastaviti še pravo vrednost OSCCAL.
Zadeva preverjeno deluje. Uporabljam interni oscilator 1MHz (8MHz) in Baudrate 9600.
Lp M.
_________________ Električni aparati delujejo na dim ... ko dim iz njih uide ... ne delujejo več! |
|
Nazaj na vrh |
|
 |
MrPizza Član


Pridružen-a: Sob 06 Dec 2003 11:17 Prispevkov: 57 Aktiv.: 0.24 Kraj: Okolica MB
|
Objavljeno: Čet Apr 03, 2008 9:01 pm Naslov sporočila: |
|
|
Ker gre za napako pri pošiljanju iz PC proti AVR bi lahko bi bil zanič driver. Ali pa ni način (protokol) pošiljanja pravilen.
V DockLightu mislim, da moraš kot konec prenosa dodat LF (new line, bližnjica v DL je Shift+Ctrl+Enter) ali CR (carriage return,bližnjica v DL je Ctrl+Enter ) morda celo oba. V ASCII tabeli sta to znaka 10 in 13.
Mislim, da je pravilno zaporedje eno od teh:
<znak-i_za_izpis><LF>
<znak-i_za_izpis><CR>
<znak-i_za_izpis><LF><CR>
_________________ Lep pozdrav,
Boštjan |
|
Nazaj na vrh |
|
 |
trobida Član


Pridružen-a: Ned 09 Jul 2006 12:13 Prispevkov: 1250 Aktiv.: 5.42 Kraj: Savinjska dolina-okolica Gornjega Grada
|
Objavljeno: Sob Apr 26, 2008 6:15 pm Naslov sporočila: |
|
|
Malenkost časa je že minilo, od kar ta tema obstaja. Naj povem le, da stvar sedaj deluje. Vzrok za nedelovanje je bila moja testna plošča, na kateri bom moral vso situacijo še temeljito preštudirati . Ko sem čip vstavil v v vezje, v katerem bo vsa stvar potekala je začelo delovati iz prve.
Da, včasih se napaka naredi tam, kjer to najmanj pričakuješ .
Še enkrat hvala za vašo pomoč !
_________________ Lp
Tomaž, S57KO |
|
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
|