USART PIC I C = Problem

Witam Mam maly problem procesor PIC16F628A kompilator BoostC napisalem program wysylania danych przez rs232 do kompa i niestety nie dziala :( i niestety nie wiem dlaczego. Ponizej zamieszczam kawalki kodu: init: set_bit(pcon, OSCF); // 4Mhz set_bit(intcon, GIE); set_bit(txsta, BRGH); // Szybka spbrg = 25; // Fosc = 4MHz 9600 bodow/sek !!! uwaga nizej clear_bit(txsta, SYNC); // Tryb asynchroniczny set_bit(rcsta, SPEN); clear_bit(txsta, TX9); // 8 bitowa clear_bit(pie1, TXIE); set_bit(txsta, TXEN); // wlaczamy cala machine

send_char: while (test_bit(pie1, TXIE)) {}; // jezeli to usune i wrzuce zamiast tego // jakies opoznienie to komunikacja jest ok z tego wynika ze mam cos zle // napisane w przerwaniu (nizej) ale ciekawe ze transmisja jest w // 4800 bodow/sek a nie 9600 jak wynika z ustawien set_bit(pie1, TXIE); txreg = ch;

interrupt: if (test_bit(pir1, TXIF)){ // wysylanie clear_bit(pie1, TXIE); }

Czy wogole idea jest dobra ?? Sam juz nie wiem co tu nie pasuje.

Pozdrawiam i z gory dzieki za pomoc Tomek

Reply to
Tomek
Loading thread data ...

set_bit(intcon, PEIE); //tego zapomnialem i przerwanie wogole nie bylo wywolywane Teraz powstaje problem ze co drugi znak jest wyslany oraz ta dziwna niezgodna z dokumentacja predkosc.

Tomek

Reply to
thomek_21

A skąd wziąłeś tą wartość dla

Przy 9600 i kwarcu 4MHz ta prędkość jest nieosiągalna, nieważne czy dla BRGH = 1 czy 0

Tylko zerknąłem do tabelki w domumentacji.

sword

Reply to
Adam Jurkiewicz

Ja zerknelem do dokumentacji i wskazuje na to ze jest osiagalna kwarc 4MHz BRGH = 1 no i SPBRG = 25 tak pokazuje dokumentacja microchipa. Blad wynosi 0,16% a wiec chyba akceptowalny. Juz sam nie wiem skoro nawet sa rozne dokumentacje. Narazie daje sobie z tym spokoj teraz waznejsze sprawy na glowie.

Pozdrawiam Tomek

Reply to
thomek_21

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.