avr usart problem ? albo niewiedza,

witam ponownie, mam taki drobny problem a atmega8 niby wszystko mam dobrze poustawiane , predkosci, bity, oscylatory zewn. i wewnetrzne a i nie dziala. wysylam z procka liczne 0x31 a w PC otrzymuje 7 liczb 0x00 sprawdzalem z zewn. i wewn. oscylatorem, sprawdzalem na tranzystorowym konwerterze napiec i na max`ie , wszedzie to samo , juz nie mam wiecej pomysłow , funkcje przepisane z podrecznika atmegi , ktos moze ma jakis pomysl ? pewnie to jakas glupota albo nie wiem.z gory dziękuje.

moj prosty program :

#define AVR_ATmega8 #include <avr/io.h>

#include <avr/interrupt.h>

#define FOSC 8000000 #define BAUD 9600 #define MYUBRR FOSC/16/BAUD-1

void USART_Init(unsigned int ubrr) { UBRRH = (unsigned char)(ubrr>>8); UBRRL = (unsigned char) ubrr; UCSRB = (1<<RXEN)|(1<<TXEN); UCSRC = (1<<UMSEL)|(1<<USBS)|(1<<UPM1)|(1<<UCSZ1); };

void USART_Transmit( unsigned char data ) { while ( !( UCSRA & (1<<UDRE)) ) ; UDR = data; };

unsigned char USART_Receive( void ) { while ( !(UCSRA & (1<<RXC)) ); return UDR; };

int main ( void ) { cli(); USART_Init (MYUBRR); sei();

USART_Transmit(0x31); while (1) { USART_Transmit(USART_Receive()); }; };

Reply to
pit202
Loading thread data ...

Pawel napisał(a):

nie, ale juz zmieniałem wszystko na czuja :(

moze mam bity jakies zle ustawione ??

formatting link

Reply to
pit202

Pawel snipped-for-privacy@poczta.onet.pl> napisał(a):

"Na czuja" jest 256 możliwości , czy sprawdziłeś wszystkie ;) Spróbuj UCSRC = (1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0); czyli ustawienia domyślne , po power reset.

Piotrek

Reply to
Piotrek Sz.

Piotrek Sz. napisał(a):

ciagle same zera, moze mam cos zle na schemacie ? a moze jest jakies logiczne wytlumaczenie ze ciagle dostaje zera ? wysylam 1 bajt a dostaje czasami 3 czasem

4 bajty w PC ;-/
Reply to
pit202

pit202 napisał(a):

schemat, na wszelki wypadek bo juz naprawde nie wiem o co tu biega , do tej pory z AT90 nie mialem klopotu a tu nagle jakis usart i jaja.

formatting link

Reply to
pit202

dziadek Ben napisał(a):

sprawdzilem to w praktyce , wysylam z uC 2 bajty i o dziwo przy wiekszych predkosciach 9600-115200 zawsze dostaje 9 bajtów w PC ;-/

natomiast zaczyna to chodzic ale nie do konca jak ustawie predkosci rzedu 110-300 bps - cos mam pewnie nadal zle ustawione w procku , co jeszcze trzeba ustawic ? moze procek zepsuty ?

formatting link

Reply to
pit202

Dnia Tue, 24 Oct 2006 18:08:47 +0200, pit202 napisał(a):

Bu. Tranzystory zamiast maxa ;)

Oscyloskopem sprawdzałeś, co wychodzi z procka i za układem?

A jeśli nie masz oscyloskopu, zapodaj w kółko nadawanie 0xaa i zmierz miernikiem.

Pozdrawiam Marcin Stanisz

Reply to
Marcin Stanisz

Marcin Stanisz napisał(a):

hehe, max to kobyla a do tego cala gromadka kondzioli , wole takie, dziala mi na ukladzie 1200 , co ciekawsze teraz znowu zablokowalem sobie procka a ciekawsze jest to, ze znowu nie wiem jak , nie reaguje na polecenia ISP , program dziala , ooo juz nie dziala nic , to juz

2gi procek ? co robie zle ? wgralem nowy flash ponaciskalem pare razy reset , kurde co z tymi megami ?
Reply to
pit202

Dnia Tue, 24 Oct 2006 19:55:22 +0200, pit202 napisał(a):

Nie wiem, chłopie, nigdy mi się to nie zdarzyło :(

Pozdrawiam Marcin Stanisz

Reply to
Marcin Stanisz

Moze nie do konca umiesz uzywac swojego kompilatora C. Napisz kilka linijek w ASM i zobacz czy pojdzie

Reply to
invalid unparseable

Marcin Stanisz napisał(a):

najdziwniejsze jest dla mnie to, ze po przelutowaniu procka zaczelo dzialac :( i na 1Mhz i na 8Mhz ;-/ dziękuję wszystkim za chęci i pomoc.

Reply to
pit202

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.