Форум Микро-Чип
Поиск и заказ электронных компонентов
 

Вернуться   Форум Микро-Чип > Продукция MICROCHIP

Продукция MICROCHIP Технические вопросы по всей продукции Microchip

Ответ
 
Опции темы Опции просмотра
Старый 11.08.2020, 10:24   #1
DmitrijVDN
Senior Member
 
Регистрация: 09.04.2010
Сообщений: 868
Вес репутации: 1709/64
DmitrijVDN has a brilliant futureDmitrijVDN has a brilliant futureDmitrijVDN has a brilliant futureDmitrijVDN has a brilliant futureDmitrijVDN has a brilliant futureDmitrijVDN has a brilliant futureDmitrijVDN has a brilliant futureDmitrijVDN has a brilliant futureDmitrijVDN has a brilliant futureDmitrijVDN has a brilliant futureDmitrijVDN has a brilliant future
По умолчанию Видимость переменой в Си

уважаемые подскажите че делаю не так?
в main.c
объявляю структуру для генерации флагов в прерывании
Код:
typedef struct  {
  unsigned FL1MS : 1;
  unsigned FL10MS : 1;
  unsigned  : 1;
  unsigned : 1;
  unsigned : 1;
  unsigned : 1;
  unsigned : 1;
  unsigned FL1SEC : 1;
}FLAG_TYPE ;

 volatile FLAG_TYPE flag;
в модуле
Код:
/***********************************************************************
 *
 *  File:           solmode.c
 *
 **********************************************************************/
//*********************************************************************  
//      Includes
//*********************************************************************
#include <pic.h>
#include <htc.h>
#include "solmode.h"
#include "init_mk.h"
#include "buttons.h"


extern volatile FLAG_TYPE flag;
//*********************************************************************
//*******************************************************
//
//*******************************************************
void DelayTime (unsigned int  ucCauntTime)
{
    while (ucCauntTime)
    {
        if(!(m_Buttons.uiPressed&(1<<15)))
        {PORTSOL=0;    return;}
        if(flag.FL1MS)
        {
            flag.FL1MS=0;
            ucCauntTime--;
        }
    }    
}
компилятор вываливает ошибки
Код:
Warning [374] D:\MPLAB_WORK\16F887_FT11\solmode.c; 17.27 missing basic type; int assumed
Error   [372] D:\MPLAB_WORK\16F887_FT11\solmode.c; 17.27 "," expected
Error   [196] D:\MPLAB_WORK\16F887_FT11\solmode.c; 28.14 struct/union required
Error   [196] D:\MPLAB_WORK\16F887_FT11\solmode.c; 30.11 struct/union required
Error   [196] D:\MPLAB_WORK\16F887_FT11\solmode.c; 44.14 struct/union required
Error   [196] D:\MPLAB_WORK\16F887_FT11\solmode.c; 46.11 struct/union required
(908) exit status = 1

********** Build failed! **********
че делаю не так? что нужно что бы структура была видна в модуле?
DmitrijVDN вне форума   Ответить с цитированием
Старый 11.08.2020, 10:29   #2
SergP01
Senior Member
 
Аватар для SergP01
 
Регистрация: 09.11.2012
Адрес: SPB
Возраст: 52
Сообщений: 1,930
Вес репутации: 923/57
SergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to behold
По умолчанию Re: Видимость переменой в Си

наверное тип нам указать Union
SergP01 вне форума   Ответить с цитированием
Старый 11.08.2020, 10:50   #3
DmitrijVDN
Senior Member
 
Регистрация: 09.04.2010
Сообщений: 868
Вес репутации: 1709/64
DmitrijVDN has a brilliant futureDmitrijVDN has a brilliant futureDmitrijVDN has a brilliant futureDmitrijVDN has a brilliant futureDmitrijVDN has a brilliant futureDmitrijVDN has a brilliant futureDmitrijVDN has a brilliant futureDmitrijVDN has a brilliant futureDmitrijVDN has a brilliant futureDmitrijVDN has a brilliant futureDmitrijVDN has a brilliant future
По умолчанию Re: Видимость переменой в Си

помогло, а можете пояснить почему так, ведь на структуру из соседнего модуля m_Buttons.uiPressed не ругается
DmitrijVDN вне форума   Ответить с цитированием
Старый 11.08.2020, 11:57   #4
SergP01
Senior Member
 
Аватар для SergP01
 
Регистрация: 09.11.2012
Адрес: SPB
Возраст: 52
Сообщений: 1,930
Вес репутации: 923/57
SergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to behold
По умолчанию Re: Видимость переменой в Си

Цитата:
Сообщение от DmitrijVDN Посмотреть сообщение
помогло, а можете пояснить почему так, ведь на структуру из соседнего модуля m_Buttons.uiPressed не ругается
я не знаю, что такое m_B... но вы его как переменную проверяете... зачем тут ругаться...
SergP01 вне форума   Ответить с цитированием
Старый 11.08.2020, 12:12   #5
besogon
Senior Member
 
Регистрация: 12.07.2012
Возраст: 33
Сообщений: 2,461
Вес репутации: 4677/101
besogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond repute
По умолчанию Re: Видимость переменой в Си

DmitrijVDN
тип объявляется в заголовке.
заголовок подключается.
экземпляр объявляется в C файле.
в особых случаях в заголовке можно объявлять extern экземляра, если есть уверенность, что не будет путаницы с этим.

я так делал и у меня не возникало проблем.
besogon вне форума   Ответить с цитированием
Старый 11.08.2020, 16:39   #6
GoshaGrek
Senior Member
 
Регистрация: 29.09.2011
Сообщений: 317
Вес репутации: 495/40
GoshaGrek is a glorious beacon of lightGoshaGrek is a glorious beacon of lightGoshaGrek is a glorious beacon of lightGoshaGrek is a glorious beacon of lightGoshaGrek is a glorious beacon of light
По умолчанию Re: Видимость переменой в Си

Цитата:
Сообщение от DmitrijVDN Посмотреть сообщение
уважаемые подскажите че делаю не так?
в main.c
объявляю структуру для генерации флагов в прерывании
Код:
typedef struct  {
  unsigned FL1MS : 1;
  unsigned FL10MS : 1;
  unsigned  : 1;
  unsigned : 1;
  unsigned : 1;
  unsigned : 1;
  unsigned : 1;
  unsigned FL1SEC : 1;
}FLAG_TYPE ;

 volatile FLAG_TYPE flag;
в модуле
Код:
/***********************************************************************
 *
 *  File:           solmode.c
 *
 **********************************************************************/
//*********************************************************************  
//      Includes
//*********************************************************************
#include <pic.h>
#include <htc.h>
#include "solmode.h"
#include "init_mk.h"
#include "buttons.h"


extern volatile FLAG_TYPE flag;
//*********************************************************************
//*******************************************************
//
//*******************************************************
void DelayTime (unsigned int  ucCauntTime)
{
    while (ucCauntTime)
    {
        if(!(m_Buttons.uiPressed&(1<<15)))
        {PORTSOL=0;    return;}
        if(flag.FL1MS)
        {
            flag.FL1MS=0;
            ucCauntTime--;
        }
    }    
}
компилятор вываливает ошибки
Код:
Warning [374] D:\MPLAB_WORK\16F887_FT11\solmode.c; 17.27 missing basic type; int assumed
Error   [372] D:\MPLAB_WORK\16F887_FT11\solmode.c; 17.27 "," expected
Error   [196] D:\MPLAB_WORK\16F887_FT11\solmode.c; 28.14 struct/union required
Error   [196] D:\MPLAB_WORK\16F887_FT11\solmode.c; 30.11 struct/union required
Error   [196] D:\MPLAB_WORK\16F887_FT11\solmode.c; 44.14 struct/union required
Error   [196] D:\MPLAB_WORK\16F887_FT11\solmode.c; 46.11 struct/union required
(908) exit status = 1

********** Build failed! **********
че делаю не так? что нужно что бы структура была видна в модуле?
а чего не сделать проще

Код:
struct { 
unsigned b0  : 1; 
unsigned b1  : 1;
unsigned b2  : 1;
unsigned b3  : 1; 
unsigned b4  : 1; 
unsigned b5  : 1; 
unsigned b6  : 1;
unsigned b7  : 1;
 } flags;

#define  FL1MC  flags.b0 
#define  FL10MC  flags.b1
GoshaGrek вне форума   Ответить с цитированием
Старый 11.08.2020, 18:20   #7
DmitrijVDN
Senior Member
 
Регистрация: 09.04.2010
Сообщений: 868
Вес репутации: 1709/64
DmitrijVDN has a brilliant futureDmitrijVDN has a brilliant futureDmitrijVDN has a brilliant futureDmitrijVDN has a brilliant futureDmitrijVDN has a brilliant futureDmitrijVDN has a brilliant futureDmitrijVDN has a brilliant futureDmitrijVDN has a brilliant futureDmitrijVDN has a brilliant futureDmitrijVDN has a brilliant futureDmitrijVDN has a brilliant future
По умолчанию Re: Видимость переменой в Си

не знаю, так не пробовал.
DmitrijVDN вне форума   Ответить с цитированием
Старый 11.08.2020, 22:59   #8
GoshaGrek
Senior Member
 
Регистрация: 29.09.2011
Сообщений: 317
Вес репутации: 495/40
GoshaGrek is a glorious beacon of lightGoshaGrek is a glorious beacon of lightGoshaGrek is a glorious beacon of lightGoshaGrek is a glorious beacon of lightGoshaGrek is a glorious beacon of light
По умолчанию Re: Видимость переменой в Си

Цитата:
Сообщение от DmitrijVDN Посмотреть сообщение
не знаю, так не пробовал.
У меня так работает. Компилятор ХС8 1.34 и Hi-TECH 9.82
GoshaGrek вне форума   Ответить с цитированием
Старый 12.08.2020, 08:08   #9
varostov
Senior Member
 
Аватар для varostov
 
Регистрация: 14.11.2007
Адрес: Ростов-на-Дону
Возраст: 55
Сообщений: 171
Вес репутации: 535/54
varostov is a glorious beacon of lightvarostov is a glorious beacon of lightvarostov is a glorious beacon of lightvarostov is a glorious beacon of lightvarostov is a glorious beacon of lightvarostov is a glorious beacon of light
По умолчанию Re: Видимость переменой в Си

В древнем файле GenericTypeDefs от Microchip усё сделано до нас:
Код:
/*Compiler:        MPLAB C Compilers for PIC18, PIC24, dsPIC, & PIC32
                  Hi-Tech PICC PRO, Hi-Tech PICC18 PRO*/

typedef union
{
    UINT8 Val;
    struct
    {
        __EXTENSION UINT8 b0:1;
        __EXTENSION UINT8 b1:1;
        __EXTENSION UINT8 b2:1;
        __EXTENSION UINT8 b3:1;
        __EXTENSION UINT8 b4:1;
        __EXTENSION UINT8 b5:1;
        __EXTENSION UINT8 b6:1;
        __EXTENSION UINT8 b7:1;
    } bits;
} UINT8_VAL, UINT8_BITS;

typedef union 
{
    UINT16 Val;
    UINT8 v[2] __PACKED;
    struct __PACKED
    {
        UINT8 LB;
        UINT8 HB;
    } byte;
    struct __PACKED
    {
        __EXTENSION UINT8 b0:1;
        __EXTENSION UINT8 b1:1;
        __EXTENSION UINT8 b2:1;
        __EXTENSION UINT8 b3:1;
        __EXTENSION UINT8 b4:1;
        __EXTENSION UINT8 b5:1;
        __EXTENSION UINT8 b6:1;
        __EXTENSION UINT8 b7:1;
        __EXTENSION UINT8 b8:1;
        __EXTENSION UINT8 b9:1;
        __EXTENSION UINT8 b10:1;
        __EXTENSION UINT8 b11:1;
        __EXTENSION UINT8 b12:1;
        __EXTENSION UINT8 b13:1;
        __EXTENSION UINT8 b14:1;
        __EXTENSION UINT8 b15:1;
    } bits;
} UINT16_VAL, UINT16_BITS;

/* 24-bit type only available on C18 */
#if defined(__18CXX)
typedef union
{
    UINT24 Val;
    UINT8 v[3] __PACKED;
    struct __PACKED
    {
        UINT8 LB;
        UINT8 HB;
        UINT8 UB;
    } byte;
    struct __PACKED
    {
        __EXTENSION UINT8 b0:1;
        __EXTENSION UINT8 b1:1;
        __EXTENSION UINT8 b2:1;
        __EXTENSION UINT8 b3:1;
        __EXTENSION UINT8 b4:1;
        __EXTENSION UINT8 b5:1;
        __EXTENSION UINT8 b6:1;
        __EXTENSION UINT8 b7:1;
        __EXTENSION UINT8 b8:1;
        __EXTENSION UINT8 b9:1;
        __EXTENSION UINT8 b10:1;
        __EXTENSION UINT8 b11:1;
        __EXTENSION UINT8 b12:1;
        __EXTENSION UINT8 b13:1;
        __EXTENSION UINT8 b14:1;
        __EXTENSION UINT8 b15:1;
        __EXTENSION UINT8 b16:1;
        __EXTENSION UINT8 b17:1;
        __EXTENSION UINT8 b18:1;
        __EXTENSION UINT8 b19:1;
        __EXTENSION UINT8 b20:1;
        __EXTENSION UINT8 b21:1;
        __EXTENSION UINT8 b22:1;
        __EXTENSION UINT8 b23:1;
    } bits;
} UINT24_VAL, UINT24_BITS;
#endif

typedef union
{
    UINT32 Val;
    UINT16 w[2] __PACKED;
    UINT8  v[4] __PACKED;
    struct __PACKED
    {
        UINT16 LW;
        UINT16 HW;
    } word;
    struct __PACKED
    {
        UINT8 LB;
        UINT8 HB;
        UINT8 UB;
        UINT8 MB;
    } byte;
    struct __PACKED
    {
        UINT16_VAL low;
        UINT16_VAL high;
    }wordUnion;
    struct __PACKED
    {
        __EXTENSION UINT8 b0:1;
        __EXTENSION UINT8 b1:1;
        __EXTENSION UINT8 b2:1;
        __EXTENSION UINT8 b3:1;
        __EXTENSION UINT8 b4:1;
        __EXTENSION UINT8 b5:1;
        __EXTENSION UINT8 b6:1;
        __EXTENSION UINT8 b7:1;
        __EXTENSION UINT8 b8:1;
        __EXTENSION UINT8 b9:1;
        __EXTENSION UINT8 b10:1;
        __EXTENSION UINT8 b11:1;
        __EXTENSION UINT8 b12:1;
        __EXTENSION UINT8 b13:1;
        __EXTENSION UINT8 b14:1;
        __EXTENSION UINT8 b15:1;
        __EXTENSION UINT8 b16:1;
        __EXTENSION UINT8 b17:1;
        __EXTENSION UINT8 b18:1;
        __EXTENSION UINT8 b19:1;
        __EXTENSION UINT8 b20:1;
        __EXTENSION UINT8 b21:1;
        __EXTENSION UINT8 b22:1;
        __EXTENSION UINT8 b23:1;
        __EXTENSION UINT8 b24:1;
        __EXTENSION UINT8 b25:1;
        __EXTENSION UINT8 b26:1;
        __EXTENSION UINT8 b27:1;
        __EXTENSION UINT8 b28:1;
        __EXTENSION UINT8 b29:1;
        __EXTENSION UINT8 b30:1;
        __EXTENSION UINT8 b31:1;
    } bits;
} UINT32_VAL;
И т.д. и т.п. Под MPLABC30 и XC16 прекрасно работает.
varostov вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ищу литературу по Си Mario Общетехнические вопросы 16 20.03.2014 14:34
Вызов финкции Си из ассемблера Maguark Вопросы начинающих 0 10.01.2014 13:09
Расчет времени выполнения команд при использовании Си. rosin Продукция MICROCHIP 10 22.09.2009 14:11
Вопрос по RMW операциям на Си, PIC18 Максим2008 Продукция MICROCHIP 6 30.04.2009 16:12
Из асма в Си Mic54 Вопросы начинающих 30 24.11.2008 18:42


Часовой пояс GMT +3, время: 06:47.


Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd. Перевод: zCarot