Forum: Mikrocontroller und Digitale Elektronik PIC18F26k22 PORTC Ausgang schaltet nicht


von Markus B. (pspracers)


Lesenswert?

Hallo,

Ich habe ein Problem mit dem Schalten der Ausgänge eines PIC18F26k22.
Speziell betrifft das die Pins C0 und C1. An sich möchte ich testweise 
lediglich den ganzen PORTC auf 1 schalten, das funktioniert aber aus mir 
unbekannten gründen nur für C2-C7?
Ich habe den Code zusammengekürzt
1
//CONTROLLER INITIALISATION
2
#pragma config FOSC = INTIO67
3
#pragma config PLLCFG = OFF
4
#pragma config WDTEN = OFF
5
#pragma config LVP = OFF
6
#pragma config MCLRE = INTMCLR
7
#pragma config CCP2MX = PORTB3
8
#pragma config P2BMX = PORTB5
9
#pragma config CCP3MX = PORTB5
10
#pragma config T3CMX = PORTB5
11
    
12
//ANALOG/DIGITAL IO
13
ANSELA = ANSELB = ANSELC = 0x00;
14
15
//IO-DIRECTION
16
TRISC = 0x00;
17
18
LATC = 0xFF;

Habe ich da eine Konfiguration übersehen?
Ich nutze MPLAB X 3.55 und den XC8 v1.44

Vielen Dank im Voraus!
LG Markus

EDIT: Datenblatt zum PIC: http://www.farnell.com/datasheets/1639160.pdf

: Bearbeitet durch User
von X4U (Gast)


Lesenswert?

Wenn ich bei PIC's die Ports konfiguriere schaue ich mir zuerst die 
Belegung an. Im Datenblatt ist die in Table-1.

RC0 RC1 teilen sich die Anschlusspins mit anderen Funktionen. Schalte 
die alles ab bzw. konfiguriere diese.

Gibt von Microchip auch ein tool was dir das alles generiert, geht aber 
hier vermutlich von Hand schneller.

von Teo D. (teoderix)


Lesenswert?

Markus B. schrieb:
> Habe ich da eine Konfiguration übersehen?
> Ich nutze MPLAB X 3.55 und den XC8 v1.44

"Windows/PIC Memory Views/Configurations Bits" nutzen und Code 
Generieren lassen. Dann über sieht man so schnell nichts...

Wird der PIC18F26k22 nicht vom "Code Configurator V3" Plugin 
unterstützt?!

von Markus B. (pspracers)


Lesenswert?

X4U schrieb:
> RC0 RC1 teilen sich die Anschlusspins mit anderen Funktionen. Schalte
> die alles ab bzw. konfiguriere diese.

ich dachte das mit
#pragma config CCP2MX = PORTB3
#pragma config P2BMX = PORTB5
#pragma config CCP3MX = PORTB5
#pragma config T3CMX = PORTB5
behoben zu haben, aber offenbar tuts das nicht :/

X4U schrieb:
> Gibt von Microchip auch ein tool was dir das alles generiert, geht aber
> hier vermutlich von Hand schneller.

Teo D. schrieb:
> Wird der PIC18F26k22 nicht vom "Code Configurator V3" Plugin
> unterstützt?!

Ja, wird er, ich habe den bisher aber noch nie benutzt, gerade aber 
ausprobiert und damit funktioneirt auch der der C0 und C1 Pin :)

Vielen Dank!

von X4U (Gast)


Lesenswert?

Markus B. schrieb:
> X4U schrieb:
>> RC0 RC1 teilen sich die Anschlusspins mit anderen Funktionen. Schalte
>> die alles ab bzw. konfiguriere diese.
>
> ich dachte das mit
> #pragma config CCP2MX = PORTB3
> #pragma config P2BMX = PORTB5
> #pragma config CCP3MX = PORTB5
> #pragma config T3CMX = PORTB5
> behoben zu haben, aber offenbar tuts das nicht :/
>

Da sind schon 6 Funktionen auf dem Pin wo auch C0 angeschlossen ist.

RC0 I/O ST Digital I/O.
P2B O CMOS Enhanced CCP1 PWM output.
T3CKI ST Timer3 clock input.
T3G I ST Timer3 external clock gate input.
T1CKI I ST Timer1 clock input.
SOSCO O — Secondary oscillator output.

du hast aber nur 4 Bits für C0 und C1 gesetzt.

Es müssen ja nicht alle im config sein, deshalb (oder trotzdem) streiche 
ich Sie alle ab und setze die configuration entsprechend.

Kann man natürlich auch mit dem Microchip tool machen, dann vergisst man 
aber oft die anderen Funktionen und braucht sie evtl. später.

von Markus B. (pspracers)


Lesenswert?

Schlussendlich hab war das Problem ein anderes. Im späteren 
Programmablauf hab ich noch eine alte PLIB Funktion "OpenTimer1" 
verwendet. Sobald die wieder drin war hat selbst das mit dem MCC 
erstellte Konfiguration nicht mehr funktioniert.
Das Problem habe ich dann durch direktes setzen von T1CON und T1GCON 
gelöst. Leider kann ich nicht nachsehen was "OpenTimer1" so macht und 
mir da in Port C reinpfuscht.

Lg Markus

von Volker S. (vloki)


Lesenswert?

Markus B. schrieb:
> Leider kann ich nicht nachsehen was "OpenTimer1" so macht und mir da in
> Port C reinpfuscht.

Warum kannst du nicht nachsehen?
Der Source code liegt doch im Installationsordner src oder so.
Im Extremfall würde auch ein Blick in das Disassembly oder auch das 
Programm Memory beim debuggen helfen...

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.