Forum: Mikrocontroller und Digitale Elektronik PIC18f2550 + USART ?


von K. J. (Gast)


Lesenswert?

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

von holger (Gast)


Lesenswert?

Programmier das Ding in C.

Mit dem Assemblerschrott da oben kann doch keiner
was anfangen.

von K. J. (Gast)


Lesenswert?

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.

von holger (Gast)


Lesenswert?

>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.

von Bernd R. (Firma: Promaxx.net) (bigwumpus)


Lesenswert?

20MHz Quarz und 48MHz FOSC ???????

Wozu ?

Baudrate aber anhand 20MHz eingestellt ????

von unwissender (Gast)


Lesenswert?

=fosc / 4 = 12MHz:)

von unwissender (Gast)


Lesenswert?

Auch wenn die Einstellungen in asm die selben sind, ich stimme Holger 
schon zu. Es gäbe fertige Libraries für den Uart.

von K. J. (Gast)


Lesenswert?

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

von NB (Gast)


Lesenswert?

Ä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

von Lehrmann M. (ubimbo)


Lesenswert?

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
Noch kein Account? Hier anmelden.