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

Pridružen-a: Ned 09 Jan 2005 22:35 Prispevkov: 261 Aktiv.: 1.10 Kraj: Celje
|
Objavljeno: Sre Sep 17, 2008 3:20 pm Naslov sporočila: USART->FT232-problem |
|
|
Lep pozdrav!
Imam problem pri prenosu podatkov iz ATmega8515 na PC. Namesto z max232 sem poizkusil narediti povezavo s FT232 čipom. Ko povežem računalnik in krmilnik, RX in TX parkrat utripneta, kar pomeni da je povezava med njima vzpostavljena. Ustrezne gonilnike sem tudi naložil, računalnik pa tudi prepozna navidezni COM port.
V programu sem poizkusil poslati nekaj podatkov, ter jih prejeti v terminalu Docklight, kjer sem tudi nastavil Baud rate 19200bps, 8podatkovnih bitov in en stop bit.
Problem pa je v tem, da za vsak prejeti podatek prejem 0 oz. če imam v terminalu odprto okno ASCII prejem NULL.
Je mogoče problem v tem, da pride čisto točno izračunani Baud rate v krmilnikovem programu 19230,7 bps, v terminalu pa sem nastavil 19200? Bolj točno nisem uspel nastaviti, ker uporabljam interni osc. 8Mhz...
Je mogoče problem v programu? Zdi se mi čudno, ker sem pred nekaj časa s temi že napisanimi funkcijami uspešno pošiljal podatke, le da z max232.
Koda: |
#include <avr\io.h>
#include <util\delay.h>
#define BAUDRATE 25 // 19230,7 pri 8MHz
void rsInit(unsigned char baud) {
UBRRL = baud; //baud rate 19230,7bps
UCSRC = (1<<UCSZ0) | (1<<UCSZ1); // 8N1
UCSRB = (1<<RXEN) | (1<<TXEN); // enable tx and rx
}
void rsSend(unsigned char data) {
while( !(UCSRA & (1<<UDRE)));
UDR = data;
}
unsigned char rsRecv() {
while( !(UCSRA & (1<<RXC)));
return UDR;
}
int main(void) {
rsInit(BAUDRATE);
while(1) //vsakih 500ms pošljemo črko a
{
rsSend('a');
_delay_ms(500);
}
return(0);
} |
Hvala za odgovor!
Opis: |
|
Velikost datoteke: |
146.3 KB |
Pogledana: |
34 krat |

|
|
|
Nazaj na vrh |
|
 |
Jan Član


Pridružen-a: Sob 10 Jun 2006 14:19 Prispevkov: 313 Aktiv.: 1.35 Kraj: Dolenjska
|
Objavljeno: Sre Sep 17, 2008 3:37 pm Naslov sporočila: |
|
|
Imaš možnost preizkusiti vezje na pravem serijskem portu (z max232)?
Drugače poskusi spremeniti baudrate.
lp
Jan
|
|
Nazaj na vrh |
|
 |
upornik Član

Pridružen-a: Ned 09 Jan 2005 22:35 Prispevkov: 261 Aktiv.: 1.10 Kraj: Celje
|
Objavljeno: Sre Sep 17, 2008 3:44 pm Naslov sporočila: |
|
|
Ne, te možnosti žal nimam. Drugače sem pa preizkusil na dveh računalnikih in ne glede na to, kakšen podatek pošljem, prejmem NULL. Bom še poizkusil znižati Baud rate...
|
|
Nazaj na vrh |
|
 |
Jan Član


Pridružen-a: Sob 10 Jun 2006 14:19 Prispevkov: 313 Aktiv.: 1.35 Kraj: Dolenjska
|
Objavljeno: Sre Sep 17, 2008 3:56 pm Naslov sporočila: |
|
|
Če imaš še vedno težave, poskusi inicializirati port s to funkcijo:
Koda: |
void USART_Init( unsigned int baud )
{
/* Set baud rate */
UBRRH = (unsigned char)(baud>>8);
UBRRL = (unsigned char)baud;
/* Enable receiver and transmitter */
UCSRB = (1<<RXEN)|(1<<TXEN);
/* Set frame format: 8data, 2stop bit */
UCSRC = (1<<URSEL)|(1<<USBS)|(3<<UCSZ0);
} |
lp
Jan
|
|
Nazaj na vrh |
|
 |
upornik Član

Pridružen-a: Ned 09 Jan 2005 22:35 Prispevkov: 261 Aktiv.: 1.10 Kraj: Celje
|
Objavljeno: Sre Sep 17, 2008 5:32 pm Naslov sporočila: |
|
|
Jan hvala. Očitno ni bila vredu inicializacija. Sedaj deluje super .
Bom še kar tukaj nekaj vprašal. Na kakšen način se še da dostopati do teh podatkov, ki se prenesejo na računalnik. Npr. da bi jih sedaj uporabil v kakšnem programčku, ki bi ga na računalniku napisal, npr. v C-ju. Mi lahko kdo malo razloži, če se je kdo ukvarjal s tem?
Ali pa npr. kako in s katerimi programi se da naprej obdelati podatke, tako kot v tem
projektu ?
|
|
Nazaj na vrh |
|
 |
aly Član



Pridružen-a: Tor 28 Sep 2004 14:51 Prispevkov: 9407 Aktiv.: 39.70 Kraj: Kranj - struževo
|
Objavljeno: Sre Sep 17, 2008 10:40 pm Naslov sporočila: |
|
|
upornik je napisal/a: |
Na kakšen način se še da dostopati do teh podatkov, ki se prenesejo na računalnik. Npr. da bi jih sedaj uporabil v kakšnem programčku, ki bi ga na računalniku napisal, npr. v C-ju. Mi lahko kdo malo razloži, če se je kdo ukvarjal s tem? |
Tako kot si zgoraj napisal.
Napišeš svoj program v C-ju, kjer odpreš COM port in bereš / pišeš podatke.
Kaj pa s temi podatki potem počneš, pa je povsem tvoja stvar.
Moj program, ki si ga dal za primer, je spisan v Delphiju (jezik pascal). Na forumu je že mnogo primerov, kako uporabljat COM port v Pascalu.
_________________ I'm going to stand outside, so if anyone asks, I'm outstanding  |
|
Nazaj na vrh |
|
 |
upornik Član

Pridružen-a: Ned 09 Jan 2005 22:35 Prispevkov: 261 Aktiv.: 1.10 Kraj: Celje
|
Objavljeno: Čet Sep 18, 2008 11:21 am Naslov sporočila: |
|
|
Citiram: |
Napišeš svoj program v C-ju, kjer odpreš COM port in bereš / pišeš podatke. |
Kako se pa dostopa do teh podatkov? Pridejo v kakšen register iz katerega jih potem lahko preberem? Ima mogoče kdo kakšen primer? Edino, kar mi pride na pamet je, da bi npr. iz terminala Docklight podatke zapisal v neko datoteko, potem bi pa napisal program, ki bi bral iz te datoteke. Samo to se verjetno dela drugače.
|
|
Nazaj na vrh |
|
 |
Jan Član


Pridružen-a: Sob 10 Jun 2006 14:19 Prispevkov: 313 Aktiv.: 1.35 Kraj: Dolenjska
|
Objavljeno: Čet Sep 18, 2008 12:10 pm Naslov sporočila: |
|
|
Poglej si npr. Visual C# Express (brezplačna inštalacija na Microsoftovi strani). Preberi si kakšen tutorial, da se naučiš osnov, in potem lahko poišeš primer programa, ki bere iz COM porta.
lp
Jan
|
|
Nazaj na vrh |
|
 |
aly Član



Pridružen-a: Tor 28 Sep 2004 14:51 Prispevkov: 9407 Aktiv.: 39.70 Kraj: Kranj - struževo
|
Objavljeno: Tor Sep 30, 2008 9:01 am Naslov sporočila: |
|
|
upornik je napisal/a: |
Ima mogoče kdo kakšen primer? |
aly je napisal/a: |
Na forumu je že mnogo primerov, kako uporabljat COM port v Pascalu. |
Kaj pomagajo odgovori, če jih ne bereš...
_________________ I'm going to stand outside, so if anyone asks, I'm outstanding  |
|
Nazaj na vrh |
|
 |
snow Član


Pridružen-a: Tor 27 Dec 2005 14:02 Prispevkov: 341 Aktiv.: 1.44 Kraj: Ljubljana || Velenje
|
Objavljeno: Tor Sep 30, 2008 4:20 pm Naslov sporočila: |
|
|
Zakaj pa ne uporabljate d2xx gonilnikov?
|
|
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
|