Sida 1 av 2
AVR/PIC RS232 med interna RC oscillatorn
Postat: 18 december 2008, 01:16:58
av blueint
Hur pass bra fungerar det att använda den interna INTOSC RC oscillatorn för RS232 antingen med USART eller mjukvaruversion därav ..?
Hastighet?
Om man skriver ett eget dataström protokoll som synkar om vid varje bitomslag så borde ännu slappare timing gå bra.
Postat: 18 december 2008, 01:22:55
av sodjan
Vid normala matningsspänningar och normala temperaturer
så fungerar t.ex de nyare PIC's INTOSC ganska OK. Sen finns det
metoder att finjustera både baudrate registret och INTOSC.
> Hastighet?
Har ingen betydelse, det är avvikelsen från baudrate som är intressant.
Postat: 18 december 2008, 02:10:08
av blueint
Tänkte den maximala bithastigheten hastigheten som PIC kan köra med den inbyggda oscillatorn utan problem.. ?
Postat: 18 december 2008, 03:10:39
av bearing
Menar du valfri hastighet bland standardhastigheterna eller helt valfri?
Modulen kan kan ställas in att sampla olika många gånger per bit. För att nå höga hastigheter måste få samplingar per bit väljas. Om signalen är i lite fel hastighet och samtidigt är ful kanske få samplingar per bit ger problem.
Ofta blir hastigheten någon tiondels procent till några få procent fel då standardhastigheter väljs. Det beror på att bitfrekvenserna ofta inte är jämnt delbara med den andel av klockfrekvensen USART:en använder. Väljs en bitfrekvens som är jämnt delbar med klockan blir felet 0.
Med minsta antalet samples/bit (som jag antar är 1 eller 4) är maxhastigheten 2 Mbit/s vid 8MHz för 16f886. Högsta standardhastigheten med mindre än 1% fel (som jag hittar) är 57.6kbit/s vilket ger 0,8% fel.
Postat: 18 december 2008, 06:11:27
av blueint
Helt fri hastighet. Tänker att eventuell styrdator kan använda en MCU som brygga. Finns ju dom med 2x USART. Iofs skulle man kunna använda ett protokoll som synkar om vid varje bit förändring och på det sättet klara riktigt soppiga klockor.
Postat: 18 december 2008, 06:49:01
av Swech
För AVR så funkar det helt problemfritt om man läser av
och använder sig av det inbyggda kalibreringsvärdet
för RC oscillatorn.
Kör man okalibrerat så blir det individberoende....
Har varit med om att detta bråkat.
Har kört 19200 i en del fall
övriga 9600
Swech
Postat: 18 december 2008, 09:06:40
av speakman
Om jag tolkar
tabellen (sida 198) rätt så borde man klara 1Mbit/s på den interna OSC om man plockar bort CKDIV8-fusen (som dividerar den interna osc med 8).
Re: AVR/PIC RS232 med interna RC oscillatorn
Postat: 18 december 2008, 09:23:08
av vfr
blueint skrev:Om man skriver ett eget dataström protokoll som synkar om vid varje bitomslag så borde ännu slappare timing gå bra.
Det finns redan färdiga protokoll som klarar ganska mycket variation. LIN t.ex. Det synkar upp till bitströmmen i början av varje paket och är gjort för att klara billiga UART-lösningar med RC-oscillator isf kristall.
Postat: 18 december 2008, 09:55:23
av speakman
Någon särskild anledning till att inte köra synkron data?
Postat: 18 december 2008, 10:07:16
av vfr
Enkelhet! Nästan alla mikrokontrollers idag har en UART inbyggd och det går att få tvåtrådskommunikation med enkla funktioner för sändning och mottagning. Visst, skall man bygga på funktioner för synkning på bitshiften och liknande så blir det genast mer komplicerat och kommer mer och mer att likna synkron kommunikation. Samtidigt är den fortfarande UART-kompatibel och har man bra klockor så är det bara att köra på som vanligt. Med andra ord så är det lätt att komma igång med och sedan går det att lägga till sådana här funktioner på vägen.
Postat: 18 december 2008, 11:16:16
av blueint
vfr,
http://en.wikipedia.org/wiki/Local_Interconnect_Network ..?
Färdiga funktinsförslag för synkron kommunikation?
speakman, Vilken USART mode skall användas isåfall ..?, verkar bara finnas
asynkron samt SPI. Och SPI är inte direkt 1-bits opencollector / EIA-485
kompatibelt. Då SPI behöver tre trådar för att fungera.
Postat: 18 december 2008, 12:16:55
av sodjan
> speakman, Vilken USART mode skall användas isåfall
Synkron mode, verkar väl rimligt...
Postat: 18 december 2008, 12:28:26
av vfr
Japp, just den LIN!
Jag antar att Speakman menade synkron i den mening som t.ex HDLC och liknande. I motsats till synkron med separat klocka som SPI, I2C, Microwire mm. Då får man antingen ha speciell hårdvara som klarar denna typ av synkron kommunikation eller köra mjukvaruimplementation i lägre hastighet. En del U(S)ART har support för detta också, men inte så ofta dom i mikrokontrollers.
Postat: 18 december 2008, 13:00:50
av blueint
Sodjan, Det enda jag sett hittills av synkronmode på PIC/AVR är
SPI och det skulle kräva att man blandar klocka och data externt. För att kunna få in det på en Signal+GND bus.
(rätt likt 1-Wire)
Postat: 18 december 2008, 13:11:13
av sodjan
USART : Universal Sync/Async Receiver Transmitter.
Det är inte riktigt samma sak som SPI/I2C fråm MSSP modulen.
Dock är det inte heller riktigt samma sak som självkloclande
synkrona protocol som HDLC och liknande...
Man var inte svaret till grundfrågan OK ?
> Iofs skulle man kunna använda ett protokoll som synkar om vid varje bit förändring
Problemet är att med vanlig asynk komm så har du inga garanterade bit-ändringar
utom start och stopp bit. Och där har du synkning i alla fall.
Kan du styra hur det är implementerat i båda ändar ?
Jag fattade det som att du skulle hänga på något på någon befintlig "styrdator"...