Forum: Mikrocontroller und Digitale Elektronik PIC18F4550 kann PORTE und PORTD nicht beschreiben?


von Stephan .. (Firma: keine) (malibow)


Lesenswert?

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

von Manuel (Gast)


Lesenswert?

Nö, hört sich eher an als hättest Du den IC mit nem Code für nen 18f2550 
beschrieben... Prüf das mal...

von holger (Gast)


Lesenswert?

>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.

von Stephan .. (Firma: keine) (malibow)


Lesenswert?

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?

von Stephan .. (Firma: keine) (malibow)


Lesenswert?

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

von Manuel (Gast)


Lesenswert?

Was nimmst Du als Debugger? Im  Simulator hat das bei mir auch schon 
nicht funiktioniert... Sowie auch die Timer und ähnliches nicht richtig 
funktionieren.

von Manuel (Gast)


Lesenswert?

Das Linker-File könnte auch noch Einfluß haben. Bin mir aber nicht 100% 
sicher.

von Stephan .. (Firma: keine) (malibow)


Lesenswert?

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....

von Manuel (Gast)


Lesenswert?

Und dann kann man die SMD 18f4550 auch auf 18f2550 "Simulation" stellen.

von holger (Gast)


Lesenswert?

#define LED1_TRIS      (TRISEbits.TRISE0)  // Ref E0

Versuch doch mal

#define LED1_TRIS      TRISEbits.TRISE0  // Ref E0

von Manuel (Gast)


Lesenswert?

Flasche Includes könnten auch noch Einfluß haben. Ich hoffe mir fällt 
jetzt nicht noch mehr ein :-)

von Manuel (Gast)


Lesenswert?

Ich hatte auch mal Samples bei denen ein Teil der Hardware nicht 
funktioniert hatte . Waren aber QFN-Packages.

von Stephan .. (Firma: keine) (malibow)


Lesenswert?

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...

von Stephan .. (Firma: keine) (malibow)


Lesenswert?

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?

von Stephan .. (Firma: keine) (malibow)


Lesenswert?

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

von Manuel (Gast)


Lesenswert?

Das 18f4550_g.lkr sollte das richtige sein

von Manuel (Gast)


Lesenswert?

Nimm doch einfach ein Beispielprojekt für den 18f4550 und starte es. Die 
funktionieren auf jeden fall.

von Stephan .. (Firma: keine) (malibow)


Lesenswert?

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.

von Manuel (Gast)


Lesenswert?

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.

von Bernd R. (Firma: Promaxx.net) (bigwumpus)


Lesenswert?

Das SSP-Modul im 18F4550 wird aber nicht benutzt ?
USB ?

von Stephan .. (Firma: keine) (malibow)


Lesenswert?

naja habs hinzugefügt hat aber nichts gebracht.....

sonst nochn vorschlag?
PORTA PORTB PORTC funktionieren.... nur die leds auf porte wollen nicht 
angehen...

von Stephan .. (Firma: keine) (malibow)


Lesenswert?

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...

von MegaGünther (Gast)


Lesenswert?

"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?

von Stephan .. (Firma: keine) (malibow)


Lesenswert?

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

von MegaGünther (Gast)


Lesenswert?

bleibt zwar immer das selbe aber hast du schon mal versucht, das 
Register direkt zu beschreiben:

TRISE=0b111;

?

von Stephan .. (Firma: keine) (malibow)


Lesenswert?

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....

von Mario (Gast)


Lesenswert?

Hängen die LEDs direkt am PORTD oder ist evtl. ein Latch dazwischen?

von Michael H. (morph1)


Lesenswert?

also es liegt meiner meinung nach definitiv am SPP aka PSP

ich würde hier weitersuchen, irgendwie aktivierst du es wohl aus 
versehen

von MegaGünther (Gast)


Lesenswert?

SSP kannst du doch im SSPCON1 Register mit SSPEN 
aktivieren/deaktivieren...

von Stephan .. (Firma: keine) (malibow)


Lesenswert?

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...

von Michael H. (morph1)


Lesenswert?

SPP!!!!

REGISTER 18-1: SPPCON: SPP CONTROL REGISTER

SPPCONbits.SPPEN = 0;

das allein sollte es tun

von Stephan .. (Firma: keine) (malibow)


Lesenswert?

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

von Michael H. (morph1)


Lesenswert?

SPPCONbits.SPPOWN = 0;

das ebenfalls dazu? obwohls keine wirkung haben sollte

von Stephan .. (Firma: keine) (malibow)


Lesenswert?

Michael H. schrieb:
> PPCONbits.SPPOWN = 0;
>
> das ebenfalls dazu? obwohls keine wirkung haben sollte

ist ebenfalls 0 --> hat auch keien Auswirkung

von Michael H. (morph1)


Lesenswert?

aja vor deinen TRIS-aktionen bitte :)

von holger (Gast)


Lesenswert?

>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.

von Bernd R. (Firma: Promaxx.net) (bigwumpus)


Lesenswert?

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.

von Stephan .. (Firma: keine) (malibow)


Lesenswert?

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

von MegaGünther (Gast)


Lesenswert?

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 :)

von Stephan .. (Firma: keine) (malibow)


Lesenswert?

traurig aber wahr....

neuer PIC keine Änderung....

gibts noch vorschläge oder seids müde?

von Falk B. (falk)


Lesenswert?

@  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

von Stephan .. (Firma: keine) (malibow)


Lesenswert?

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...

von stephan (Gast)


Lesenswert?

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

von Stephan .. (Firma: keine) (malibow)


Lesenswert?

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 ;-)

von Tony R. (tony)


Lesenswert?

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...

von Tony R. (tony)


Lesenswert?

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...

von Stephan .. (Firma: keine) (malibow)


Lesenswert?

Tajas R. schrieb:
> ADCON1 = 0x0A;
> CMCON = 0x07;
>
> Dann müsste PORTE digitaler I/O sein...

hilft auch nicht weiter leider!!

von Stephan .. (Firma: keine) (malibow)


Lesenswert?

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

von Stephan .. (Firma: keine) (malibow)


Lesenswert?

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.....

von Manuel (Gast)


Lesenswert?

Jo, hab ich doch gestern schon geschrieben.

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
Noch kein Account? Hier anmelden.