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

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

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

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

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

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

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы
Непрочитано 05.07.2007, 13:55  
CERGEI1982
Почётный гражданин KAZUS.RU
 
Аватар для CERGEI1982
 
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
CERGEI1982 на пути к лучшему
По умолчанию

Вот посмотри может это чем поможет

Прикрепленный файл: 7441926.rar
Реклама:
CERGEI1982 вне форума  
Непрочитано 05.07.2007, 18:25  
double_dash
Прописка
 
Аватар для double_dash
 
Регистрация: 15.10.2006
Сообщений: 130
Сказал спасибо: 0
Сказали Спасибо 2 раз(а) в 1 сообщении
double_dash на пути к лучшему
По умолчанию

спасибо,
изучу
double_dash вне форума  
Непрочитано 05.07.2007, 18:28  
double_dash
Прописка
 
Аватар для double_dash
 
Регистрация: 15.10.2006
Сообщений: 130
Сказал спасибо: 0
Сказали Спасибо 2 раз(а) в 1 сообщении
double_dash на пути к лучшему
По умолчанию

не, правда
Пересмотрел по совету urry'я внимательно свой код
- мура мурой
Вот, переписал немножко:

Код:
char* _RCREG;
char* hangup = "AT+CHUP\r";
char* init2= "AT+CNMI=1,1,0,0,1\r";

void Tx_String(char* buf)
{
  int i = -1;
  do
   { 
    i++;
    putchar(buf[i]);
    }
    while( buf[i]!='\r');  
 }

#int_RDA
RDA_isr() 
{

_RCREG = 0x1A; // адрес RCREG

/* просто жду пока в буфере приемника появится 'R' */ 

if((*_RCREG) == 'R')
  {
   if(input(ind_yellow)) output_low(ind_yellow); 
   else output_high(ind_yellow);
   }
}


void main()
{
   char* init = "ATE0\r";
   char* ok = "OK";

   setup_comparator(NC_NC_NC_NC);
   setup_vref(FALSE);
   
   enable_interrupts(INT_RDA);
   setup_oscillator(False);
   
   port_b_pullups(false);
    
   Tx_String(init);
   Tx_String(init2);
   
   enable_interrupts(GLOBAL);
     
   for(;;);
   
}
- но ведь все равно срабатывает только при первом дозвоне!
такое ощущение, что сразу после этого кто-то отключает мое прерываение
Хотелось бы добраться до отдельных битов регистра RCSTA (а именно до бита CREN)
Попробовал использовать для этого ассемблерные вставки,
но вот беда CCS-PICC мплабовские предопределения не понимает и задает глупые вопросы
Знаю что это как то можно устранить,
вот только как?
double_dash вне форума  
Непрочитано 06.07.2007, 10:07  
an-sver
Прописка
 
Регистрация: 22.08.2006
Сообщений: 168
Сказал спасибо: 8
Сказали Спасибо 16 раз(а) в 11 сообщении(ях)
an-sver на пути к лучшему
По умолчанию

Может быть и не совсем по тому алгоритму, но может кому интересен практически классический пейджер....
http://icdevelop.narod.ru/plusgsm/index.htm
an-sver вне форума  
Непрочитано 07.07.2007, 21:04  
urry
Почётный гражданин KAZUS.RU
 
Аватар для urry
 
Регистрация: 06.02.2007
Сообщений: 1,340
Сказал спасибо: 3
Сказали Спасибо 106 раз(а) в 66 сообщении(ях)
urry на пути к лучшему
По умолчанию

Значит, Вы переросли этот компилятор. Переходите на хайтек. Вот Ваш код на хайтеке - я специально не использовал стандартные библиотеки работы с уартом.
Проект в протеусе, в хайтеке присоединяю.
Код:
#include ‹pic.h›
#include	‹conio.h›
//-------------------------
#ifndef bool 
#define bool static bit
#define false 0
#define true  1 
#endif
#define XTAL 20000000 // частота кварца
#define SPBRG_ ((XTAL /9600) -16)/16 
// вычисляется по формуле
//SPBRG=(частота кварца/скорость в бодах - 16)/16 , тогда     BRGH =1
//---------------------------
__CONFIG(HS & WDTDIS & LVPDIS & MCLREN);
//---------------------------
void init_port(void);
void send_ar( unsigned char *ar);

static volatile       bit	svet		@ ((unsigned)&PORTA*8)+0;
static bit busy;
unsigned char i; 
unsigned char test1;
unsigned char st;
static  unsigned char ar1[]={'A','T','+','C','H','U','P','\r'}; 
//---------------------------------------------
/* это прерывание */
interrupt void serial_ir(void)
{
	if (TXIF)
	{
TXREG=test1;
TXIE=0;
	} 
//----------------------------------------------
if (RCIF)
	{
	switch(st)
		  {
	  	case 0: // еще не принят ни один символ
	  	if(RCREG=='R')st++;
	  		      break;
 	  	case 1:
	  	if(RCREG=='I')	st++; else st=0;             
	  		      break;
	  	case 2:
	  	if(RCREG=='N')	st++; else st=0;
	  		      break;
 	  	case 3:
	  	if(RCREG=='G') st++;else st=0;  	
	  		      break;
 	  	case 4:
	  	if(RCREG=='\r' )
		{
		CREN =0;
		RCIE=0;
svet^=1;
busy=1;
 		  st=0;	  	
                  break;
			}
}							      
}
}
//-------------------------------------------
void init_port()
        {

		CMCON=7;//выключаем компараторы 
          	TRISA=0xfe;
          	TRISB=0xff;
		svet =0;
// все на ввод.вывод передачи порта для несущей, тоже.
// это невозможно понять, это нужно запомнить. 
		SPEN=1;//разрешение работы последовательного порта
		SYNC =0;//включение асинхронного режима работы
		TX9=0; // выбираем 8 - битовую передачу
		RX9=0; // выбираем 8 - битовый прием
		BRGH =1;//включаем высокоростной режим
		SPBRG=SPBRG_;// 
		PIR1 = 0;	/*контрольный выстрел в голову - после сброса регистр чистый и так*/
		PEIE = 1;	/* разрешаем прерывания периферии */
		TXIE=0;//запрещаем прерывания от передатчика 
		TXEN=1;// подключаем ножку физически
		// разрешаем прием
		CREN =1;
		// разрешаем прерывания от приемника 
		RCIE=1;
		GIE = 1;// разрешаем прерывания  вообче
             }            	
//---------------------------------
//////////////////////////main/////////          
main()
{    //начало маин
	init_port();
busy=0;
	st=0;

//----------------------------------------------------------------
	for(;;) // начало бесконечного цикла
	{ //начало фор
//--------------------
if (busy == 1) 	send_ar(ar1);

//--------------------
	} // конец фор
}	// конец маин

//==================================================  =================
void send_ar(unsigned char *ar)
{

for (i=0;;i++)
	{
	test1=ar[i];
if(test1=='\r')break;
TXIE=1; // разрешаем прерывания от передатчика
		do{
		}while(TRMT == 0);//пока полный сдвиговый регистр
// ничего в регистр не пишем чтобы не перехлестнулось
	}
TXIE=0; // запрещаем прерывания от передатчика
busy=0;
		CREN =1;
		// разрешаем прерывания от приемника 
		RCIE=1;
}
Прикрепленный файл: 7596136.rar
urry вне форума  
Непрочитано 07.07.2007, 21:41  
double_dash
Прописка
 
Аватар для double_dash
 
Регистрация: 15.10.2006
Сообщений: 130
Сказал спасибо: 0
Сказали Спасибо 2 раз(а) в 1 сообщении
double_dash на пути к лучшему
По умолчанию

Что ж замечательно
Осталось узнать что такое "хайтек"
double_dash вне форума  
Непрочитано 07.07.2007, 22:17  
double_dash
Прописка
 
Аватар для double_dash
 
Регистрация: 15.10.2006
Сообщений: 130
Сказал спасибо: 0
Сказали Спасибо 2 раз(а) в 1 сообщении
double_dash на пути к лучшему
По умолчанию

Дозвон заработал.
И прерывание оказывается было непричем.
Оказывается переключать биты порта подобным способом
лучше не стоит:
if(input(ind_yellow)) output_low(ind_yellow);
else output_high(ind_yellow);
Странно...
Просто в прошлом проекте (еще на ассемблере)
один из битов порта одновременно отвечал
за включение/выключение светодиода
и в то же время являлся флагом дежурного режима,
т.е. я его не только переключал, но и читал,
чтобы узнать в каком режиме сейчас нахожусь.
А тут какая канитель возникла
Пришлось в качестве флага дополнительно
глобальную переменную вводить.
Но это еще полбеды,
решил наконец то перейти к подключению датчиков,
в старом проекте они обрабатывались прерыванием RB
(по перепаду уровня на RB4-RB7)
- все работало замечательно.
А что же тут -
активизировал это прерывание,
тихий ужас:
в общем судя по реакции МК
его с первых секунд после включения
не переставая бомбят этим прерыванием,
хотя к этим линиям вообще ничего не подключено!

блин я все понял: просто чертова хрень этот CCS
наворочал чего попало
надо обратно на ассемблер переходить
double_dash вне форума  
Непрочитано 07.07.2007, 22:20  
urry
Почётный гражданин KAZUS.RU
 
Аватар для urry
 
Регистрация: 06.02.2007
Сообщений: 1,340
Сказал спасибо: 3
Сказали Спасибо 106 раз(а) в 66 сообщении(ях)
urry на пути к лучшему
По умолчанию

не самый новый вариант, но пойдет... компилятор hi-tech
http://www.remexpert.com/forum/dload...le&file_id=318
urry вне форума  
Непрочитано 07.07.2007, 22:30  
double_dash
Прописка
 
Аватар для double_dash
 
Регистрация: 15.10.2006
Сообщений: 130
Сказал спасибо: 0
Сказали Спасибо 2 раз(а) в 1 сообщении
double_dash на пути к лучшему
По умолчанию

"File does not exist anymore"
- нет ли у вас другого источника
double_dash вне форума  
Непрочитано 07.07.2007, 22:42  
urry
Почётный гражданин KAZUS.RU
 
Аватар для urry
 
Регистрация: 06.02.2007
Сообщений: 1,340
Сказал спасибо: 3
Сказали Спасибо 106 раз(а) в 66 сообщении(ях)
urry на пути к лучшему
По умолчанию

плиз
urry вне форума  
 

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

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Может кто делал лазерный дальномер на микроконтроллере? andron13 Микроконтроллеры, АЦП, память и т.д 14 08.04.2016 07:47
Соеденение микроконтролера через FastEthernet - кто делал ? expolit Микроконтроллеры, АЦП, память и т.д 13 29.12.2007 22:51
зарядка для gsm-pager'а double_dash Источники питания и свет 48 04.08.2007 16:31
Кто делал DC-DC наTDA2004? FOLKSDOICH Источники питания и свет 13 14.09.2006 15:41
Кто нибудь делал вольтметр на ПИК - откликнитесь AnB Измерительное оборудование 23 20.12.2005 22:49


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


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