Страница 246 из 628

Re: Мелкие вопросы по МК и ПЛИС.

Добавлено: Ср ноя 02, 2011 12:32:00
Webspider163
Ещё такой вопрос. у меня на контроллере висит кварц 8Мгц. Смотрю по даташиту, что передача с наименьшей ошибкой при BaudRate = 250k. Но во всех терминалах в стандартном ряду BaudRates не конкретно такого значения, а только 256k. Как быть?

Re: Мелкие вопросы по МК и ПЛИС.

Добавлено: Ср ноя 02, 2011 12:36:10
pyzhman
Кварц под нужную частоту поставить.
Не боды подгонять под кварц, а наоборот. Как все обычные люди.

Re: Мелкие вопросы по МК и ПЛИС.

Добавлено: Ср ноя 02, 2011 12:51:45
Gudd-Head
AVT-28 писал(а):я контролирую выводом RA5 питание общей шины до этого диода.
И как тока там 0, прога за эти 1 сек записывает установки аппарата.
Если в ручную выдергивать перемычку и создавать 0 на выводе, то все работает.
Возможно, слишком плавно напряжение проседает. Или не успевает просесть до лог. 0 до того как отрубается программатор.

Re: Мелкие вопросы по МК и ПЛИС.

Добавлено: Ср ноя 02, 2011 18:30:54
Челюскин
Подскажите пожалуйста, у ATtiny 2313V чтобы пользоваться портом А( он трехразрядный!!!) нужно какие-то особенные команды для настройки на ввод-вывод, или все теже, что и для полноразрядных порты? Вот так например правильно будет:
;-------------настройка портов
ldi temp, 0b00000111 ;
out DDRA, temp ;порт А на вывод
ldi temp, 0 ;
out DDRB, порт Б на ввод
out DDRD, порт Д на ввод
out PORTA, temp ;вывод в порт А лог. 0
ldi temp, $FF ;
out PORTB, temp ;включ. резисторы
out PORTD, temp ;---//---

Re: Мелкие вопросы по МК и ПЛИС.

Добавлено: Ср ноя 02, 2011 18:42:40
urry

Код: Выделить всё

я контролирую выводом RA5 питание общей шины до этого диода.
И как тока там 0, прога за эти 1 сек записывает установки аппарата.
Если в ручную выдергивать перемычку и создавать 0 на выводе, то все работает.
1.контролировать нужно ацп, а не просто 0-1. Запись в еепром при пониженном напряжении - не самый легкий способ, нужно пакет обязательно закрывать контрольной суммой и дублировать его.
2. Выключить бор.

Re: Мелкие вопросы по МК и ПЛИС.

Добавлено: Ср ноя 02, 2011 19:33:30
slavokhire5
подскажите пожалуйста, как сделать запись в двумерный массив в компиляторе winavr?
я думаю, как-то так. (но полюбому придется что-то допилить)

Код: Выделить всё

eeprom_write_byte(&date_mem[date_number][data_number], number);
где

Код: Выделить всё

date_number, data_number, number
- номера элемента массива и элемент для записи, соответственно
на сколько я далек от истины?

Re: Мелкие вопросы по МК и ПЛИС.

Добавлено: Ср ноя 02, 2011 20:09:20
Chettuser
AVT-28 писал(а):Как заставить проработать 16f887 еще 1-2 секунды после отключения питания устройства?
А 3 батарейки (SR626, например) от часов/калькуляторов поставить дозволяется?

Re: Мелкие вопросы по МК и ПЛИС.

Добавлено: Чт ноя 03, 2011 05:46:18
Chettuser
Что делать в таких случаях?

Код: Выделить всё

Error   [141] C:\osa\osa.c; 37.16 can't open include file "OSA.h": No such file or directory

Re: Мелкие вопросы по МК и ПЛИС.

Добавлено: Чт ноя 03, 2011 06:53:24
ploop
Chettuser писал(а):
AVT-28 писал(а):Как заставить проработать 16f887 еще 1-2 секунды после отключения питания устройства?
А 3 батарейки (SR626, например) от часов/калькуляторов поставить дозволяется?
Смотря какая нагрузка, а то и электролита хватит.
Chettuser писал(а):Что делать в таких случаях?

Код: Выделить всё

Error   [141] C:\osa\osa.c; 37.16 can't open include file "OSA.h": No such file or directory
Искать файл "OSA.h" видимо...

Re: Мелкие вопросы по МК и ПЛИС.

Добавлено: Чт ноя 03, 2011 09:55:40
Gudd-Head
Челюскин писал(а):Подскажите пожалуйста, у ATtiny 2313V чтобы пользоваться портом А( он трехразрядный!!!) нужно какие-то особенные команды для настройки на ввод-вывод, или все теже, что и для полноразрядных порты?
Ничего особенного не нужно.

Re: Мелкие вопросы по МК и ПЛИС.

Добавлено: Чт ноя 03, 2011 12:15:17
Likus
кто-нибудь собирал это: http://cxem.net/mc/mc9.php
Меня интересует прошивка МК, ну или хотя бы помощь в разработке, потому как с автором этого устройства у меня связатся не получается :(

Re: Мелкие вопросы по МК и ПЛИС.

Добавлено: Чт ноя 03, 2011 12:35:59
pyzhman
Не зная формата мелодии и протокола вписывания оной в мк, бяку придется делать с нуля.

Re: Мелкие вопросы по МК и ПЛИС.

Добавлено: Чт ноя 03, 2011 19:42:53
Chettuser
ploop писал(а):Искать файл "OSA.h" видимо...
Дык он в той же папке прячется... :?

Re: Мелкие вопросы по МК и ПЛИС.

Добавлено: Чт ноя 03, 2011 20:43:53
*Trigger*
Имя файла точно заглавными буквами написано? Расширение точно .h ?

Re: Мелкие вопросы по МК и ПЛИС.

Добавлено: Чт ноя 03, 2011 22:55:11
Chettuser
Без разницы - большими или маленькими, та же ошибка, на всякий случай исправил на маленькие. Точно osa.h.
Нужно ли подключать его в виде #include <osa.h>

Re: Мелкие вопросы по МК и ПЛИС.

Добавлено: Пт ноя 04, 2011 01:03:47
AVT-28
urry писал(а):

Код: Выделить всё

я контролирую выводом RA5 питание общей шины до этого диода.
И как тока там 0, прога за эти 1 сек записывает установки аппарата.
Если в ручную выдергивать перемычку и создавать 0 на выводе, то все работает.
1.контролировать нужно ацп, а не просто 0-1. Запись в еепром при пониженном напряжении - не самый легкий способ, нужно пакет обязательно закрывать контрольной суммой и дублировать его.
2. Выключить бор.
Я немного не понял наверное. У меня RA5 настроен как цифровой вход, не как аналоговый. Как понять АЦП контролировать?
Конденсатора сто пудово хватает на 3 сек до 2 вольт сажается.
До кондера и до диода падает мгновенно.

Re: Мелкие вопросы по МК и ПЛИС.

Добавлено: Пт ноя 04, 2011 08:45:10
urry
я через каждые 10 мс смотрю через ацп напряжение на конденсаторе до диода. Когда оно меньше порога, отключаю все нагрузки и веду запись.
Записываю 3 идентичных блока в еепром и каждый закрывается контрольной суммой.
при включении считаю контрольную сумму и если совпадает - результату верить
Еще - нагрузка кренки такой емкостью ведет к постепенному ее убиванию большим стартовым током (в момент включения). Нужно принимать определенные меры для защиты - скажем, резистор ом 10 последовательно с диодом.

Код: Выделить всё

extern   gVarsSave_ gVarsSave; 
#define EE_ADR0 10
#define EE_ADR1 40
#define EE_ADR2 70
#define TEST0  0
#define TEST1  1
#define TEST2  2
#define TEST_ALL  ((1<<TEST0) + (1<<TEST1) + (1<<TEST2))
//       прототипы функций 
void fnEpReadArr(unsigned char cAdr);
void fnEpSaveArr(unsigned char cAdr);
//------------------------------------------------------------------
unsigned char fnCalcCrc (unsigned char *cArr, unsigned char cCount)
{
	unsigned char i,data,crc,fb,st_byt;
	st_byt=0;
	crc=0;
	do{
		data=cArr[st_byt];
		for (i=0;i<8;i++)// счетчик битов в байте
		{
			fb =crc  ^ data;
			fb&=1;
			crc >>= 1;     
			data >>=1;
			if (fb == 1)crc^=0x8c;// полином, dallas
		}
		st_byt++;
	}while  (st_byt != cCount);// счетчик байтов в массиве
	return crc;
} 
//---------------------------------------------------

void fnEepRead(void)
{
	volatile	unsigned char cAdr;
	volatile	unsigned char crcL,crcRez;
	//---------------
	crcRez=0;
	// проверка 1 записи
	cAdr=EE_ADR0;
	fnEpReadArr(cAdr);
	crcL=Read_b_eep(EE_ADR0+gVarMax);
	if((fnCalcCrc (gVarsSave.cArr,gVarMax) == crcL)) 
	{
		BITSET(crcRez,TEST0);
	}
	// повторяем  для всех трех записей
	cAdr=EE_ADR1;
	fnEpReadArr(cAdr);
	crcL=Read_b_eep(EE_ADR1+gVarMax);
	if((fnCalcCrc (gVarsSave.cArr,gVarMax) == crcL)) 
	{
		BITSET(crcRez,TEST1);
	}
	// повторяем  для всех трех записей
	cAdr=EE_ADR2;
	fnEpReadArr(cAdr);
	crcL=Read_b_eep(EE_ADR2+gVarMax);
	if((fnCalcCrc (gVarsSave.cArr,gVarMax) == crcL))  
	{
		BITSET(crcRez,TEST2);
	}

	if(!crcRez)
	{
		gVarsSave.Var.lSoftMax=lSoftMaxDef;
		gVarsSave.Var.lHardMax=lHardMaxDef;
		gVarsSave.Var.TmSoftMax=TmSoftMaxDef;
		gVarsSave.Var.TmHardMax=TmHardMaxDef;
		gVarsSave.Var.lCurSoft=lCurSoftDef;
		gVarsSave.Var.lCurHard=lCurHardDef;
		gVarsSave.Var.lCap=lCapDef;
		fnEepSave();
	}
	if(crcRez == TEST_ALL){return;}// все хорошо считалось, переписывать не нужно
	else 
	{
		if(BITTST1(crcRez,TEST0))
		{
			cAdr=EE_ADR0;
			fnEpReadArr(cAdr);
			fnEepSave();
			return;
		}

		if(BITTST1(crcRez,TEST1))
		{
			cAdr=EE_ADR1;
			fnEpReadArr(cAdr);
			fnEepSave();
			return;
		}
		if(BITTST1(crcRez,TEST2))
		{
		cAdr=EE_ADR2;
		fnEpReadArr(cAdr);
		fnEepSave();
		return;
		}
	}
} 
//-------------------------------------------------
void fnEpReadArr(unsigned char cAdr)
{
	unsigned char i;
	for(i=0;i<gVarMax;i++)
	{
		gVarsSave.cArr[i]=Read_b_eep(cAdr+i);
	}
}
//--------------------------------------
void fnEpSaveArr(unsigned char cAdr)
{
	char crc;
	unsigned char i;
	for(i=0;i<gVarMax;i++)
	{
		Write_b_eep(cAdr+i, gVarsSave.cArr[i]);
	}
	crc=fnCalcCrc (gVarsSave.cArr,gVarMax);
	Write_b_eep(cAdr+gVarMax, crc);
}
//----------------------------------------
void fnEepSave(void)
{
	unsigned char cAdr;
	cAdr=EE_ADR0;
	fnEpSaveArr(cAdr);
	cAdr=EE_ADR1;
	fnEpSaveArr(cAdr);
	cAdr=EE_ADR2;
	fnEpSaveArr(cAdr);
}
//----------------------------------------

Re: Мелкие вопросы по МК и ПЛИС.

Добавлено: Пт ноя 04, 2011 15:11:15
testerplus
Chettuser писал(а):Осваиваю OSA для PIC'ов.
...
ЗЫ: Ах да! Компилятор у меня PRO mode. А в инструкции чтото писалось про STD.
В инструкции указано, что OSA не будет работать с ПРО-версиями компилятора (не важно, в PRO-mode или в STD-mode)

Re: Мелкие вопросы по МК и ПЛИС.

Добавлено: Пт ноя 04, 2011 15:23:46
testerplus
Chettuser писал(а):Без разницы - большими или маленькими, та же ошибка, на всякий случай исправил на маленькие. Точно osa.h.
Нужно ли подключать его в виде #include <osa.h>
Эти требования выполнены? (особенно п.4)

Re: Мелкие вопросы по МК и ПЛИС.

Добавлено: Пт ноя 04, 2011 18:55:02
FreshMan
кто знает наверняка у PIC16F874 ROM=4 килобайта или килослова ??? :dont_know: