Hallo zusammen.
Ich versuche jetzt schon einige Zeit lang, den UART2 meines
PIC24FJ128GA010 zum Laufen zu bringen, aber es kommt nichts vernünftiges
an am PC.
Hab mal den Code dazu gepostet.
Vielleicht kann mir da jemand einen Tipp geben...wäre echt Klasse.
Gruß Thomas
danke für deine Antwort.
Es ist ein PIC24FJ128GA010. Es kommt am Terminal nur <0> an, als wäre
die Baudrate falsch.
Das PPS brauch ich nur, wenn ich einen PIC habe, wo ich die Pins frei
zuweisen kann oder?
> Das PPS brauch ich nur, wenn ich einen PIC habe, wo ich die Pins frei> zuweisen kann oder?
Stimmt, bei Deinem PIC entfällt das.
> Es kommt am Terminal nur <0> an, als wäre> die Baudrate falsch.
USART-Config sieht ganz brauchbar aus. Aber da ich das Hauptprogramm
nicht kenne ist nicht auszuschließen, dass noch ein dicker Hund in der
Clock-Config sitzt. Sicher, dass der PIC mit der Frequenz tickt, mit der
Du denkst, dass er tickt?
Du könntest auch mal den Wert für den Baudratenregister von Hand
ausrechnen und einsetzen. Sicher, dass die Terminaleinstellungen zu den
Einstellungen des PIC passen?
also im Main hab ich lediglich den Aufruf von UART_Init(BR_9600) und
wenn ich dann zB. einen Char, zB 'a' mit UART_PutChar('a') senden will,
dann kommt am Terminal nur "<0>" an. Hab aber sicher die Baud auf 9600,
8bits, 1 stopbit, keine parität,... gestellt. Hatte auch mal probiert,
einen char direkt in das Senderegister der UART zu stellen...selbes
Ergebnis.
ich verwende das Explorer 16 Boad von Microchip in Verbindung mit dem
PICTail Plus Daughter Board 2 (Touchscreen). Und im Schaltplan ist auch
ein 8MHz Quarz eingezeichnet.
Kann der Systemclock trotzdem noch anders sein dann?
Habe das ICD 2, aber mit dem sehe ich leider nicht die Werte der
Register, wenn ich debugge. Hatte den Wert auch schon mal ausgerechnet
und eingesetzt->selbes Ergebnis. War glaub ich für eine Baud von 9600
51.
Danke!
> Fehler gefunden:> Da muss bei dir noch ein /2 rein !
Hmm, möglich. Aber wir wissen immer noch nicht, mit welcher Frequenz die
System Clock arbeitet.
Wie sehen Deine Config-Words aus?
Schau mal im Kapitel 7 vom Datasheet. Dort siehst Du, dass ein 8 MHz
Quarz noch laaaange nicht bedeutet, dass der PIC dann auch mit 8 MHz
arbeitet.
Ist die PLL aktiviert?
Ist der Postscaler != 1:1?
Verwendest Du überhaupt den externen OSC???
Hatte auch USART-Probleme bei mir war es folgendes:
Pic hält externen Osci_Extern für 48MHz und nicht für 20MHz -> PLL
richtig einstellen
Am besten nimm dir nen Osziloskop und schau nach :) hat bei mir wunder
bewirkt
so ich hab mir das Programm nochmals genau angesehen(basiert ja auf
einen Musterprogramm von Microchip, wo die ganze Grafik Library schon
eingebunden ist) und da hab ich folgendes define:
#define GetSystemClock() (32000000ul) // 8 MHz x 4
PLL
#define GetPeripheralClock() (GetSystemClock()/2)
#define GetInstructionClock() (GetSystemClock()/2)
also läuft der µC doch mit mehr Takt intern....jedoch, auch wenn ich bei
meinem UART.h die Taktfrequenz auf 16MHz stelle, weil es ja der halbe
Systemtakt ist, kommt das selbe an.
> also läuft der µC doch mit mehr Takt intern
War zu erwarten.
> Wie sehen Deine Config-Words aus?
Ich frage das nicht noch einmal.
Da beim Hyperterminal ja bereits etwas ankommt, liegt es mit höchster
Wahrscheinlichkeit an einer falschen Takteinstellung. Wenn Du Dich aber
nicht zu den Config-Words äußerst, können wir uns hier gerne noch ein
paar Tage im Kreis drehen.
meinst du diese hier? für die PLL
_CONFIG2(FNOSC_PRIPLL & POSCMOD_XT) // Primary XT OSC with PLL
_CONFIG1(JTAGEN_OFF & FWDTEN_OFF) // JTAG off, watchdog timer off