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

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

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

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

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

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

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

 
Опции темы
Непрочитано 25.04.2008, 09:47  
crafty73
Прохожий
 
Регистрация: 06.06.2007
Сообщений: 4
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
crafty73 на пути к лучшему
По умолчанию Помогите портировать имитатор DS1990

Фсем доброе время суток!
Помогите пожалуйста портировать исходник на С от имитатора DS1990. Исходник для ПИКа а нужно для AtMega8 под WinAVR.
Код:
#include ‹htc.h›
#include "delay.h"

void StartWork( void );

__CONFIG( UNPROTECT & BORDIS & MCLRDIS & PWRTDIS & WDTDIS & INTIO);


unsigned char IOBYTE;
unsigned char OWSF;
unsigned char OWBITCOUNT; //bit count
unsigned char BITMASK;


unsigned char IBKEY[] = { 0xDC, 0x00, 0x00, 0x0D, 0xA4, 0x1D, 0xC3, 0x01 };


#define OWSF_READY 1

#define OWDIR  TRIS2
#define OWDATA GPIO2

void interrupt iocf( void ){
	if(INTF == 1){	
		DelayUs( 250 );
		if(OWDATA == 0){
			OWSF = OWSF_READY;	
			di();
			INTE = 0;
		}			
		INTF = 0;
	}
	
}


void
main(void)
{
	TRISIO = 0x0C; // 001100
	GPIO = 0x00;
		
	DelayUs( 100 );

	di();
	
	INTE = 1; //enable interrupt on gpio2
	INTEDG = 0; //on falling
	ei();

	while (1){
		asm( "sleep" );
		if( OWSF == OWSF_READY ){
			StartWork();	
			di();
			OWSF = 0; 
			INTE = 1; 
			INTEDG = 0;
			ei();
		}
	}

}

void StartWork( void ){
	while( OWDATA == 0 );
	DelayUs( 30 );
    OWDIR = 0x00; // as out
    OWDATA = 0x00; // present pulse
	DelayUs( 120 );
    OWDIR = 0x01;  //as input and hiz
    while( OWDATA == 0 ) ;
	// read 8 bit's from master
	OWBITCOUNT = 8;
	while(OWBITCOUNT--){
		while( OWDATA ); 
       	DelayUs( 30 );
       	IOBYTE = IOBYTE››1;
       	if(OWDATA){
        	IOBYTE = IOBYTE | 0x80;
       	}
		else
			while( OWDATA == 0) ; 
    }    
	if( IOBYTE != 0x33){
		return;
	}
	OWBITCOUNT = 8;
    while(OWBITCOUNT --){
    		IOBYTE = IBKEY[OWBITCOUNT];
    		BITMASK = 8;
			
			while( BITMASK-- ){
				while( OWDATA ); //wait synhro fall
				
				if((IOBYTE & 0x01) == 0){
    				OWDIR = 0x00;	//as out
    				OWDATA = 0;    //pull down bus
					DelayUs( 50 );
    				OWDIR = 0x01; //hiz
    				while( OWDATA == 0 ) ; //wait then bus goup
   				}
				IOBYTE = IOBYTE ›› 1;
				
				DelayUs( 50 );
			} 	
    }  
		 	
}
Если можно то с комментариями - где чего( всёж хочу разобраться)

Заранее благодарен !

ЗЫЖ Нога на AtMega8 - INT0
Реклама:
crafty73 вне форума  
Непрочитано 08.05.2008, 10:30  
crafty73
Прохожий
 
Регистрация: 06.06.2007
Сообщений: 4
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
crafty73 на пути к лучшему
По умолчанию

Ещё раз подниму тему.
Ну помогите пожалуйста!
Я АВР только начал пробовать, а тут под ПИК, а приблуду эту очень сделать надо...
Плиииз !!!
crafty73 вне форума  
Непрочитано 08.05.2008, 15:59  
CERGEI1982
Почётный гражданин KAZUS.RU
 
Аватар для CERGEI1982
 
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
CERGEI1982 на пути к лучшему
По умолчанию

Ничего сложного,это хайтек,тебе нужен сам алгорит этой программы? могу описать,но ни разу не работал с DS1990,это ключ?
CERGEI1982 вне форума  
Непрочитано 12.05.2008, 05:27  
crafty73
Прохожий
 
Регистрация: 06.06.2007
Сообщений: 4
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
crafty73 на пути к лучшему
По умолчанию

Да, дс1990-"ключ" тачмемори, а это имитатор такого ключа.
Алгоритм понятен, непонятна ПИК специфика, тут АВР тока-тока понимать начал.
например
Код:
#include ‹htc.h›
Чё этот хидер даёт ? и чё вместо него надо в винавре подключать ?
или
Код:
#define OWSF_READY 1

#define OWDIR  TRIS2
#define OWDATA GPIO2
понимаю что переназначение, но переназначение чего...

Код:
         OWSF = 0;
         INTE = 1;
         INTEDG = 0;
понимаю что установка битов в регистрах, но каких ?

как это фсё на винавр перевернуть ?
crafty73 вне форума  
Непрочитано 12.05.2008, 19:54  
lsa
Почётный гражданин KAZUS.RU
 
Аватар для lsa
 
Регистрация: 22.06.2004
Адрес: Харьков
Сообщений: 1,488
Сказал спасибо: 3,207
Сказали Спасибо 3,010 раз(а) в 686 сообщении(ях)
lsa на пути к лучшему
По умолчанию

Там много всего по теме
http://electronix.ru/forum/index.php...&f=134&t=36794
lsa вне форума  
Непрочитано 12.05.2008, 20:25  
CERGEI1982
Почётный гражданин KAZUS.RU
 
Аватар для CERGEI1982
 
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
CERGEI1982 на пути к лучшему
По умолчанию

Сообщение от crafty73
Код:
#include ‹htc.h›
Чё этот хидер даёт ? и чё вместо него надо в винавре подключать ?
это файл подключает описание регистров микроконтроллера.
Сообщение от crafty73
Код:
#define OWSF_READY 1

#define OWDIR  TRIS2
#define OWDATA GPIO2
TRIS2-это регистр который управляет порты контролера на вход или выход?,управляет здесь наверно портом 2
GPIO2-это сам порт к которому подключается DS1990

OWSF_READY=1 и когда встречается запись OWSF_READY то компилятор вместо нее подставляет 1.

Сообщение от crafty73
понимаю что переназначение, но переназначение чего...

Код:
         OWSF = 0;
         INTE = 1;
         INTEDG = 0;
понимаю что установка битов в регистрах, но каких ?

как это фсё на винавр перевернуть ?
Да это биты регистров,точно не знаю какие,смотря от пика,но можно выянить
INTE-это разрешение прерывания вывод GPIO2,наверняка это серия пик12
CERGEI1982 вне форума  
Непрочитано 13.05.2008, 04:57  
crafty73
Прохожий
 
Регистрация: 06.06.2007
Сообщений: 4
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
crafty73 на пути к лучшему
По умолчанию

Спасибо!
сразу начало вырисовываться
правда пока только FFFFFF пишет, где-то нолики пропали само-страшно позади.
crafty73 вне форума  
 

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

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
DS1990 и crc sergio-nsk Микроконтроллеры, АЦП, память и т.д 13 12.02.2009 11:09
Имитатор термопары Samarastudent Измерительное оборудование 14 22.12.2008 18:22
Имитатор I-Button Zimgund Микроконтроллеры, АЦП, память и т.д 26 23.12.2007 16:06
имитатор термометра Olegn_2007 Измерительное оборудование 9 16.07.2007 11:31
Температурный сбой 16F84 и DS1990 mikk Микроконтроллеры, АЦП, память и т.д 1 03.07.2006 11:37


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


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