www.mikrocontroller.net

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


Autor: Stephan .. (Firma: keine) (malibow)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Manuel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Stephan .. (Firma: keine) (malibow)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
sorry hier mein Code bei allen anderen registern funktionierts.

#define LED1_TRIS      (TRISEbits.TRISE0)  // Ref E0
#define LED1_IO        (LATEbits.LATE0)
#define LED2_TRIS      (TRISEbits.TRISE1)  // Ref E1
#define LED2_IO        (LATEbits.LATE1)
#define LED3_TRIS      (TRISEbits.TRISE2)  // Ref E2
#define LED3_IO        (LATEbits.LATE2)

  ADCON1 = 0b1111;    //SET all Analogchannel D I/O
  LED1_TRIS = 1;      //Make LED PINS as INPUTPINS
  LED2_TRIS = 1;      //Make LED PINS as INPUTPINS
  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?

Autor: Stephan .. (Firma: keine) (malibow)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Manuel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Manuel (Gast)
Datum:

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

Autor: Stephan .. (Firma: keine) (malibow)
Datum:

Bewertung
0 lesenswert
nicht 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....

Autor: Manuel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Und dann kann man die SMD 18f4550 auch auf 18f2550 "Simulation" stellen.

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
#define LED1_TRIS      (TRISEbits.TRISE0)  // Ref E0

Versuch doch mal

#define LED1_TRIS      TRISEbits.TRISE0  // Ref E0

Autor: Manuel (Gast)
Datum:

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

Autor: Manuel (Gast)
Datum:

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

Autor: Stephan .. (Firma: keine) (malibow)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Stephan .. (Firma: keine) (malibow)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Stephan .. (Firma: keine) (malibow)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Manuel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das 18f4550_g.lkr sollte das richtige sein

Autor: Manuel (Gast)
Datum:

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

Autor: Stephan .. (Firma: keine) (malibow)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Manuel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Bernd Rüter (Firma: Promaxx.net) (bigwumpus)
Datum:

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

Autor: Stephan .. (Firma: keine) (malibow)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
naja habs hinzugefügt hat aber nichts gebracht.....

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

Autor: Stephan .. (Firma: keine) (malibow)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: MegaGünther (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Stephan .. (Firma: keine) (malibow)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: MegaGünther (Gast)
Datum:

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

TRISE=0b111;

?

Autor: Stephan .. (Firma: keine) (malibow)
Datum:

Bewertung
0 lesenswert
nicht 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....

Autor: Mario (Gast)
Datum:

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

Autor: Michael H. (morph1)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
also es liegt meiner meinung nach definitiv am SPP aka PSP

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

Autor: MegaGünther (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
SSP kannst du doch im SSPCON1 Register mit SSPEN 
aktivieren/deaktivieren...

Autor: Stephan .. (Firma: keine) (malibow)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Michael H. (morph1)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
SPP!!!!

REGISTER 18-1: SPPCON: SPP CONTROL REGISTER

SPPCONbits.SPPEN = 0;

das allein sollte es tun

Autor: Stephan .. (Firma: keine) (malibow)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Michael H. (morph1)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
SPPCONbits.SPPOWN = 0;

das ebenfalls dazu? obwohls keine wirkung haben sollte

Autor: Stephan .. (Firma: keine) (malibow)
Datum:

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

ist ebenfalls 0 --> hat auch keien Auswirkung

Autor: Michael H. (morph1)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
aja vor deinen TRIS-aktionen bitte :)

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Bernd Rüter (Firma: Promaxx.net) (bigwumpus)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Stephan .. (Firma: keine) (malibow)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: MegaGünther (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 :)

Autor: Stephan .. (Firma: keine) (malibow)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
traurig aber wahr....

neuer PIC keine Änderung....

gibts noch vorschläge oder seids müde?

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Stephan .. (Firma: keine) (malibow)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: stephan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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


Autor: Stephan .. (Firma: keine) (malibow)
Datum:

Bewertung
0 lesenswert
nicht 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 ;-)

Autor: Tajas R. (tony)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Tajas R. (tony)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Stephan .. (Firma: keine) (malibow)
Datum:

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

hilft auch nicht weiter leider!!

Autor: Stephan .. (Firma: keine) (malibow)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
#define LED1_TRIS      TRISEbits.TRISE0  // Ref E0
#define LED1_IO        LATEbits.LATE0
#define LED2_TRIS      TRISEbits.TRISE1  // Ref E1
#define LED2_IO        LATEbits.LATE1
#define LED3_TRIS      TRISEbits.TRISE2  // Ref E2
#define LED3_IO        LATEbits.LATE2

void init_power_outputs(void){
  ADCON1 = 0b00001111;  //SET all Analogchannel to Digital I/O
  CMCON = 0b00000111;
  SPPCONbits.SPPEN = 0;
  LED1_TRIS = 0;      //Make LED PINS as OUTPUTPINS
  LED2_TRIS = 0;      //Make LED PINS as OUTPUTPINS
  LED3_TRIS = 0;      //Make LED PINS as OUTPUTPINS
  LED1_IO = 0;      //Switch OFF LED
  LED2_IO = 0;      //Switch OFF LED
  LED3_IO = 0;      //Switch OFF LED

}

int main(){
  init_power_outputs();
  LED1_IO = 1;      //Switch On LED
  LED2_IO = 1;      //Switch On LED
  LED3_IO = 1;      //Switch On LED
while(1);

}

hier mein Code in abgekürzter Form... soll ja bloß die blöde LED angehen

Autor: Stephan .. (Firma: keine) (malibow)
Datum:

Bewertung
0 lesenswert
nicht 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.....

Autor: Manuel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jo, hab ich doch gestern schon geschrieben.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.