Pic, bit-hantering i XC8.

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
BJ
Inlägg: 8218
Blev medlem: 11 april 2007, 08:14:53
Ort: En_stad

Re: Pic, bit-hantering i XC8.

Inlägg av BJ »

Tack. :tumupp:
BJ
Inlägg: 8218
Blev medlem: 11 april 2007, 08:14:53
Ort: En_stad

Re: Pic, bit-hantering i XC8.

Inlägg av BJ »

En ny fråga...

Jag vill titta om timer 0 har räknat runt,
och provade med:

if (INTCON.TMR0IF == 1)

men det tyckte inte kompilatorn var rätt sätt.

struct/union required

Så hur gör man? Jag vill gärna ha kvar ==
om det går. Jag tycker det är lättast att läsa då.

Rättelse: IE --> IF. (Felskrivning.)
Senast redigerad av BJ 10 januari 2019, 12:44:56, redigerad totalt 1 gång.
Användarvisningsbild
Icecap
Inlägg: 26136
Blev medlem: 10 januari 2005, 14:52:15
Ort: Aabenraa, Danmark

Re: Pic, bit-hantering i XC8.

Inlägg av Icecap »

Är du säker på att INTCON ska vara med?

EDIT; och ja, som nästa skribent skriver är IE flaggan bara 1 om interrupten är enablad medan IF anger att en interrupt väntar.
Senast redigerad av Icecap 10 januari 2019, 12:44:01, redigerad totalt 2 gånger.
Användarvisningsbild
Magnus_K
EF Sponsor
Inlägg: 5854
Blev medlem: 4 januari 2010, 17:53:25
Ort: Skogen mellan Uppsala-Gävle

Re: Pic, bit-hantering i XC8.

Inlägg av Magnus_K »

Så här från huvudet så kollar din if-sats om du satt timerns interrup enable eller inte.
När timern rullar runt så sätts en flagga, dvs "F" på slutet.
Kolla i databladet vad timer-flaggan kallas och använd den istället.
BJ
Inlägg: 8218
Blev medlem: 11 april 2007, 08:14:53
Ort: En_stad

Re: Pic, bit-hantering i XC8.

Inlägg av BJ »

Jag hade skrivit fel. IE skulle vara IF.

Och INTCON skulle inte vara med,
utan bitens namn skulle tydligen stå för sig själv.

Tack. :tumupp:
BJ
Inlägg: 8218
Blev medlem: 11 april 2007, 08:14:53
Ort: En_stad

Re: Pic, bit-hantering i XC8.

Inlägg av BJ »

Port-bitarna kan jag ändra i c,
men hur ändrar man tris-bitar?

Jag har definierat

Kod: Markera allt

  #define tris_max_7219__cs    TRISCbits.RC6
  #define tris_max_7219_data   TRISCbits.RC5
  #define tris_max_7219_klocka TRISCbits.RC4
och försöker

Kod: Markera allt

  tris_max_7219__cs    = 0;
  tris_max_7219_data   = 0;
  tris_max_7219_klocka = 0;
Då klagar kompilatorn på rad nummer 2 och 3
i det andra stycket:

15 not a member of the struct/union ""
Error [182] ... illegal conversion between types
int -> volatile union S303
(908) exit status = 1

Vad gör jag för fel?
Är det bitarnas namn jag har skrivit fel?
I så fall, vad är/var hittar jag det rätta namnet?


En annan fråga:
Om en funktion tar emot ett argument,
kan man göra vad man vill med det då,
precis som om det hade varit en lokal
variabel?
Användarvisningsbild
Icecap
Inlägg: 26136
Blev medlem: 10 januari 2005, 14:52:15
Ort: Aabenraa, Danmark

Re: Pic, bit-hantering i XC8.

Inlägg av Icecap »

Första frågan: Vilken PIC använder du? Med den information kan man gå ner i include-filen och kolla lite.

Andra frågan: Ja! Det avsätts plats i stacken till den, värdet överföras och funktionen kallas - så effekten är att det är en lokal variabel.
Användarvisningsbild
sodjan
EF Sponsor
Inlägg: 43176
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping
Kontakt:

Re: Pic, bit-hantering i XC8.

Inlägg av sodjan »

Är det inte PIC18F4550 som du använder?
Du har:

Kod: Markera allt

  #define tris_max_7219__cs    TRISCbits.RC6
  #define tris_max_7219_data   TRISCbits.RC5
  #define tris_max_7219_klocka TRISCbits.RC4
Notera att pic18f4550.h har detta:

Kod: Markera allt

// Register: LATC
#define LATC LATC
extern volatile unsigned char           LATC                __at(0xF8B);
#ifndef _LIB_BUILD
asm("LATC equ 0F8Bh");
#endif
// bitfield definitions
typedef union {
    struct {
        unsigned LATC0                  :1;
        unsigned LATC1                  :1;
        unsigned LATC2                  :1;
        unsigned                        :3;
        unsigned LATC6                  :1;
        unsigned LATC7                  :1;
    };
    struct {
        unsigned LC0                    :1;
        unsigned LC1                    :1;
        unsigned LC2                    :1;
        unsigned                        :3;
        unsigned LC6                    :1;
        unsigned LC7                    :1;
    };
} LATCbits_t;
extern volatile LATCbits_t LATCbits __at(0xF8B);
Du får kolla varför inte LC4 och LC5 är definierade...
BJ
Inlägg: 8218
Blev medlem: 11 april 2007, 08:14:53
Ort: En_stad

Re: Pic, bit-hantering i XC8.

Inlägg av BJ »

Icecap: Okej. :)

sodjan: Jo, det är det.

Du kanske tänkte på trisc?
Men det ser ungefär likadant ut där.

Kod: Markera allt

typedef union {
    struct {
        unsigned TRISC0                 :1;
        unsigned TRISC1                 :1;
        unsigned TRISC2                 :1;
        unsigned                        :3;
        unsigned TRISC6                 :1;
        unsigned TRISC7                 :1;
    };
    struct {
        unsigned RC0                    :1;
        unsigned RC1                    :1;
        unsigned RC2                    :1;
        unsigned                        :3;
        unsigned RC6                    :1;
        unsigned RC7                    :1;
    };
    struct {
        unsigned                        :3;
        unsigned TRISC3                 :1;
    };
} TRISCbits_t;
extern volatile TRISCbits_t TRISCbits @ 0xF94;
Jag får läsa mer om varför.
BJ
Inlägg: 8218
Blev medlem: 11 april 2007, 08:14:53
Ort: En_stad

Re: Pic, bit-hantering i XC8.

Inlägg av BJ »

Jaha, det har med usb att göra:

Unlike other PORTC pins, RC4 and RC5 do not have
TRISC bits associated with them. As digital ports, they
can only function as digital inputs.

Då lärde jag mig något nytt.
Får byta till andra utgångar.
BJ
Inlägg: 8218
Blev medlem: 11 april 2007, 08:14:53
Ort: En_stad

Re: Pic, bit-hantering i XC8.

Inlägg av BJ »

Med andra portbitar fungerade det bättre. :)

Tack för hjälpen.
Användarvisningsbild
sodjan
EF Sponsor
Inlägg: 43176
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping
Kontakt:

Re: Pic, bit-hantering i XC8.

Inlägg av sodjan »

Ja, jag blandade ihop LAT och TRIS, men poängen var den samma,
du försökte använda funktioner som inte finns där...
BJ
Inlägg: 8218
Blev medlem: 11 april 2007, 08:14:53
Ort: En_stad

Re: Pic, bit-hantering i XC8.

Inlägg av BJ »

Okej.
Skriv svar