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

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

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

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

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

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


 
Опции темы
Непрочитано 16.03.2008, 11:46  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
dosikus на пути к лучшему
По умолчанию

Сообщение от pegas19
Либо версия 4,038 (CCS PICC).

А проблема собственно в следующем. Прог-му пишу под 16F877 и по превышению програмного кода свыше 26% ROM моя прог-ма работает не коректно!
Вот я и грешу на активацию компилятора.

Спасибо.
Предьявляй аргументы и факты. А на словах ...
У меня проект на 877, память и программ и данных используеться на 98 % , но ты же на слово не поверишь!?
Реклама:
dosikus вне форума  
Непрочитано 16.03.2008, 16:29  
AlexeyGN
Прохожий
 
Регистрация: 17.06.2005
Сообщений: 7
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
AlexeyGN на пути к лучшему
По умолчанию

Подскажите, как организовать опрос двух АЦП, с разных ног. Цель такова, изменять частоту и ширину импульсов. Проблема в том, что при разных значениях знаменателя у меня регулировка ширины импульса влияет на частоту.
Код:
#include ‹16F676.h›
#device ADC=10
#use delay(clock=4000000)
#fuses INTRC, NOWDT
#byte ADCON0 = 0x1F 

long int h=1;  
long int h1=1;//Ширина импульса
int32 p=1; //пауза    
int32 period=1;//Период

void main()

{  
while(1)
{
    setup_adc_ports(ALL_ANALOG);
    setup_adc(ADC_CLOCK_DIV_32);
    ADCON0 |= 2;
    set_adc_channel(2);
    period = read_adc() ;
   
    ADCON0 |= 2;      
    set_adc_channel(0);
    h = (read_adc()) ;
         
      output_high(PIN_C5);  
      h1=h/75;
      delay_ms(h1);
      output_low(PIN_C5);
      p = (period-h1)/4;
      delay_ms(p);//Пауза  max=(1024-h1)/4  
      
}
}
AlexeyGN вне форума  
Непрочитано 16.03.2008, 16:33  
AlexeyGN
Прохожий
 
Регистрация: 17.06.2005
Сообщений: 7
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
AlexeyGN на пути к лучшему
По умолчанию

Когда в знаменателе ставлю одинаковые числа 4 и 4 или 75 и 75 то все работает отлично. Но мне надо изменять частоту от 20 до 120 герц, а ширину импульсов от 1 до 10 мС.
AlexeyGN вне форума  
Непрочитано 16.03.2008, 20:17  
CERGEI1982
Почётный гражданин KAZUS.RU
 
Аватар для CERGEI1982
 
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
CERGEI1982 на пути к лучшему
По умолчанию

Сообщение от AlexeyGN
Когда в знаменателе ставлю одинаковые числа 4 и 4 или 75 и 75 то все работает отлично. Но мне надо изменять частоту от 20 до 120 герц, а ширину импульсов от 1 до 10 мС.
Как можно изменять ширину импульсов от 1 до 10 мС ? Это же скважность как я помню,то есть ширина импульса может занимать или весь период(максимальное) или не будет импульса-это мин импульс.
Я понял что ты делаеш ширину импульса и период задержками,к тому же период зависит от разности измереных двумя АЦП.Но сами вычесления я не понял
Код:
output_high(PIN_C5); 
      h1=h/75;
      delay_ms(h1);
      output_low(PIN_C5);
      p = (period-h1)/4;
      delay_ms(p);//Пауза  max=(1024-h1)/4
CERGEI1982 вне форума  
Непрочитано 17.03.2008, 22:50  
pegas19
Прохожий
 
Регистрация: 16.07.2007
Сообщений: 4
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
pegas19 на пути к лучшему
По умолчанию

Сообщение от pegas19
Либо версия 4,038 (CCS PICC).

А проблема собственно в следующем. Прог-му пишу под 16F877 и по превышению програмного кода свыше 26% ROM моя прог-ма работает не коректно!
Вот я и грешу на активацию компилятора.

Спасибо.
Нашел решение своей проблемы ! Мне надо было переключать страницы памяти .

#ORG 0x1000,0x17FF //Вот так к примеру.
void function()
{
;
}

До переключая страниц памяти "GOTO PCLATH+0x????"
отправлял прог-му неизвестно куда.

Всем спасибо за отклик.

-- Прилагается рисунок: --
pegas19 вне форума  
Непрочитано 18.03.2008, 01:41  
AlexeyGN
Прохожий
 
Регистрация: 17.06.2005
Сообщений: 7
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
AlexeyGN на пути к лучшему
По умолчанию

На мой взгляд все довольно просто. Но отчего-то не работает . Я мог бы сразу подставлять результат считывания АЦП в переменную для задержки, но так как я хочу получить более высокую частоту то
Код:
 
      output_low(PIN_C5);//выставляю  0 после задержки h1
      p = (period-h1)/4;// period-это результат оцифровки(частота)
      delay_ms(p);//длительность паузы
AlexeyGN вне форума  
Непрочитано 18.03.2008, 01:52  
AlexeyGN
Прохожий
 
Регистрация: 17.06.2005
Сообщений: 7
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
AlexeyGN на пути к лучшему
По умолчанию

В книге Шпака есть пример использования АЦП через прерывание. Вроде со всем разобрался из примера, а вот как подобным образом считывать из двух каналов не получается. Если не затруднит приведите пример использования.
P.S. Суть программы, правильно, изменять скважность и частоту(я сразу не точно выразился) . Только ширина импулься мах=10мС, а период примерно 100мС. Т.е. скважность 10.
AlexeyGN вне форума  
Непрочитано 29.03.2008, 20:22  
dimadi
Прохожий
 
Регистрация: 08.03.2008
Сообщений: 1
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
dimadi на пути к лучшему
По умолчанию

подскажите:
в CCS есть драйвер для графического дисплея ks0108 - GLCD,чета он у меня в протеусе не очень.
Линии , прямоуг -какая-то крокозябра получается,
точки:подряд рисую 5 точек(5 раз glcd_pixel(x,y,off))
-первые две -норм,третья и четвертая-не то,пятая опять как надо.
glcd_circle-та же ерунда.
glcd_fillScreen(color) -норм
Мож кто сталкивался? в чем косяк?
Прошу прощения что немного не в тему.
dimadi вне форума  
Непрочитано 12.04.2008, 12:58  
AjSS
Частый гость
 
Регистрация: 01.07.2005
Сообщений: 16
Сказал спасибо: 2
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
AjSS на пути к лучшему
По умолчанию

Сообщение от AlexeyGN
В книге Шпака есть пример использования АЦП через прерывание. Вроде со всем разобрался из примера, а вот как подобным образом считывать из двух каналов не получается. Если не затруднит приведите пример использования.
P.S. Суть программы, правильно, изменять скважность и частоту(я сразу не точно выразился) . Только ширина импулься мах=10мС, а период примерно 100мС. Т.е. скважность 10.
Хороший вопрос(в смысле для меня тоже и вовремя). Сам собираюсь делать нечто подобное! В компиляторе есть хелп и там(в "Index") есть функция:SET_ADC_CHANNEL( ) и пояснения по ней:
Цитата:
Specifies the channel to use for the next READ_ADC call. Be aware that you must wait a short time after changing the channel before you can get a valid read. The time varies depending on the impedance of the input source. In general 10us is good for most applications. You need not change the channel before every read if the channel does not change
и пример использования:
Код:
set_adc_channel(2);
delay_us(10);
value = read_adc();
а в папке "Examples" компилятора есть такой пример работы с АЦП:
Код:
// EX_ADMM.C
#if defined(__PCM__)
#include ‹16F877.h›
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=20000000)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)

#elif defined(__PCH__)
#include ‹18F452.h›
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=20000000)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)
#endif


void main() {

   int i, value, min, max;

   printf("Sampling:");

   setup_port_a( ALL_ANALOG );
   setup_adc( ADC_CLOCK_INTERNAL );
   set_adc_channel( 0 );

   do {
      min=255;
      max=0;
      for(i=0; i‹=30; ++i) {
         delay_ms(100);
         value = Read_ADC();
         if(value‹min)
            min=value;
         if(value›max)
            max=value;
      }
      printf("

Min: %2X  Max: %2X

",min,max);

   } while (TRUE);
}
правда без прерываний, а прямое чтение канала 0 АЦП(см. пример).
AjSS вне форума  
Непрочитано 17.04.2008, 18:03  
Zell222
Прохожий
 
Регистрация: 13.11.2007
Сообщений: 1
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Zell222 на пути к лучшему
По умолчанию

приветствую
по поводу примера из книги шпака попробуйте такой вариант:
Код:
#include ‹18F458.h›
#device ADC=10
#use delay(clock=10000000)
#fuses HS, NOWDT

#byte ADCON0 = 0xFC2

int n,x;

#int_AD
AD_isr()
{

  if (x==0)
  {
  n = read_adc() / 102;
  output_D(~(2 ‹‹ n - 1));
  }
  if (x==1)
  {
  n = read_adc() / 102;
  output_C(~(2 ‹‹ n - 1));
  }
  if (x›=2){x=0;} else {x=x+1;}
  set_adc_channel(x);
  ADCON0 |= 4;
}
void main()
{
  setup_adc_ports(ALL_ANALOG);
  setup_adc(ADC_CLOCK_DIV_32);
  enable_interrupts(INT_AD);
  enable_interrupts(global);
  set_adc_channel(0);
  ADCON0 |= 4;

 while(1);
имеем 2 канала АЦП. AN0 отображается с помощью светодиодов порта D, AN1 - порт C. На 18 серии работает.
Обкатал в протеусе
Zell222 вне форума  
 

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

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

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, время: 11:25.


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