Ändra baud för Hserout i PicBasic

Elektronikrelaterade (på komponentnivå) frågor och funderingar.
Chrille
Inlägg: 523
Blev medlem: 24 september 2003, 23:54:12
Ort: Torekov
Kontakt:

Ändra baud för Hserout i PicBasic

Inlägg av Chrille »

Jag använder följande rader kod för att fixa till inställningarna till Hserout kommandot i Picbasic och här är hastigheten på 2400 men detta tycks inte vara nog så jag skulle vilja höja det lite till t.ex. 9600.
Hur gör jag detta för jag har kollat runt lite och fattat det som att man bara ändrar SPBRG till ett annat värde men det verkar inte fungera. Har även läst att man kan skriva DEFINE HSER_BAUD 9600.
Någon som kan förklara vad som ska ändras?

Kod: Markera allt

TRISC = %10111111       ' Set TX (PortC.6) to out, rest in
SPBRG = 25	            ' Set baud rate to 2400
RCSTA = %10010000       ' Enable serial port and continuous receive
TXSTA = %00100000		' Enable transmit and asynchronous mode
DEFINE HSER_CLROERR 1
Användarvisningsbild
EagleSpirit
Inlägg: 1288
Blev medlem: 27 maj 2003, 23:15:48
Ort: Västerås
Kontakt:

Inlägg av EagleSpirit »

Ja det är SPBRG som är baudraten men i Picbasic tycker jag det borde finnas något enklare sätt. Typ Define HSER_BAUD 9600 som du säger.

Värdet på SPBRG beror på vilken kristallhastighet och vilken baudrate du vill ha. Det kanske står nåt om det i manualen? Det borde stå i tabeller eller formler.
Användarvisningsbild
Tripp
Inlägg: 397
Blev medlem: 29 januari 2004, 08:14:39
Ort: Tullinge
Kontakt:

Inlägg av Tripp »

Viken klockfrekvens använder du?

Vill du köra 9600?

Om jag får svar på det, kan jag säga vad SPBRG ska vara.

/Tripp
Chrille
Inlägg: 523
Blev medlem: 24 september 2003, 23:54:12
Ort: Torekov
Kontakt:

Inlägg av Chrille »

Jag hittade ett program när jag kollade runt på nätet som räknar fram detta och enligt det så ska SPBRG=6. Jag kör med 4MHz och vill ha en baud på 9600, stämmer detta då?
Användarvisningsbild
Icecap
Inlägg: 26645
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Inlägg av Icecap »

För att få rätt baudrate använder jag alltid 3,6864MHz, då blir det exakt rätt.
Med 4MHz och TXSTA.BRGH = 0
* SPRG = 6 blir det 8.928 baud (7,5% under)
* SPRG = 5 blir det 10.417 baud (7,8% över)

Vid att ha TXSTA.BRGH = 1 kan du få:
* SPRG = 25 blir det 9615 baud
* SPRG = 26 blir det 9259 baud

I databladet står det väldigt bra hur man räknar ut det faktisk.
Chrille
Inlägg: 523
Blev medlem: 24 september 2003, 23:54:12
Ort: Torekov
Kontakt:

Inlägg av Chrille »

Har provat att ändra nu men det löser inte problemet så förmodligen är det något annat som är fel.
Tanken är att jag ska styra en stegmotor med seriella kommandon så för varje gång en siffra skickas över ska motorn hoppa ett steg. Problemet är nu att jag inte kan få upp någon vidare bra fart på motorn. Kör jag motorn direkt ifrån en PIC så blir det bra hastighet. Kan det vara så att PIC:en inte hinner med att skicka kommandona, kör den på 4Mhz?
Skriv svar