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

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Webspider163
Родился
Сообщения: 5
Зарегистрирован: Чт фев 03, 2011 21:20:18

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

Сообщение Webspider163 »

Ещё такой вопрос. у меня на контроллере висит кварц 8Мгц. Смотрю по даташиту, что передача с наименьшей ошибкой при BaudRate = 250k. Но во всех терминалах в стандартном ряду BaudRates не конкретно такого значения, а только 256k. Как быть?
Реклама
Аватара пользователя
pyzhman
Друг Кота
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск
Контактная информация:

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

Сообщение pyzhman »

Кварц под нужную частоту поставить.
Не боды подгонять под кварц, а наоборот. Как все обычные люди.
Docendo discimus
Реклама
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20092
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

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

Сообщение Gudd-Head »

AVT-28 писал(а):я контролирую выводом RA5 питание общей шины до этого диода.
И как тока там 0, прога за эти 1 сек записывает установки аппарата.
Если в ручную выдергивать перемычку и создавать 0 на выводе, то все работает.
Возможно, слишком плавно напряжение проседает. Или не успевает просесть до лог. 0 до того как отрубается программатор.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Челюскин
Прорезались зубы
Сообщения: 209
Зарегистрирован: Ср ноя 03, 2010 14:46:17

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

Сообщение Челюскин »

Подскажите пожалуйста, у 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 ;---//---
Лень - двигатель прогресса!
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
urry
Сверлит текстолит когтями
Сообщения: 1262
Зарегистрирован: Пн дек 08, 2008 10:58:48
Откуда: Винница
Контактная информация:

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

Сообщение urry »

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

я контролирую выводом RA5 питание общей шины до этого диода.
И как тока там 0, прога за эти 1 сек записывает установки аппарата.
Если в ручную выдергивать перемычку и создавать 0 на выводе, то все работает.
1.контролировать нужно ацп, а не просто 0-1. Запись в еепром при пониженном напряжении - не самый легкий способ, нужно пакет обязательно закрывать контрольной суммой и дублировать его.
2. Выключить бор.
Реклама
Аватара пользователя
slavokhire5
Прорезались зубы
Сообщения: 202
Зарегистрирован: Пн сен 26, 2011 13:48:25
Откуда: Харьков

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

Сообщение slavokhire5 »

подскажите пожалуйста, как сделать запись в двумерный массив в компиляторе winavr?
я думаю, как-то так. (но полюбому придется что-то допилить)

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

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

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

date_number, data_number, number
- номера элемента массива и элемент для записи, соответственно
на сколько я далек от истины?
Осилит дорогу идущий
--------------------------
Пишу на Си за еду
Реклама
Chettuser

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

Сообщение Chettuser »

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

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

Сообщение Chettuser »

Что делать в таких случаях?

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

Error   [141] C:\osa\osa.c; 37.16 can't open include file "OSA.h": No such file or directory
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

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

Сообщение 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" видимо...
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20092
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

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

Сообщение Gudd-Head »

Челюскин писал(а):Подскажите пожалуйста, у ATtiny 2313V чтобы пользоваться портом А( он трехразрядный!!!) нужно какие-то особенные команды для настройки на ввод-вывод, или все теже, что и для полноразрядных порты?
Ничего особенного не нужно.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Likus
Родился
Сообщения: 3
Зарегистрирован: Пт окт 14, 2011 09:38:22

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

Сообщение Likus »

кто-нибудь собирал это: http://cxem.net/mc/mc9.php
Меня интересует прошивка МК, ну или хотя бы помощь в разработке, потому как с автором этого устройства у меня связатся не получается :(
Аватара пользователя
pyzhman
Друг Кота
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск
Контактная информация:

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

Сообщение pyzhman »

Не зная формата мелодии и протокола вписывания оной в мк, бяку придется делать с нуля.
Docendo discimus
Chettuser

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

Сообщение Chettuser »

ploop писал(а):Искать файл "OSA.h" видимо...
Дык он в той же папке прячется... :?
Аватара пользователя
*Trigger*
Друг Кота
Сообщения: 3059
Зарегистрирован: Пн май 11, 2009 14:15:00
Откуда: СПб

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

Сообщение *Trigger* »

Имя файла точно заглавными буквами написано? Расширение точно .h ?
Этот пост оказался полезен? Не поленись, нажми Изображение слева!
:) :)) :)))
Куплю индикаторы ИТС-1А, ИТС-1Б, ИГВ1-8х5Л, ИГПС1-222/7, ИГПС1-111/7 и подобные.
Chettuser

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

Сообщение Chettuser »

Без разницы - большими или маленькими, та же ошибка, на всякий случай исправил на маленькие. Точно osa.h.
Нужно ли подключать его в виде #include <osa.h>
Аватара пользователя
AVT-28
Потрогал лапой паяльник
Сообщения: 378
Зарегистрирован: Вс сен 11, 2011 12:35:11

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

Сообщение AVT-28 »

urry писал(а):

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

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

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

Сообщение 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);
}
//----------------------------------------
Аватара пользователя
testerplus
Встал на лапы
Сообщения: 130
Зарегистрирован: Пн авг 24, 2009 10:41:16
Откуда: SPb
Контактная информация:

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

Сообщение testerplus »

Chettuser писал(а):Осваиваю OSA для PIC'ов.
...
ЗЫ: Ах да! Компилятор у меня PRO mode. А в инструкции чтото писалось про STD.
В инструкции указано, что OSA не будет работать с ПРО-версиями компилятора (не важно, в PRO-mode или в STD-mode)
Аватара пользователя
testerplus
Встал на лапы
Сообщения: 130
Зарегистрирован: Пн авг 24, 2009 10:41:16
Откуда: SPb
Контактная информация:

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

Сообщение testerplus »

Chettuser писал(а):Без разницы - большими или маленькими, та же ошибка, на всякий случай исправил на маленькие. Точно osa.h.
Нужно ли подключать его в виде #include <osa.h>
Эти требования выполнены? (особенно п.4)
Аватара пользователя
FreshMan
Друг Кота
Сообщения: 6296
Зарегистрирован: Пн ноя 22, 2010 00:57:15
Откуда: Ukraine

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

Сообщение FreshMan »

кто знает наверняка у PIC16F874 ROM=4 килобайта или килослова ??? :dont_know:
Tell Me The Truth
Ответить

Вернуться в «Разные вопросы по МК»