Svetelektro.com

Svetelektro.com

Meno:
Heslo:
SVETELEKTRO • Atmega8 UART nefunkcny prenos pri vyssej frekvencii

Atmega8 UART nefunkcny prenos pri vyssej frekvencii

V┼íetko ─Źo sa t├Żka mikropo─Ź├şta─Źov + Sekcia Arduino

Moderátori: psichac, Moderátori

Atmega8 UART nefunkcny prenos pri vyssej frekvencii

Odosla┼ąod YellowJacket » 05 Sep 2020, 09:39

Caute,
snazim sa rozchodit komunikaciu atmegy8 s GSM modulom, kde komunikacia bezi iba na frekvencii 115200. Frekvenciu atmegy som nastavil v poistkach na internych 8MHz ( lfuse = 0xE4 ; hfuse = 0xD1 ). UBBR mi vyssiel podla datasheetu strana 155 na hodnotu 3. Pre istotu som hodnotu ale nechal vypocitat v programe kodom:
K├│d: Vybra┼ą v┼íetko
ubrr = F_CPU / 16 / baudrate - 1;


V programe skusam iba zasielat znak v sekundovom intervale ale v pc terminale chodi nieco uplne ine, ako ma. Podotykam, ze ak znizim baud rate na 9600 v terminali aj v programe, tak komunikacia funguje, chybu v zapojeni, zle nastavenej frekvencii a zlom procesore preto vylucme. Co moze byt podla vas problem? Je to prilis vysoka prenosova rychlost pri pouziti interneho oscilatora 8MHz? Cital som nieco o nastavovani registra OSCCAL, ak sa pouziva interny oscilator, avsak kedze komunikacia na nizsej rychlosti funguje, neriesil som to ( nikdy som ho nenastavoval, takze neviem, ci to je nutne ). Zdrojak:

K├│d: Vybra┼ą v┼íetko
void uartInit( unsigned int baudrate )
{

    unsigned int ubrr;
    ubrr = F_CPU / 16 / baudrate - 1;  /* F_CPU mam v Makefile nastavene na 8000000UL */

    UBRRH = (unsigned char) ( ubrr >> 8 );
    UBRRL = (unsigned char) ubrr;

    UCSRB = ( 1 << RXEN ) | ( 1 << TXEN );
    UCSRC = ( 1 << URSEL ) | ( 1 << UCSZ0 ) | ( 1 << UCSZ1) ;

}

void uartTransmit( unsigned char data )
{
    while ( ( UCSRA & ( 1 << UDRE ) ) == 0x00 )
        ;

    UDR = data;
}

void delay( char sec )
{
    int i, j;

    for ( i = 0; i < sec; i++ )
        for ( j = 0; j < 10; j++ )
            _delay_ms( 100 );
}

int main( void )
{
    uartInit( 115200 );
    while( 1 )
    {
        uartTransmit( 'A' );
        delay( 1 );
    }
    return 0;
}
YellowJacket
Obr├ízok pou┼ż├şvate─ża
St├íly ─Źlen
St├íly ─Źlen
Pr├şspevky: 268
Vek: 30.22
Zalo┼żen├Ż: 05.02.2012
Bydlisko: Hrinova
Paragraf: 21
Karma: 3

Re: Atmega8 UART nefunkcny prenos pri vyssej frekvencii

Odosla┼ąod Tribec Zacks » 05 Sep 2020, 11:04

pri 8MHz a 115200 baudrate ti vychadza odchylka v rychlosti komunikacie 8.5% pri uart sampling divideri U2Xn=0 a 3.5% pri U2Xn=1, to je zjavne vela. Nemalo by to byt vyse 2%, nove microchipacke datasheety dokonca uvadzaju 0.5%. pozri tabulky v datasheete.
Kreativita a motivacia je to, co prinasa originalne napady a myslienky, disciplina je to, co ich dokaze zrealizovat.
Tribec Zacks
Obr├ízok pou┼ż├şvate─ża
Pokro─Źil├Ż ─Źlen
Pokro─Źil├Ż ─Źlen
Pr├şspevky: 656
Vek: 38.09
Zalo┼żen├Ż: 26.06.2010
Bydlisko: Levice / Cork IRL
Karma: 23

Re: Atmega8 UART nefunkcny prenos pri vyssej frekvencii

Odosla┼ąod YellowJacket » 05 Sep 2020, 11:48

Ano, tu tabulku som pozeral, ale netusim, co je to U2Xn. S komunikaciou casto nepracujem a ak aj ano, vacsinou na ovela nizsich prenosovych rychlostiach. 8.5% chyba je dost, to ano, ale aby ani raz neprisiel spravny bajt?
Chcel som sa vyhnut pouzitiu krystalu, aby to bolo co najjednoduchsie, ale bez neho sa asi nemozem spolahnut na bezchybnu komunikaciu, vsak? Najlepsie vysledky s 0% error vychadzaju pri tych menej standardnych frekvenciach, napr 14.7456 MHz. Znamena to, ze pouzitie tohto krystalu jez hladiska prenosu kvalitnejsie, ako pri pouziti 20 MHz krystalu?
Este ak ta mozem poprosit, bit U2X v registri UCSRA vlastne rozhoduje o zdvojnasobeni prenosovej rychlosti, ale iba pri pouziti asynchronnej komunikacie, musim okrem toho este nieco nastavit/zmenit? Dakujem za nasmerovanie.
YellowJacket
Obr├ízok pou┼ż├şvate─ża
St├íly ─Źlen
St├íly ─Źlen
Pr├şspevky: 268
Vek: 30.22
Zalo┼żen├Ż: 05.02.2012
Bydlisko: Hrinova
Paragraf: 21
Karma: 3

Re: Atmega8 UART nefunkcny prenos pri vyssej frekvencii

Odosla┼ąod peterple » 05 Sep 2020, 12:05

Tribec Zacks m├í pravdu, chyba je moc ve─żk├í. Ke─Ć si uvedom├ş┼í ┼że pren├í┼ía┼í 10bitov v r├ímci a UARTy vzorkuj├║ okolo stredu bitu tak to nem├┤┼że trafi┼ą ani n├íhodou. Rie┼íen├şm je kry┼ít├íl. Ja pou┼ż├şvam iba tie "divn├ę" frekvencie teda 14,... 7,... 3,6....
Druh├í cesta je nastavi┼ą na protistrane rovnak├║ baud rate ako vysiela ten AVR. Ak je to usb to serial prevodn├şk a PC tak to zoberie skoro ak├║ko─żvek baudov├║ r├Żchlos┼ą. Be┼żne tak logujem z arduina (16MHz) r├Żchlos┼ąou 2Mbit/s
Uk├í┼ż m├║dremu chybu a on sa ti po─Ćakuje. Uk├í┼ż chybu hlup├íkovi a on sa uraz├ş.
peterple
Ultimate ─Źlen
Ultimate ─Źlen
Pr├şspevky: 2063
Vek: 53.83
Zalo┼żen├Ż: 25.06.2013
Bydlisko: Krajn├ę
Karma: 56

Re: Atmega8 UART nefunkcny prenos pri vyssej frekvencii

Odosla┼ąod Tribec Zacks » 05 Sep 2020, 13:56

YellowJacket nap├şsal:Najlepsie vysledky s 0% error vychadzaju pri tych menej standardnych frekvenciach, napr 14.7456 MHz. Znamena to, ze pouzitie tohto krystalu jez hladiska prenosu kvalitnejsie, ako pri pouziti 20 MHz krystalu?


Ano.

YellowJacket nap├şsal:Este ak ta mozem poprosit, bit U2X v registri UCSRA vlastne rozhoduje o zdvojnasobeni prenosovej rychlosti, ale iba pri pouziti asynchronnej komunikacie, musim okrem toho este nieco nastavit/zmenit? Dakujem za nasmerovanie.


Nejde o zdvojnasobenie prenosovej rychlost, ide o 8 vs 16 (typicky pre uarty) samplov na bit.
Uart je asynchronny a preto ma start bit, receiver v tom momente zacne vzorkobvat Rx signal a podla vnutorneho pocitadla len vyhodnoti kedy zobrat vzorku pre ten ktory bit. ked aj mas nejaku odchyklu v Tx a Rx zariadeniach, tak podla sirky pulzov na uarte si mozes dovolit nejaku odchylku, ale ta chyba sa ti akumuluje od start bitu az po stop bit (a to neratame sum, kvalita Tx/Rx, napajanie atd)

pri 20Mhz to vypada na 1.7% co je podla este starych atmelacky DS ok, ale s GSM modulom budes vymienat cele packety, tak tam radsej daj krystal taky aky ma byt. hlavne nemaj predstavu ze 20mhz krystal je nejaky standardny a 14.x uz je nestandardny :-) pre teba je to neokruhle cislo, pre tu elektroniku vo vnutri az velmi okruhle na delenie casovani tak ako potrebujes.
Kreativita a motivacia je to, co prinasa originalne napady a myslienky, disciplina je to, co ich dokaze zrealizovat.
Tribec Zacks
Obr├ízok pou┼ż├şvate─ża
Pokro─Źil├Ż ─Źlen
Pokro─Źil├Ż ─Źlen
Pr├şspevky: 656
Vek: 38.09
Zalo┼żen├Ż: 26.06.2010
Bydlisko: Levice / Cork IRL
Karma: 23

Re: Atmega8 UART nefunkcny prenos pri vyssej frekvencii

Odosla┼ąod Mek » 05 Sep 2020, 14:52

Ked som sa davnejsie tiez bavil s UART komunikaciou, tak na interny oscilator mi to neslo, a s krystalom tej istej frekvencie uz ano. Tipujem, ze tomu internemu oscilatoru lieta frekvencia kade-tade, preto to robilo problemy. Dalej som to nestudoval, pokracoval som s krystalom a bolo.
... byvaly spravca Hospudky u amplionu, Martinekk-ov brat :)
Hras Scrabble? Skus SKREBL.EU - moj novy projekt.
Disclaimer: Nemam vystudovane elektro, je to len moje hobby. Povolanim som SW inzinier.
"Failing to plan is planning to fail." (Alan Lakein)
Mek
Obr├ízok pou┼ż├şvate─ża
Pokro─Źil├Ż ─Źlen
Pokro─Źil├Ż ─Źlen
Pr├şspevky: 775
Vek: 33.57
Zalo┼żen├Ż: 15.10.2015
Bydlisko: ZA, TN
Karma: 14

Re: Atmega8 UART nefunkcny prenos pri vyssej frekvencii

Odosla┼ąod YellowJacket » 05 Sep 2020, 16:35

peterple nap├şsal:Druh├í cesta je nastavi┼ą na protistrane rovnak├║ baud rate ako vysiela ten AVR. Ak je to usb to serial prevodn├şk a PC tak to zoberie skoro ak├║ko─żvek baudov├║ r├Żchlos┼ą.

Teraz to len testujem na PC, nech mam istotu spravnej komunikacie, ale potom to bude atmega8 vs GSM modul, ten ma fixne nastavenu prenosovu rychlost.

Tribec Zacks nap├şsal:hlavne nemaj predstavu ze 20mhz krystal je nejaky standardny a 14.x uz je nestandardny

Ano, napisal som to neprofesionalne a hlavne som ratal, ze cim viac frekvencie, tym lepsie. Zjavne to tak nie je :)

@Mek: taktiez idem radsej na istotu, vyskusam krystal 14.7456 MHz a uvidi sa. Ono to mozno nie je tym internym oscilatorom, ale tou chybou, ktora je uvadzana v datsheete pri konkretnych frekvenciach, no a nizsiu frekvenciu ako 8MHz som uz pouzit nemohol pri prenosovej rychlosti 115200.

Dakujem vam vsetkym za rady a hlavne za vysvetlenie.
YellowJacket
Obr├ízok pou┼ż├şvate─ża
St├íly ─Źlen
St├íly ─Źlen
Pr├şspevky: 268
Vek: 30.22
Zalo┼żen├Ż: 05.02.2012
Bydlisko: Hrinova
Paragraf: 21
Karma: 3

Re: Atmega8 UART nefunkcny prenos pri vyssej frekvencii

Odosla┼ąod Sahasrar » 05 Sep 2020, 21:14

Skusal si si iba loopback? Mysl├şm t├Żm spojenie Rx/Tx na strane Atmegy a vypis hodnoty na niakom LCD... Mne osobne sa stavalo, ┼że vedenie od procesoru po PC malo isty odpor, pripadne ru┼íenie a taktie┼ż mi to pri vy┼í┼íej frekvencii blblo
Sahasrar
St├íly ─Źlen
St├íly ─Źlen
Pr├şspevky: 210
Zalo┼żen├Ż: 16.05.2015
Bydlisko: TN
Karma: 0

Re: Atmega8 UART nefunkcny prenos pri vyssej frekvencii

Odosla┼ąod YellowJacket » 06 Sep 2020, 06:36

Neskusal som. Ale pouzivam kabel k pc, prevodnik usb na ttl, a ked ho iba prepojim miesto atmegy na gsm modul, tak to funguje. Kupim krystal a dam vediet, ci tam bol problem.
YellowJacket
Obr├ízok pou┼ż├şvate─ża
St├íly ─Źlen
St├íly ─Źlen
Pr├şspevky: 268
Vek: 30.22
Zalo┼żen├Ż: 05.02.2012
Bydlisko: Hrinova
Paragraf: 21
Karma: 3

Re: Atmega8 UART nefunkcny prenos pri vyssej frekvencii

Odosla┼ąod YellowJacket » 16 Sep 2020, 17:12

Aktualizacia:
Skusil som krystal, 11.0592 MHz, prenos uz funguje korektne. Dakujem za rady.
YellowJacket
Obr├ízok pou┼ż├şvate─ża
St├íly ─Źlen
St├íly ─Źlen
Pr├şspevky: 268
Vek: 30.22
Zalo┼żen├Ż: 05.02.2012
Bydlisko: Hrinova
Paragraf: 21
Karma: 3

Re: Atmega8 UART nefunkcny prenos pri vyssej frekvencii

Odosla┼ąod Sahasrar » 16 Sep 2020, 21:18

Pozeral si si nastavenia toho prevodnika teda virtualnej seriovky v PC? Niekedy aj tam byva problem ked je nesulad medzi mikrokontrolerom prevodnikom a softwerom v PC
Sahasrar
St├íly ─Źlen
St├íly ─Źlen
Pr├şspevky: 210
Zalo┼żen├Ż: 16.05.2015
Bydlisko: TN
Karma: 0


Nasp├Ą┼ą na Mikropo─Ź├şta─Źe

Kto je pr├ştomn├Ż

U┼ż├şvatelia prezeraj├║ci si toto f├│rum: ┼Żiadny registrovan├Ż pou┼ż├şvate─ż a 1 hos┼ą.

Forums ©
Autor str├ínky je Ondrej Z├ívodsk├Ż(zawin), o graficky design sa star├í ─Żubo┼í Fabo(BUFU).

TOPlist

Powered by Copyright © UNITED-NUKE CMS. All Rights Reserved.
─îas potrebn├Ż k spracovaniu str├ínky 0.62 sek├║nd