mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik PIC18f2550 + USART ?


Autor: K. J. (theborg0815) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Programmier das Ding in C.

Mit dem Assemblerschrott da oben kann doch keiner
was anfangen.

Autor: K. J. (theborg0815) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Bernd Rüter (Firma: Promaxx.net) (bigwumpus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
20MHz Quarz und 48MHz FOSC ???????

Wozu ?

Baudrate aber anhand 20MHz eingestellt ????

Autor: unwissender (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
=fosc / 4 = 12MHz:)

Autor: unwissender (Gast)
Datum:

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

Autor: K. J. (theborg0815) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: NB (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Lehrmann Michael (ubimbo)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.