Hallo ich hab hier ein größeres Problem und zwar bekomme ich auf meinen PIC18F2550 kein USART hin Extern hängt ein 20MHz Quatz dran FSOC = 48Mhz Folgendes hab ich mit aus dem datenblat rausgelesen leider klapt es so nicht ; PORTC banksel TRISC ; Bank Wekseln movlw B'11000000' ; Portc I/O setzen (1=In, 0=Out) (Reinfolge RB7,RB6...) movwf TRISC ; Portc I/O setzen banksel PORTC ; Bank Wekseln clrf PORTC ; Portc auf 0 setzen ; USART initialisieren und Bautrate einstellen banksel SPBRG ; 9600 baud @ 20MHz movlw D'77' movwf SPBRG ;bcf BAUDCON, ABDOV ; Autobautrate Disable bcf BAUDCON, RCIDL ; Recive Enable ;bcf BAUDCON, RXDTP ; RX Not Invertet ;bcf BAUDCON, TXCKP ; TX Not Invertet bcf BAUDCON, BRG16 ; 8bit Compatible Mode SPBRGH Ignored bcf BAUDCON, WUE ; Wake-up Disable bcf BAUDCON, ABDEN ; Autobaud Disable ; USART Senden banksel TXSTA bcf TXSTA, CSRC ; Clock source select bcf TXSTA, TX9 ; 9bit transmision disable bsf TXSTA, TXEN ; Enable transmit bcf TXSTA, SYNC ; Synchronmode Disable bcf TXSTA, SENDB bcf TXSTA, BRGH ; Select low baud rate ; USART Entfangen banksel RCSTA bsf RCSTA, SPEN ; SerialPort Enable bcf RCSTA, RX9 ; 8bit Recive bsf RCSTA, SREN ; Disabel Singelbit Receive bsf RCSTA, CREN ; Enable Receiver bcf RCSTA, ADDEN ; Disale Adressdetection
Programmier das Ding in C. Mit dem Assemblerschrott da oben kann doch keiner was anfangen.
Muhaaa als wen mich das weiterbringen würde wen ich C nutze genau nämlich ganicht die Einstellungen müssen auch in C gemacht werden.
>nämlich ganicht die Einstellungen müssen auch in C gemacht werden.
Logisch, aber dann quälst du dich nicht mehr
mit dem bescheuerten "banksel" und so weiter rum.
20MHz Quarz und 48MHz FOSC ??????? Wozu ? Baudrate aber anhand 20MHz eingestellt ????
Auch wenn die Einstellungen in asm die selben sind, ich stimme Holger schon zu. Es gäbe fertige Libraries für den Uart.
Naja die Übertragung für RS232 zu schreiben ist sehr leicht beim senden sind es unter 10 befehle des gleiche beim entfangen (ohne Interrupts). Beim 16f klappt das auch hervorragend nur beim 18f halt net da die config etwas aufwendiger ist. @ Bernd Rüter jup 20mhz und mit dem PLL 48mhz BRG=Low SPRG=((Fosc/Baud)/64)-1 SPRG=((48000000/9600)/64)-1 SPRG=76,125 oder BRG=High SPRG=((Fosc/Baud)/16)+1 SPRG=((48000000/9600)/16)+1 SPRG=313,5
Ähhm ka welchen Compiler du benutzt !! aber wenn du den c18 von MPLAB nutzt musst du BANKSEL (jeder Buchstabe groß) Schreiben und nicht banksel!! LG NB
NB schrieb: > Ähhm ka welchen Compiler du benutzt !! > aber wenn du den c18 von MPLAB nutzt musst du BANKSEL (jeder Buchstabe > groß) > Schreiben und nicht banksel!! > > LG > NB Das ist Assembler - kein C - darum auch kein C18. holger schrieb: > Programmier das Ding in C. > > Mit dem Assemblerschrott da oben kann doch keiner > was anfangen. Nur weil du es nicht kannst, heißt das noch lange nicht, dass es Schrott ist. Selbstverständlich erfordert es mehr Denkvermögen in Assembler zu arbeiten. Das ist allerdings nur positiv anzurechnen. Man bemerkt, dass du wenig Ahnung von der Materie hast. K. J. schrieb: > Extern hängt ein 20MHz Quatz dran FSOC = 48Mhz Das geht schlecht. Ich hoffe, du hast die 4xPLL nicht aktiviert. Das wird dann nämlich nichts. Wirf einen Blick ins Datenblatt, da wird das genau ausgelotet, von wegen Taktversorgung (E)USART. unwissender schrieb: > Auch wenn die Einstellungen in asm die selben sind, ich stimme Holger > schon zu. Es gäbe fertige Libraries für den Uart. Auch für ASM gibt es fertigen Code: http://sprut.de/electronic/pic/grund/rs232.htm K. J. schrieb: > @ Bernd Rüter jup 20mhz und mit dem PLL 48mhz Wie soll denn das funktionieren? 20MHz * 4x PLL wäre 80MHz -> nicht gut. IMHO gehen mit der PLL maximal 12 MHz extern -> *4 PLL = 48MHz Fosc max.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.