Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту


 
Опции темы
Непрочитано 28.04.2014, 12:39  
Boba_spb
Почётный гражданин KAZUS.RU
 
Регистрация: 08.06.2008
Сообщений: 1,394
Сказал спасибо: 4
Сказали Спасибо 183 раз(а) в 167 сообщении(ях)
Boba_spb на пути к лучшему
По умолчанию Re: Изучение PIC C Compiler(CCS C)

Сообщение от ‹VenoM› Посмотреть сообщение
Имеется массив
Массив чего? Правильно - укказателей.

А вот сумма указателей (Arr[1] + Arr[2]) - это для чего Вам?
Может Вам нужна сумма *Arr[1]+*Arr[2] ?
Реклама:
Boba_spb вне форума  
Непрочитано 28.04.2014, 13:00  
<VenoM>
Временная регистрация
 
Регистрация: 27.02.2012
Адрес: Николаев
Сообщений: 98
Сказал спасибо: 8
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
<VenoM> на пути к лучшему
По умолчанию Re: Изучение PIC C Compiler(CCS C)

Сообщение от Boba_spb Посмотреть сообщение
Может Вам нужна сумма *Arr[1]+*Arr[2] ?
Разумеется. Я пробовал так:
Код:
*Arr[11]=*(Arr[1]) + *(Arr[2]);
Error [1142] type mismatch in '+' operator
<VenoM> вне форума  
Непрочитано 28.04.2014, 13:10  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
dosikus на пути к лучшему
По умолчанию Re: Изучение PIC C Compiler(CCS C)

Указатели на флэш(ROM) головная боль CCS ...
__________________
Осторожно , злой кот
dosikus вне форума  
Непрочитано 28.04.2014, 13:46  
<VenoM>
Временная регистрация
 
Регистрация: 27.02.2012
Адрес: Николаев
Сообщений: 98
Сказал спасибо: 8
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
<VenoM> на пути к лучшему
По умолчанию Re: Изучение PIC C Compiler(CCS C)

не я ведь первый с такими вопросами

Выслушаю предложения.
<VenoM> вне форума  
Непрочитано 07.05.2014, 14:28  
<VenoM>
Временная регистрация
 
Регистрация: 27.02.2012
Адрес: Николаев
Сообщений: 98
Сказал спасибо: 8
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
<VenoM> на пути к лучшему
По умолчанию Re: Изучение PIC C Compiler(CCS C)

Беда в том, что PICC18 туговато определяет типы данных, отсюда и некомпил.
Приходится выкручиваться так, выполняя действия почленно:

Код:
//k - индекс лемента структуры
//j - индекс массива k-го элемента структуры

Arr[11].A[j]=Arr[k].A[j]+Arr[k-1].A[j];

Последний раз редактировалось <VenoM>; 07.05.2014 в 14:35.
<VenoM> вне форума  
Непрочитано 10.05.2014, 13:03  
CERGEI1982
Почётный гражданин KAZUS.RU
 
Аватар для CERGEI1982
 
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
CERGEI1982 на пути к лучшему
По умолчанию Re: Изучение PIC C Compiler(CCS C)

Так и не победил Multiple Compilation Unit.
Создал для примера проектик.В настройках поставил Multiple
Compilation Units,выбрал 3 файла main,project,ds18b20.

файл project.h
Код:
#include ‹16F628A.h›

#FUSES NOWDT                    //No Watch Dog Timer
#FUSES PUT                      //Power Up Timer
#FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O

#use delay(crystal=20000000,restart_wdt)

typedef unsigned int8 uint;
typedef unsigned int16 ulong;


//кнопки
struct knopka_setup {
                      uint open;      //контакт разомкнут
                      uint close;     //контакт замкнут
                    } struct_setup,*ykaz_setup;
                    


struct knopka_plus {
                        uint open;      //контакт разомкнут
                        uint close;     //контакт замкнут
                    } struct_plus,*ykaz_plus;
                    
struct knopka_minus {
                        uint open;      //контакт разомкнут
                        uint close;     //контакт замкнут
                    } struct_minus,*ykaz_minus; 
                    
//уставки
struct ystavki {
                  uint temper;
                  uint interval;
                  uint on_off;
               }struct_ystavki,*ykaz_ystavki;
файл project.c
Код:
#import(FILE=main.o)
#import(FILE=ds18b20.o)
файл main.c
Код:
#include "project.h"
#include "ds18b20.h"



void main()
{

   while(TRUE)
   {
      restart_wdt();
      output_low(PIN_A1);
   }

}
файл ds18b20.h пока пустой

файл ds18b20.c
Код:
#include "project.h"
#include "ds18b20.h"

//функции для работы с датчиком DS18B20
unsigned char OW_BUF[9];
//прототипы чтения crc
 void read_crc();               
char DLcrc8 (char *pData,char counterBytes );
char Check_Valid_Key(void);


#define PIN_DATA           PIN_A4

#define TRIS_MASKA_LOW     0xEE
#define TRIS_MASKA_HIGH    0xFE

void bcd(unsigned int hislo)
   {
      int temp_bcd,temp_bcd2;
      restart_wdt();
      // подсчет сотен,десяток и единиц
      sotni=hislo/100;
      temp_bcd2=sotni*100;
      temp_bcd=hislo-(temp_bcd2);
      dec=temp_bcd/10;
      edin=hislo-temp_bcd2-dec*10;
      restart_wdt();
   }
   
//сброс
void reset()
{
   restart_wdt();
   set_tris_A(TRIS_MASKA_LOW);
   output_low(PIN_DATA);
   delay_us(500);
   set_tris_A(TRIS_MASKA_HIGH); //перевод на вход output_1w
   //ожидание импульса присутствия от датчика
   delay_us(55);
   restart_wdt();
   //ждем пока датчик освободит шину
   delay_ms(1);
}

//выдача команды на DS18B20
void command_1w(int comm)
{
   int n;
   restart_wdt();
   //передача начинается с младшего бита
   for(n=0;n‹8;n++)
   {
      output_low(PIN_DATA);
      if(comm&0x01)
          output_high(PIN_DATA);
      delay_us(60);
      set_tris_A(TRIS_MASKA_HIGH);
      //сдвиг вправо
      comm››=1;
   }
   restart_wdt();
}

//чтение датчика
int read_1w()
{
   int n,temp;
   temp=0;
   restart_wdt();
   for(n=0;n‹8;n++)
   {
      temp››=1;
      output_low(PIN_DATA);
      set_tris_A(TRIS_MASKA_HIGH);
      if(input(PIN_DATA))
         temp|=0x80;
      delay_us(60);
      
   }
   restart_wdt();
   return temp;
}


void init_temp()
{  
   restart_wdt();
   reset();
   //запись в память,первые два байта все равно,третьий =00 
   //9 бит результат,конвертирование 100 мс
   command_1w(0xcc);
   command_1w(0x4e);//команда записи в память датчика
   command_1w(0x00);
   command_1w(0x00);
   command_1w(0x00);
   set_tris_A(0xff);
   restart_wdt();
}
 
 
 //функция считывая температуру и преобразование в нормальный вид
 void read_temp()
 {
   int temp,MS_byte,LS_byte;
   restart_wdt();
   
  //проверка crc,потом считываем,если нет,то выключаем реле на тэны
  crc=Check_Valid_Key();
  
      reset();
     command_1w(0xcc);
     //command_1w(0xcc);//передаем команду конвертирования всем датчикам
      command_1w(0xbe); //чтение памяти,нужны первые два байта
      LS_byte=read_1w();
      MS_byte=read_1w();
   
   //---------------------------------------------
   //пребразуем числа и присвоем своей структуре,в зависимости от датчика
   LS_byte&=0xf0;
   LS_byte››=4;
   LS_byte&=0x0f;
   
   temp=MS_byte;
   MS_byte&=0x0f; //0x07=0000 0111
   MS_byte‹‹=4;
   
   restart_wdt();
   if(temp&0xf0)
   {
      temp=0x01; //отриц температура
      LS_byte=LS_byte|MS_byte;
      LS_byte=(~LS_byte)+1;
   }
   else
   {
      temp=0;    //положительная температура
      LS_byte=LS_byte|MS_byte;
   }
   
   //теперь смотрим какой датчик и присваеваем определеной структуре
  
      data=LS_byte;
      znak=temp;
     //здесь мы запускаем преобразование с дс18б20
     reset();
     command_1w(0xcc);
     command_1w(0x44);
 }
 
 

//Считываем девять бит из датчика,последний crc
void read_crc()                  
{
   char i;
   reset();
    command_1w(0xcc);
    command_1w(0xbe); //чтение памяти,нужны первые два байта
   for(i=0;i‹9;i++)
   {
      OW_BUF[i]=read_1w(); //ложим в буфер для будущего подсчета
    }  
} 

char DLcrc8 (char *pData,char counterBytes )
 { 
     char  crc;
     char  data;
     char i,fb,st_byt;

     crc =0;                        // Инициализируем
   do                                       // Просматриваем весь массив
    { 
       data = *pData++;                     // Читаем байт
       for (i=0;i‹8;i++)               // счетчик битов в байте
        {
            fb =crc  ^ data;                  //восемь бит,начинаем с конца с перевнутым полиномом
            fb&=1;                        // 100110001,то есть будет 100011001,смотрим на младший бит
            crc ››= 1;                       //если с датой обои 
            data ››=1;
            if (fb == 1)crc^=0x8c;// полином, мля 1000 1100
        }
    }
   while (counterBytes-- );
   return crc;
 }
 

char Check_Valid_Key(void)
{
   //unsigned char i,CRC,temp;
   CRC=0;
   read_crc();                     //чтение всех регистров
   CRC=DLcrc8(OW_BUF,7);         //функция вычисления контрольной суммы
   if(CRC==OW_BUF[8]) 
      return(1);   //сравниваем теперь и если норм то возращается единичка
   return(0);
}
По отдельности из-под CCS модули я компилирую,а вот начинаю собирать полностью вылетает ошибка
Код:
*** Error 68 "C:\Documents and Settings\111\Мои документы\Загрузки\Example Files\test_mcu\$linker.c" Line 2(8,14): Duplicate function  main()
*** Error 68 "C:\Documents and Settings\111\Мои документы\Загрузки\Example Files\test_mcu\$linker.c" Line 2(8,25): Duplicate function
      2 Errors,  0 Warnings.
Build Failed.
Русские пути не влияют,проект примера собираю по тому же пути.
Пытаюсь пере собрать проект тот же опять,вылетает ошибка:
Код:
*** Error 129 "project.c" Line 3(8,14): File can not be opened for write
C:\project_pic\test_mcu\project.o ===›  1 Errors,  0 Warnings.
Build Failed.
Также посмотрел проект примера из CCS и мой сравнивая на предмет дерева файлов по модулям выглядит по разному.


У меня уже каша в голове от этого... Помогите опытные люди.Хочу программировать модулями.
Проект прикрепляю и скрины.
Миниатюры:
Нажмите на изображение для увеличения
Название: проект_мой.JPG
Просмотров: 58
Размер:	134.9 Кб
ID:	64111   Нажмите на изображение для увеличения
Название: проект_мой_настройки.JPG
Просмотров: 50
Размер:	109.1 Кб
ID:	64112   Нажмите на изображение для увеличения
Название: проект_пример.JPG
Просмотров: 50
Размер:	121.7 Кб
ID:	64113  

Нажмите на изображение для увеличения
Название: проект_мой_not_open.JPG
Просмотров: 44
Размер:	122.4 Кб
ID:	64114  
Вложения:
Тип файла: rar test_mcu.rar (63.7 Кб, 39 просмотров)
__________________
Глаза боятся,а руки делают.
CERGEI1982 вне форума  
Непрочитано 12.05.2014, 18:09  
welcome61
Почётный гражданин KAZUS.RU
 
Аватар для welcome61
 
Регистрация: 11.06.2006
Адрес: 51° 46′ 0″ N, 55° 6′ 0″ E
Сообщений: 1,975
Сказал спасибо: 370
Сказали Спасибо 1,725 раз(а) в 706 сообщении(ях)
welcome61 на пути к лучшему
По умолчанию Re: Изучение PIC C Compiler(CCS C)

#include "project.h"
#include "ds18b20.h"

Эти строчки я вижу в 2-х файлах.
welcome61 вне форума  
Непрочитано 13.05.2014, 05:55  
CERGEI1982
Почётный гражданин KAZUS.RU
 
Аватар для CERGEI1982
 
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
CERGEI1982 на пути к лучшему
По умолчанию Re: Изучение PIC C Compiler(CCS C)

Собрался проект,просто убрал в настройках подключаемый файл project.c.Ведь там тока настройки для проекта.
Буду пробывать в мплаб_х и еще логически надо понимать что куда включается...

А вот как при компиляции их мплаб_х создаются файлы *.o ?
тупо копии кинул в папку с проектом мплаб_х.
__________________
Глаза боятся,а руки делают.

Последний раз редактировалось CERGEI1982; 13.05.2014 в 06:30.
CERGEI1982 вне форума  
Непрочитано 13.05.2014, 08:29  
CERGEI1982
Почётный гражданин KAZUS.RU
 
Аватар для CERGEI1982
 
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
CERGEI1982 на пути к лучшему
По умолчанию Re: Изучение PIC C Compiler(CCS C)

Я как помню стек TCP/IP собран как раз модульно,надо вспоминать все.(было заброшено по личному)
__________________
Глаза боятся,а руки делают.
CERGEI1982 вне форума  
Непрочитано 13.05.2014, 13:55  
DK
Почётный гражданин KAZUS.RU
 
Аватар для DK
 
Регистрация: 10.05.2003
Адрес: Москва
Сообщений: 2,530
Сказал спасибо: 737
Сказали Спасибо 1,927 раз(а) в 799 сообщении(ях)
DK на пути к лучшему
По умолчанию Re: Изучение PIC C Compiler(CCS C)

Стек от CCS у меня так нормально и не заработал. Я только прием UDP запустил. Впрочем, мне и не надо было больше. Правда, кривовато где-то как-то... Иногда глюк вылезает (нечасто, мож раз в месяц, а то и реже) - принимает напрочь битый пакет... А мож сам его корежит.
А микрочиповский стек нормально работает, но память жрет... В мой старенький 18F258 ничего не влезло.
__________________
Опыт - это школа, в которой человек узнает, каким дураком он был раньше.
DK вне форума  
 

Закладки
Опции темы

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
i2c+ccs pic Gladkih Микроконтроллеры, АЦП, память и т.д 9 18.04.2016 22:17
PIC BASIC PRO Compiler 2.47 dosikus Proteus, KiCAD и другие ECAD 27 05.12.2009 05:48
изучение IAR AVR C compiler granel Микроконтроллеры, АЦП, память и т.д 0 10.10.2008 20:45
PIC C Compiler PCWH458 sergxxx Микроконтроллеры, АЦП, память и т.д 9 23.09.2008 18:25
Не включается дебаггер в CCS C Compiler BigMazzi Микроконтроллеры, АЦП, память и т.д 4 19.09.2008 13:34


Часовой пояс GMT +4, время: 16:16.


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