PIC, MicroC und UART

OP #4183824
Lesenswert?

Hallo zusammen,
ich versuche mich grade in Sachen UART und PIC, doch irgendwie mag das 
ganze nicht so funktionieren wie es sollte.

Hierbei habe ich es gemäß einiger Tutorial versucht und das bisher 
erfolglos.

Also dann zum Problem.
Ich habe einen PIC (18F14K50), den ich über den PICKIT Serial Analyzer 
mit dem PC verbunden habe.

Wenn ich den PIC nun einfach zyklisch Daten senden lassen will, bekomme 
ich am PC immer nur die Ausgabe einer Hexadezimalen 80 und zwischendurch 
einem Fragezeichen.

Das Programm (geschrieben in MicroC Pro for PIC) sieht so aus:
1
void main(void) {
2
     UART1_Init(9600);
3
     Delay_ms(100);
4
     
5
     while(1) {
6
          UART1_Write_Text("Hello World.");
7
          Delay_ms(1000);
8
     }
9
}

Die Ausgabe im Serial Analyzer in etwa so:
1
[RX]80?[RX]80?[RX]80?[RX]80?[RX]80?[RX]80?[RX]80?[RX]80?[RX]80?[RX]80

Das selbe Ergebnis erhalte ich auch, wenn ich das ganze in Proteus 
nachstelle und simuliere.

Hat jemand eine Idee, warum da nur sowas bei raus kommt und nicht die 
Werte die ich erwarte?

Gruß Numax
OP #4184181
Lesenswert?

Hallo,
ich verwende den internen Oscillator bei 8 MHz.
Das müsste ich dann mal nachmessen, ob er die richtige Frequenz erzeugt.

Kann der interne denn die geforderte Stabilität erzeugen, oder ist es 
erforderlich einen externen Quarz zu benutzen?

Die Baudrate ist die selbe.

Gruß Numax
Gast #4184288
Lesenswert?

Markus K. schrieb:
> ich verwende den internen Oscillator bei 8 MHz.
> Das müsste ich dann mal nachmessen, ob er die richtige Frequenz erzeugt.

Oder in den Projekt Settings nachschauen ob der Compiler auch die reale 
Taktfrequenz kennt.

>
> Kann der interne denn die geforderte Stabilität erzeugen, oder ist es
> erforderlich einen externen Quarz zu benutzen?


Zumindest würde nicht immer 0x80 auftauchen.
OP #4184814
Lesenswert?

Ich habe jetzt mal nachgemessen und er läuft nur mit 250kHz.

So ganz nachvollziehen kann ich das zwar nicht, zumal der interne 
Oscillator laut Datenblatt erst ab 31kHz läuft.
Aber egal was ich in MicroC einstelle, es ändert sich an der Frequenz 
vom PIC nichts.

Das einzige was sich verändert hat ist, das ich nun nur noch nullen als 
Ausgabe bekomme und keine 80.
OP #4184896
Lesenswert?

Vielen Dank,
nun läuft es.

Verstehen wieso kann ich es noch nicht, aber es geht.

Ich habe nun in den Projekt Settings die Oscillator Selection auf "HS 
Oscillator" gestezt und einen 8MHz Quarz angeschlossen.

Wenn ich aber eine andere Einstellung wähle, geht wieder garnichts. Laut 
Datenblatt hätte ich vermutet die Selection auf "EC High" zu setzen.

Die Hauptsache ist aber das es geht.

Gruß Numax
OP #4184951
Lesenswert?

Das ist richtig, ich meinte für den externen Quarz.

Im Bild sind alle Einträge die ich in MicroC auswählen kann (Oscillator 
Selection).

Bisher funktioniert nur der Eintrag "HS Oscillator" in Verbindung mit 
einem externen Quarz.

Ich hätte in diesem Fall gemäß des Datenblattes erwartet, das ich bei 
dem externen Quarz den Eintrag "EC High" wählen muss, jedoch 
funktioniert dann nix mehr.

Wähle ich einen der beiden "Internal" Einträge dann bekomme ich wie 
erwähnt nur Hexadezimale 80 oder 00.

Diese vielzahl an Einträgen sorgt bei mir für Verwirrung.

Gruß Numax
Angehängte Dateien:

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren