Hallo,
ich habe das folgende Display:
http://www.buydisplay.com/default/tft-5-inch-lcd-display-module-w-controller-board-serial-i2c-ra8875
per 4-wire SPI (SDI1, SDO1, CS u. SCK) und eine gesonderte RESET Leitung
erfolgreich per Starterkit und Expansion Board angesteuert.
Das Starterkit ist mit dem PIC32MX795F512L bestückt.
Funktioniert alles tadellos.
Ich habe mir eine eigene Platine fertigen lassen, ebenfalls mit dem
PIC32MX795F512L und einen SPI Header (1: CS; 2: RESET; 3: SDI; 4: SDO
und 5: SCK). SCK, SDI und SDO sind definitiv an den richtigen PINs des
PIC32 und auch RESET und CS sind an denselben Pins wie auf dem
Starterkit. Zusätzlich habe ich an RESET einen 10K Pull Up und an CS
einen 10K Pull Up angebracht.
Das Display schließe ich jetzt genauso an wie ehemals an dem Starterkit.
Die Fehlerquelle sollte also hier gering bis ausgeschlossen sein.
Spi Leitungen auf der Platine sind auch sehr kurz gehalten.
Problem ist dass dasselbe Programm welche auf dem Starterkit 1A läuft
bei der eigenen Platine nicht mal das Display richtig initialisiert.
Ich habe die Pull UPs an RESET und CS runtergelötet, SDI und SDO
vertauscht usw, alles ohne Erfolg.
Wie gesagt ist ein Software Fehler auszuschließen, da dasselbe Programm
bei selben Leitungen, selbiger Verdrahtung, selber MCU usw. tadellos
läuft.
Wenn ich die Config Bits des PICs ändere initialisert sich das Display
zumindest. Trotzdem funktionieren alle weitere Funktionen nicht.
Normal müßte dasselbe Programm 1 zu 1 vom Starterkit auf die Platine
portierbar sein.
Jemand Ideen welche Fehlerquellen in Frage kommen könnten?
Vielen Dank!
Mia sain mia schrieb:> SPI Header (1: CS; 2: RESET; 3: SDI; 4: SDO> und 5: SCK). SCK, SDI und SDO sind definitiv an den richtigen PINs des> PIC32 und auch RESET und CS sind an denselben Pins wie auf dem> Starterkit.
Und was ist mit GND?
Erdverbundener schrieb:> Mia sain mia schrieb:>> SPI Header (1: CS; 2: RESET; 3: SDI; 4: SDO>> und 5: SCK). SCK, SDI und SDO sind definitiv an den richtigen PINs des>> PIC32 und auch RESET und CS sind an denselben Pins wie auf dem>> Starterkit.>> Und was ist mit GND?
GND und VCC natürlich auch :)
Dasselbe Programm oder nur dieselben Routinen zum Ansteuern des
Displays?
Sind die Analogfunktionen der Pins, die für SPI verwendet werden, in
AD1PCFG ausgeschaltet (Bit = 1, Default nach Reset ist 0 d.h. analog)?
Arc N. schrieb:> Dasselbe Programm oder nur dieselben Routinen zum Ansteuern des> Displays?> Sind die Analogfunktionen der Pins, die für SPI verwendet werden, in> AD1PCFG ausgeschaltet (Bit = 1, Default nach Reset ist 0 d.h. analog)?
ich hab per Default mal alle Pins auf digital gestellt.
AD1PCFG = 0xFFFF; // Pins to digital
Wie gesagt funktioniert dies ja auch auf dem Starterkit ohne diese
Einstellung, aber danke für den Einwand!
Ich habe das Gefühl, dass es was mit den Config Bits zu tun haben muss,
obwohl es mir trotzdem unerklärlich ist, da es sich wie gesagt um ein
und denselben MCU handelt.
Anderer Quarz? Rennt der PIC vl durch unpassende Config-Bits auf dem
internen Quarz (typischer Fallback)?
Wenn der Takt zu hoch oder das Timing fürs Display unpassend ist, dann
kann das die Effekte schon erklären.
// Program Flash Write Protect: PWP512K, PWP508K, ... PWP504K, OFF
74
75
#pragma config PWP = OFF
76
77
#pragma config DEBUG = OFF
so funktioniert es alles auf dem Starterkit einwandfrei mit Primary OSC
und selben Takt.
Ich muss gestehen, dass ich jetzt nicht jede Zeile der Config Bits
erklären kann, aber es wird ja kein secondary Oscillator auf dem
Starterkit genutzt den ich auf der Platine nicht habe.
Der Config nach würde das einen externen Quarz mit 8MHz voraussetzen und
einen internen Takt von 80MHz ergeben (wenn ich mich grad nicht
verrechnet habe).
Hast du einen externen 8MHz Quarz dran?
morph1 schrieb:> Der Config nach würde das einen externen Quarz mit 8MHz> voraussetzen und> einen internen Takt von 80MHz ergeben (wenn ich mich grad nicht> verrechnet habe).>> Hast du einen externen 8MHz Quarz dran?
Vielen Dank, ich glaube die "Spur" ist die Richtige.
Vorweg, ich habe keinen 8 Mhz angeschlossen, ich lese aus den CONFIG
Bits aber auch nicht heraus, warum dies der Fall sein sollte.
Habe mir gerade das Reference Manual für Oscillator durchgelesen und
versucht meine Config Bits einmal zu entschlüsseln, mit folgenden
Ergebnis:
#pragma config FSOSCEN = OFF // Secondaray Osc disabled
8
#pragma config FCKSM = CSDCMD
9
#pragma config OSCIOFNC = OFF
10
#pragma config FWDTEN = OFF
11
#pragma config WDTPS = PS1024
12
#pragma config CP = OFF
13
#pragma config BWP = OFF
14
#pragma config PWP = OFF
15
#pragma config DEBUG = OFF
Wo genau steht hier etwas von externen Quarz?
Ich habe doch nur den internen Primary Oscillator ausgewählt?
Wie genau bekomme ich mein System ohne externen 8 mhz Quarz zum laufen?
Wie müßten die Config Bits dann aussehen.
Wie hast du die 80 Mhz Systemtakt errechnet?
Es stimmt schon, dass meines Wissens auf dem Starterkit ein externer 8
Mhz Quarz drauf ist. Ich kann dies nur noch nicht mit den Config Bits in
Zusammenhang bringen, da ich gerade erst anfange mich mit PIC32 zu
beschäftigen.
Vielen Dank an Morph für die Hilfe!
Ich habe es jetzt mal mit dem internen Fast RC Ozillator with PLL
versucht und den Systemtakt auf 80 MHz versucht einzustellen:
1
#pragma config FPLLIDIV = DIV_2
2
#pragma config FPLLMUL = MUL_20
3
#pragma config FPLLODIV = DIV_1
4
#pragma config FWDTEN = OFF
5
#pragma config POSCMOD = OFF
6
#pragma config FNOSC = FRCPLL
7
#pragma config FPBDIV = DIV_1
8
#pragma config FCKSM = CSECME
Leider bekommen ich jetzt gar keine Ausgabe.
Ich fasse nochmal zusammen:
1. Starterkit mit 8 Mhz externer Quarz funktioniert
2. eigene Platine mit selbigen MCU ohne externen 8 Mhz Quarz
funktioniert nicht. Wie muss ich die Config Bits genau setzen, damit das
alles wieder reibungslos funktioniert?
Hallo,
auf deinem starterkit hast du:
#pragma config FPBDIV = DIV_8 !!!
jetzt auf dem bastelboard:
#pragma config FPBDIV = DIV_1
du weisst schon was das macht?
vorher CPU = 80Mhz PBus = 10Mhz (dein starterkit)
jetzt CPU = 80Mhz PBus = 80Mhz (bastelboard ohne quarz)
so, jetzt weiss aber niemand wie du delays etc erzeugst (timer?).
oder von welchem takt dein SPI modul lebt, also ohne code zeigen, dauert
mir das zu lange.
Ach, immer ALLE config wörter zeigen, sonst kann dir nur schwer geholfen
werden.
Also alle pragmas für DEVCFG0 - DEVCFG3.
ps: ich mache IMMER zuerst ein blinky, mit sw delay, dann erwetern mit
timer usw,
um ein "neues" board zu prüfen und welcher takt denn wirklich wo am
werkeln ist.
mfG
Peter
Mia sain mia schrieb:> Vorweg, ich habe keinen 8 Mhz angeschlossen, ich lese aus den CONFIG> Bits aber auch nicht heraus, warum dies der Fall sein sollte.
Wegen des Aufbau des Oszillators im PIC :)
Beim Eingangsteiler von 2 muss der Quarz 8Mhz haben, weil das PLL-Modul
nur 4MHz akzeptiert.
Ich würde mir das Kapitel mal genauer ansehen. Wie der Vorposter schon
schrieb, du hast 80MHz Peripheral-Clock, dein Starterkit nur 10.