Problem z RS w AVR ATmega16

Tutaj mozesz poruszać tematy ogólne powiązane z elektroniką, np. dyskusje na temat podzespołów, układów, zasad ich działania. Czyli można pisać o wszystkim czego nie da się przyporządkować do innych działów.
ODPOWIEDZ
Majey
-
Posty: 2
Rejestracja: 01 cze 2006, 16:08
Lokalizacja: Gdańsk
Kontakt:

Problem z RS w AVR ATmega16

Post autor: Majey » 01 cze 2006, 16:14

Czesc, mam procka ATmega16, dolaczylem transciever rs 232 max220, ale nie mam komunikacji z kompem. Jak krzyzuje za maxem TXD RXD to jest przejscie danych natomiast sygnal nie dochodzi do kompa. Kabel napewno jest dobry port tez. Co moze byc przyczyna kabel w rs moze byc 15 m ja mam 2 wiec prosze o pomoc bo juz mam brak pomyslow. Moze mase mam podlaczyc nie od zasilania? Aha mam jeden kondensatro ceramiczny zamista elektrolitu, ale to chyba nie robi roznicy skoro procek sam siebie widzi.

Awatar użytkownika
gaweł
Użytkownik
Posty: 651
Rejestracja: 05 kwie 2004, 8:38
Lokalizacja: Białystok
Kontakt:

Post autor: gaweł » 02 cze 2006, 22:36

:arrow: Majey, czy wiesz na ile sposobów można mieć coś zepsute? A my mamy ci powiedzieć, który to przypadek? :mrgreen:
Może baś tak jakiś rysuneczek, czy coś ... innego, bo ... wóżki to ... są ... w innym miejscu.

PS
Długość kable oczywiście ma znaczenie, ale dla 9600 poniżej 0,5 km to nie ma czym się przejmować. Wiem, wiem, zaraz usłyszę, że dla 9600 to 15 m, bo norma... a praktyka ... swoją drogą.

Majey
-
Posty: 2
Rejestracja: 01 cze 2006, 16:08
Lokalizacja: Gdańsk
Kontakt:

Post autor: Majey » 03 cze 2006, 8:24

to moj program

#include <avr\io.h>

// inicjalizacja rs 232

#define FOSC 11059200 //clock speed
#define BAUD 9600
#define MYUBRR FOSC/16/BAUD-1

void init_rs(unsigned int ubrr)
{
UBRRH = (unsigned char)(ubrr>>8);
UBRRL = (unsigned char)ubrr;
//UCSRB = (1<<RXEN) | (1<<TXEN);
//UCSRC = (1<<USBS) | (3<<UCSZ0);
//UCSRC |=0xC0;
//UCSRA &= 0x0FD;
UCSRB |=0x18;
UCSRB &=0xfB;
UCSRC =0x8E ;
}
void wyslij(int dane)
{
while ( !(UCSRA & (1<<UDRE) ) );
UDR=dane;
}

int odbierz(void)
{
while ( !(UCSRA & (1<<RXC) ) );
return UDR;
}

main()
{
int a;
init_rs(71);
DDRD=0xff; // ustawienie pordu D jako wyjscie

PORTD=0xff;

while(1)
{

//for(a=0;a<10000;a++);
//PORTD=0x00;
//if (PORTD==0)
//for(a=0;a<10000;a++);
// PORTD=0xff;


//a=odbierz();
// wyslij(23);
//for(a=0;a<10000;a++);
//PORTD=0xff;

if (a==68) PORTD=0x00;

}
}


moze max jest walniety bo na wyjsciu jak nic nie wysyla na txd jest tylko 5,5v a jak wysyla to tez okolo tyle

Awatar użytkownika
marcing
Użytkownik
Posty: 868
Rejestracja: 14 lut 2006, 14:13
Lokalizacja: z pociągu...
Kontakt:

Post autor: marcing » 03 cze 2006, 15:58

Witam!
Majey pisze:moze max jest walniety bo na wyjsciu jak nic nie wysyla na txd jest tylko 5,5v a jak wysyla to tez okolo tyle
Z tego wynika, że masz źle podpiętego tego MAX'a - 5,5V to jest, ale na wyjściu odbiornika do uP... A nie od strony komputera...

Narysuj schemat, jak masz to podpięte, rozwiejesz wątpliwości...

Pozdrawiam!

Marcin "Max" G.

Awatar użytkownika
gaweł
Użytkownik
Posty: 651
Rejestracja: 05 kwie 2004, 8:38
Lokalizacja: Białystok
Kontakt:

Post autor: gaweł » 03 cze 2006, 23:52

Majey pisze: moze max jest walniety bo na wyjsciu jak nic nie wysyla na txd jest tylko 5,5v a jak wysyla to tez okolo tyle
Oj, Majey, przecież wcześniej sam pisałeś, że program działa na zapętleniu, to dlaczego pokazujesz program? Pokaż schemat, połączenie do kompa, określ jak jest zrobiony kabelek, tj. jaki pin gdzie idzie ... itp.

ODPOWIEDZ