Hallo, hätte mal wieder ne Frage zur Programmierung vom PIC und zwar möchte ich vom PIC18LF4550 PORTE & PORTD bzw. LATE und LATD beschreiben leider lassen sich die zugehörigen TRISREGISTER nicht beschreiben. egal was ich mache die register ändern sich nicht. Analogpins hab ich im ADCON1 Register schon deaktiviert. meine Vermutung ist, dass man das SSP Modul irgendwie abschalten muss. finde im Datenblatt aber nciht die entsprechenden Register. kann mir jemand helfen? Grüße Stephan
Nö, hört sich eher an als hättest Du den IC mit nem Code für nen 18f2550 beschrieben... Prüf das mal...
>PORTE & PORTD bzw. LATE und LATD beschreiben leider lassen sich die >zugehörigen TRISREGISTER nicht beschreiben. egal was ich mache die >register ändern sich nicht. Die Tris Register können immer beschrieben werden. Dein Code ist falsch.
sorry hier mein Code bei allen anderen registern funktionierts.
1 | #define LED1_TRIS (TRISEbits.TRISE0) // Ref E0
|
2 | #define LED1_IO (LATEbits.LATE0)
|
3 | #define LED2_TRIS (TRISEbits.TRISE1) // Ref E1
|
4 | #define LED2_IO (LATEbits.LATE1)
|
5 | #define LED3_TRIS (TRISEbits.TRISE2) // Ref E2
|
6 | #define LED3_IO (LATEbits.LATE2)
|
7 | |
8 | ADCON1 = 0b1111; //SET all Analogchannel D I/O |
9 | LED1_TRIS = 1; //Make LED PINS as INPUTPINS |
10 | LED2_TRIS = 1; //Make LED PINS as INPUTPINS |
11 | LED3_TRIS = 0; //Make LED PINS as OUTPUTPINS |
Leider ändert sich im TRISE Register nichts. auch LED3_IO = 1; hat keinen effekt auf die Register..... sonst noch jemand nen vorschlag?
Manuel schrieb: > Nö, hört sich eher an als hättest Du den IC mit nem Code für nen 18f2550 > beschrieben... Prüf das mal... ähm verstehe ich nciht was man da falsch machen könnte? in mplab IDE ist der 18f4550 eingestellt
Was nimmst Du als Debugger? Im Simulator hat das bei mir auch schon nicht funiktioniert... Sowie auch die Timer und ähnliches nicht richtig funktionieren.
Das Linker-File könnte auch noch Einfluß haben. Bin mir aber nicht 100% sicher.
als debugger hab ich das REAL ICE oder das ICD3 zur hand.... hab auch das Oszi an den Ausgängen hängen. --> es tut sich nichts.... --> wie gesagt alle anderen Ports funktionieren....
Und dann kann man die SMD 18f4550 auch auf 18f2550 "Simulation" stellen.
#define LED1_TRIS (TRISEbits.TRISE0) // Ref E0 Versuch doch mal #define LED1_TRIS TRISEbits.TRISE0 // Ref E0
Flasche Includes könnten auch noch Einfluß haben. Ich hoffe mir fällt jetzt nicht noch mehr ein :-)
Ich hatte auch mal Samples bei denen ein Teil der Hardware nicht funktioniert hatte . Waren aber QFN-Packages.
holger schrieb: > #define LED1_TRIS (TRISEbits.TRISE0) // Ref E0 > > Versuch doch mal > > #define LED1_TRIS TRISEbits.TRISE0 // Ref E0 ähm bringt auch nichts könnte mir auch nicht vorstellen was das für einen effekt haben sollte...
Manuel schrieb: > Das Linker-File könnte auch noch Einfluß haben. Bin mir aber nicht 100% > sicher. wie kann ich mir 100%ig sicher sein, dass ich das richtige Linker-File benutze?
Manuel schrieb: > Ich hatte auch mal Samples bei denen ein Teil der Hardware nicht > funktioniert hatte . Waren aber QFN-Packages. das möchte ich jetzt mal aussschließen habe kein QFN package und habe 2 p18lf4550 zur hand bei beidn boards das gleiche problem
Nimm doch einfach ein Beispielprojekt für den 18f4550 und starte es. Die funktionieren auf jeden fall.
Manuel schrieb:
> Das 18f4550_g.lkr sollte das richtige sein
weißt du grad wo und wie ich des einbinden kann? bzw kontrollieren kann
ob das verwendet wird?
schätze mplab IDE hat das bei mir automatisch gemacht.
Na das glaub ich eher nicht :-) Wenn Du im Projekt-View bei Linker-Script bist, dann rechte Maustaste->Add File und unter C:\MCC18\bin\LKR gibts dann alles was Du brauchst.
Das SSP-Modul im 18F4550 wird aber nicht benutzt ? USB ?
naja habs hinzugefügt hat aber nichts gebracht..... sonst nochn vorschlag? PORTA PORTB PORTC funktionieren.... nur die leds auf porte wollen nicht angehen...
Bernd Rüter schrieb: > Das SSP-Modul im 18F4550 wird aber nicht benutzt ? > USB ? wird bisher nicht benutzt... kanns denn damit was zu tun haben? weil ich hab lediglich keinen zugriff auf TRISD und TRISE mensch ich bin am verzweifeln...
"PORTA PORTB PORTC funktionieren.... nur die leds auf porte wollen nicht angehen..." ich kenn den PIC nicht aber nur so ne banale Frage: bist du sicher, dass PORTE überhaupt sourcen kann und nicht bloß sinken?
MegaGünther schrieb: > "PORTA PORTB PORTC funktionieren.... nur die leds auf porte wollen nicht > angehen..." > > ich kenn den PIC nicht aber nur so ne banale Frage: bist du sicher, dass > PORTE überhaupt sourcen kann und nicht bloß sinken? ja ich bin mir sicher.. --> auch wenn es nicht der fall wäre PORTE0:PORTE2 müssten zumindest als Output und oder Eingang geschaltet werden können. --> das steht definitiv im Datenblatt übrigens PORTD geht auch nicht. gleiches Problem wie mit PORTE
bleibt zwar immer das selbe aber hast du schon mal versucht, das Register direkt zu beschreiben: TRISE=0b111; ?
MegaGünther schrieb: > bleibt zwar immer das selbe aber hast du schon mal versucht, das > Register direkt zu beschreiben: > > TRISE=0b111; > ja klar habe alles durchprobiert. bin mittlerweile schon 3 tage dran... bin heute nochmals ausgiebig das Datenblatt durchgegangen und im Internet rumgesucht aber nichts hat geholfen. ich suche immernoch ne möglichkeit das SSP Modul zu deaktivieren....
also es liegt meiner meinung nach definitiv am SPP aka PSP ich würde hier weitersuchen, irgendwie aktivierst du es wohl aus versehen
SSP kannst du doch im SSPCON1 Register mit SSPEN aktivieren/deaktivieren...
Michael H. schrieb: > also es liegt meiner meinung nach definitiv am SPP aka PSP > > ich würde hier weitersuchen, irgendwie aktivierst du es wohl aus > versehen danke der Meinung bin ich auch.... Im prinzip müssten die Register CMCON; SPPCON; SPPCFG; dafür verantwortlich sein. werde aber aus dem Datenblatt nicht schlau wie diese zu konfigurieren sind...
SPP!!!! REGISTER 18-1: SPPCON: SPP CONTROL REGISTER SPPCONbits.SPPEN = 0; das allein sollte es tun
Michael H. schrieb: > REGISTER 18-1: SPPCON: SPP CONTROL REGISTER > > SPPCONbits.SPPEN = 0; schon gemacht und Bit ist auch auf 0 leider keine Auswirkung auf mein TRISE und TRISD
SPPCONbits.SPPOWN = 0; das ebenfalls dazu? obwohls keine wirkung haben sollte
Michael H. schrieb: > PPCONbits.SPPOWN = 0; > > das ebenfalls dazu? obwohls keine wirkung haben sollte ist ebenfalls 0 --> hat auch keien Auswirkung
>schon gemacht und Bit ist auch auf 0 leider keine Auswirkung auf mein >TRISE >und TRISD Dann ist dein PIC kaputt. Wie schon gesagt: TRISE und TRISD lassen sich immer beschreiben. Lies sie mal aus.
Stephan G. schrieb:
> ich suche immernoch ne möglichkeit das SSP Modul zu deaktivieren....
Kapitel 18 im Datenblatt. SSPCON ist das Register, Bit 0 schaltet SSP
ein. Ist nach einem Reset aber 0.
Michael H. schrieb: > aja vor deinen TRIS-aktionen bitte :) logisch holger schrieb: > Dann ist dein PIC kaputt. Wie schon gesagt: > TRISE und TRISD lassen sich immer beschreiben. > Lies sie mal aus. okilidokili ich wechsel ihn aus.... wer hier den thread noch weiter verfolgt... schätze ich brauch 15- 20 min ;-), wobei ichs fast nicht fassen kann hab 2 boards mit dem selben prozessor drauf und beide gehen nicht
versuch mal SPP zu aktivieren und wieder deaktivieren bevor du die TRIS Register setzt. Würd mich wundern wenn das was ändern würde, aber hab mich schon öfters gewundert :)
@ Stephan G. (Firma: keine) (malibow) >neuer PIC keine Änderung.... >gibts noch vorschläge oder seids müde? Kann es ein, dass du da AVR und PIC durcheinander haust? Beim PIC muss man schreiben TRISE=0; um die Pins aus Ausgang zu definieren. Genau umgekehrt zum AVR!!! MFG Falk
Falk Brunner schrieb: > Kann es ein, dass du da AVR und PIC durcheinander haust? > > Beim PIC muss man schreiben > > TRISE=0; > > um die Pins aus Ausgang zu definieren. Genau umgekehrt zum AVR!!! > > MFG > Falk definitiv nicht... das TRIS register lässt sich weder 1 noch 0 setzen...
Hast Du es mal in Assembler versucht?
1 | clrf trisd ; PORT D hat nur 5 Bit |
2 | clrf trise |
3 | |
4 | movlw 0xAA |
5 | movwf portd |
6 | movlw 0x02 ; PORT E hat nur 4 bit, RE3 ist immer input |
7 | movwf porte |
stephan schrieb: > Hast Du es mal in Assembler versucht? > > clrf trisd ; PORT D hat nur 5 Bit > clrf trise > > movlw 0xAA > movwf portd > movlw 0x02 ; PORT E hat nur 4 bit, RE3 ist immer input > movwf porte nein habs in assembler noch nicht versucht... --> kann kein Assembler! das dürfte das Problem nun wirklich nicht sein oder doch? dass PorTd und porte nur 4 bzw 5 bits haben ist mir bewusst. danke trotzdem mal für eure bisherige hilfe werd mir erstmal nen wurstsalat machen ;-)
Standartmäßig sind die Ports ja Inputs... Kannste denn wenigstens die Pegel von PORTEbits.RE1 z.B. lesen? Oder macht er da auch mucken? Hab im Übrigen auch nen 4550 da. Wenn Du mir Deinen Code/Hex schickst/hochlädtst schau ich morgen gerne mal nach! Blödsinn, vertan... ist der 2550 aber lad dennoch mal den Quelltext hoch... Vll kann ich was mit dem 16f877 rausbekommen...
Und noch was: Ein Blick ins Datenblatt könnte helfen... Mach mal folgendes vorm Einstellen des TRIS-Registers: ADCON1 = 0x0A; CMCON = 0x07; Dann müsste PORTE digitaler I/O sein...
Tajas R. schrieb: > ADCON1 = 0x0A; > CMCON = 0x07; > > Dann müsste PORTE digitaler I/O sein... hilft auch nicht weiter leider!!
1 | #define LED1_TRIS TRISEbits.TRISE0 // Ref E0
|
2 | #define LED1_IO LATEbits.LATE0
|
3 | #define LED2_TRIS TRISEbits.TRISE1 // Ref E1
|
4 | #define LED2_IO LATEbits.LATE1
|
5 | #define LED3_TRIS TRISEbits.TRISE2 // Ref E2
|
6 | #define LED3_IO LATEbits.LATE2
|
7 | |
8 | void init_power_outputs(void){ |
9 | ADCON1 = 0b00001111; //SET all Analogchannel to Digital I/O |
10 | CMCON = 0b00000111; |
11 | SPPCONbits.SPPEN = 0; |
12 | LED1_TRIS = 0; //Make LED PINS as OUTPUTPINS |
13 | LED2_TRIS = 0; //Make LED PINS as OUTPUTPINS |
14 | LED3_TRIS = 0; //Make LED PINS as OUTPUTPINS |
15 | LED1_IO = 0; //Switch OFF LED |
16 | LED2_IO = 0; //Switch OFF LED |
17 | LED3_IO = 0; //Switch OFF LED |
18 | |
19 | }
|
20 | |
21 | int main(){ |
22 | init_power_outputs(); |
23 | LED1_IO = 1; //Switch On LED |
24 | LED2_IO = 1; //Switch On LED |
25 | LED3_IO = 1; //Switch On LED |
26 | while(1); |
27 | |
28 | }
|
hier mein Code in abgekürzter Form... soll ja bloß die blöde LED angehen
Jungs Problem gelöst. Jungs Problem gelöst. Jungs Problem gelöst. Jungs Problem gelöst. YEEHAW.... ..... mensch ich programmiere den PIC18LF4550 über den dedicaded Programmierport. Wenn man laut Datenblatt den PIN NC/ICPORTS nicht auf VDD zieht. wird der PIC18 als 28 pinniges Device emuliert. bei mir hing der in der Luft besten dank den Helfern.....
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.