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

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

Добавлено: Вт мар 19, 2013 12:23:10
КРАМ
_Vasilij_ писал(а):
Alexeyslav писал(а):с применением таймера
нету таймеров, кончились, и место в памяти кончается...
Неужели в устройстве столько независимых часов??? :shock:
Вообще то каждый таймер может использоваться РАЗНЫМИ участками программы, важно лишь, чтобы ХОД ВРЕМЕНИ у этих потребителей был одинаковым.

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

Добавлено: Ср мар 20, 2013 08:49:06
Nevox
Здравствуйте!Мучаю прошивку в max+плюсовском waveforme и пытаюсь понять как мне сигналы TFSA,TFSB,TFSC,TFSD с единицы на 0 сделать? он же из двух триггеров состоит,у них RST все ресетит, ставлю его хоть на ноль хоть на 1 ,результат 1 и тот же... помогите с этим пожалуйста!
Спойлер

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

SUBDESIGN dac4
(
	SCK		: INPUT;
	MOSI	: INPUT;
	MISO	: OUTPUT;
	RST		: INPUT;
	CS		: INPUT;
	IOW		: INPUT;
	IOR		: INPUT;
	A[4..0]	: INPUT;
	DAT[7..0]: BIDIR;
	TFSA 	: OUTPUT;
 	TFSB 	: OUTPUT;
	TFSC 	: OUTPUT; 
	TFSD 	: OUTPUT;
	TCLK	: OUTPUT;
	DTAO	: OUTPUT;
	DTAI	: INPUT;
	SS		: INPUT;
)
VARIABLE
	ECHO,SER_ENA, ASEL, BSEL, CSEL, DSEL : DFFE;
	D[7..0] : NODE;
BEGIN
	ECHO.CLRN = RST;
	SER_ENA.CLRN = RST;
	ASEL.CLRN = RST;
	BSEL.CLRN = RST;
	CSEL.CLRN = RST; 
	DSEL.CLRN = RST;
	
	ECHO.CLK = !IOW;
	SER_ENA.CLK = !IOW;
	ASEL.CLK = !IOW;
	BSEL.CLK = !IOW;
	CSEL.CLK = !IOW; 
	DSEL.CLK = !IOW;
	
	ECHO.ENA = !CS&(A[4..0]==8);
	SER_ENA.ENA = !CS&(A[4..0]==8);
	ASEL.ENA = !CS&(A[4..0]==8);
	BSEL.ENA = !CS&(A[4..0]==8);
	CSEL.ENA = !CS&(A[4..0]==8); 
	DSEL.ENA = !CS&(A[4..0]==8);

	ECHO.D = DAT1;
	SER_ENA.D = DAT0;
	ASEL.D = DAT2;
	BSEL.D = DAT3;
	CSEL.D = DAT4; 
	DSEL.D = DAT5;

	DTAO = MOSI;
	TCLK = SCK;
	TFSA = !(ASEL&SER_ENA);
 	TFSB = !(BSEL&SER_ENA);
	TFSC = !(CSEL&SER_ENA); 
	TFSD = !(DSEL&SER_ENA);
	MISO = TRI(DTAI,SER_ENA&ECHO);

 D[] =  (H"60"&(A[4..0]==0)) #
		(H"28"&(A[4..0]==1))#
		(H"04"&(A[4..0]==2)) #
		(H"00"&(A[4..0]==3)) #
		(H"00"&(A[4..0]==4)) #
		(H"08"&(A[4..0]==5)) #
		(H"00"&(A[4..0]==6)) #
		(H"00"&(A[4..0]==7)) #
--- main part
		((GND,GND,DSEL,CSEL,BSEL,ASEL,ECHO,SER_ENA)&(A[4..0]==8));

	DAT0 = TRI(D0,!CS&!IOR);
	DAT1 = TRI(D1,!CS&!IOR);
	DAT2 = TRI(D2,!CS&!IOR);
	DAT3 = TRI(D3,!CS&!IOR);
	DAT4 = TRI(D4,!CS&!IOR);
	DAT5 = TRI(D5,!CS&!IOR);
	DAT6 = TRI(D6,!CS&!IOR);
	DAT7 = TRI(D7,!CS&!IOR);
 END;
язык AHDL , микросхема EMP7064STC44-10

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

Добавлено: Чт мар 21, 2013 16:45:41
slavokhire5
slavokhire5 писал(а):здравствуйте, коты)
прошил attiny13a c фьюзами на встроенный тактовый 128кГц (скрин не сделал). теперь программатор avr910usb не может перешить МК, пишет, что выставлены локбиты 1 и 2. сигнатуры считывает. фьюзы читает все запрограммированными (CVAVR). пробовал программатором к tiny подключиться на LOWSCK. та же картина

я запорол МК неправильными фьюзами, или это из-за низкой тактовой?

таки запорол) следующая тинька прошилась уже хорошо. появился новый вопрос:
что я неправильно делаю со входом в спящий режим?

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

	while(1)											
	{

		volatile signed char A1[5] = {0, 0, 0, 0, 0};
			
		for (i = 0; i < 100; i++)
		{
			WDTCR |= _BV(WDTIE) | _BV(WDP0);			// watchdog работает в режиме ПРЕРЫВАНИЯ, прерывание через 32мс
			set_sleep_mode(SLEEP_MODE_PWR_DOWN);
			sleep_enable();  
			sleep_cpu();     
			sleep_disable();

			for (j = 0; j < 3; j++)
			{
				if (PINB & (1 << j))
					A1[j]++; 
			}
			PORTB ^= 0b00010000;
			_delay_us(100);
			PORTB ^= 0b00010000;
		}
.........
до мигания контроллер не доходит - скорее всего не вылазит из спящего. но 1 на выходе *задано во время инициализации* держит все время

Как ввести переменную типа Long int в два регистра

Добавлено: Чт мар 21, 2013 20:00:30
Valer5
Доброе время суток всем!
Подскажите начинающему программисту весьма преклонного возраста, как записать в два 8ми разрядных регистра 2х байтную переменную и считать её оттуда?

Re: Как ввести переменную типа Long int в два регистра

Добавлено: Чт мар 21, 2013 20:17:20
Goldsmith
Valer5 писал(а):как записать в два 8ми разрядных регистра 2х байтную переменную и считать её оттуда?
Например, так:

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

uint8_t r_lo, r_hi;
uint16_t v;

...

r_lo = v % 0x100;
r_hi = v / 0x100;

// или так
r_lo = (uint8_t)v;
r_hi = (uint8_t)(v >> 8);

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

Добавлено: Чт мар 21, 2013 21:59:44
Meteor
Nevox писал(а):Здравствуйте!...пытаюсь понять как мне сигналы TFSA,TFSB,TFSC,TFSD с единицы на 0 сделать? он же из двух триггеров состоит,у них RST все ресетит, ставлю его хоть на ноль хоть на 1 ,результат 1 и тот же... помогите с этим пожалуйста!
TFSA = !(ASEL&SER_ENA);
А что вы на вход подаете? Если верить написанному, то TFSA=0, если ASEL=1 и SER_ENA=1.
С другими сигналами аналогично.
Полайте им 1, зачем сброс-то мучить...

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

Добавлено: Чт мар 21, 2013 22:46:39
Alexeyslav
что я неправильно делаю со входом в спящий режим?
Вход то нормальный вроде, бесплатный... а выход 10руб.... (а прерывания-то разрешены?)

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

Добавлено: Пт мар 22, 2013 10:28:52
slavokhire5
Alexeyslav, спасибо. Действительно, проблема с глобальным разрешением прерываний была ) я объявил asm("sei") до блока main вместе со всякими глобальными переменными.

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

Добавлено: Пт мар 22, 2013 15:03:29
Леонид Иванович
Nevox писал(а):пытаюсь понять как мне сигналы TFSA,TFSB,TFSC,TFSD с единицы на 0 сделать? он же из двух триггеров состоит,у них RST все ресетит, ставлю его хоть на ноль хоть на 1 ,результат 1 и тот же... помогите с этим пожалуйста!


Ну правильно, если сбросить ASEL, сигнал TFSA будет равен единице. Чему Вы удивляетесь?

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

Добавлено: Пт мар 22, 2013 15:10:40
slavokhire5
Вопрос появился...
Поставил регистр DIDR0 = 1 (TINY13a) и PCMSK = 1. Прерывания по Pin change разрешены.
Дотрагиваюсь до PORTB0 и ловлю прерывание по Pin change.

Но в даташите вроде написано, что если DIDR0 в 1, то PIN отключен и всегда читается как 0. Откуда прерывание? или я чего не понимаю?

Re: Как ввести переменную типа Long int в два регистра

Добавлено: Пт мар 22, 2013 19:17:29
ut1wpr
Goldsmith писал(а):Например, так:
Спойлер

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

uint8_t r_lo, r_hi;
uint16_t v;

...

r_lo = v % 0x100;
r_hi = v / 0x100;

// или так
r_lo = (uint8_t)v;
r_hi = (uint8_t)(v >> 8);
Ага. Только зависит от того, с какими индейцами мы дружим. Если с большим индейцем, то lo и hi местами поменяются. :) :) :)

Re: Как ввести переменную типа Long int в два регистра

Добавлено: Пт мар 22, 2013 20:15:24
Goldsmith
ut1wpr писал(а):зависит от того, с какими индейцами мы дружим.
Точно. Поэтому первый вариант в этом смысле надежнее.

Именно из-за неопределенности endianness не привел вариант через манипуляции с адресами, а этот случай как-то умудрился пропустить впопыхах.

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

Добавлено: Сб мар 23, 2013 11:11:48
slavokhire5
Вообще фонарь:) в Протеусе бегает нормально, в тиньке вроде идет по циклу, но после второго прерывания по pin change улетает хз куда... может в асме что не так? или я чего не понимаю?

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

Добавлено: Сб мар 23, 2013 18:18:58
Serj324
Всем привет.
Залочина МК Atmega8 ждет внешнего тактирования.
Как востановить ?
Могу ли я к выводам XTAL залоченой МК, подключить другую Рабочую МК к которой подключен внешний кварц и конденцаторы. Вообщем соединить выводы XTAL.

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

Добавлено: Сб мар 23, 2013 18:51:14
SmarTrunk
Собрать генератор меандра, на частоту, думаю, 1-10 МГц (или взять готовый, кварцевый), и подать с него сигнал на ногу МК внешнего тактирования. Некоторые программаторы сами умеют делать такой сигнал...

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

Добавлено: Вс мар 24, 2013 10:45:31
1essor1
Подскажите пожалуйста, кто Шпротеусом пользуется - как снизить нагрузку на ЦП? а то пишет: нагрузка 100% анимации в реальном времени не будет :( я уже и выгрузил все из памяти, загрузка 1% память занятая 552мб. запускаю эмуляцию грузит до 100%
у меня 2 ядра по 2,2 и 2гига оперативы - я так понимаю маловато, да?

А может есть какие то хитрости в настройки анимации в самом протеусе?

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

Добавлено: Вс мар 24, 2013 10:54:59
Chettuser
Вам и пентагоновского суперкомпьютера будет мало - наверняка считаете что то типа катушек? Аналоговая симуляция требует огромных ресурсов, потому и тормозит. Цифровая не так требовательна, но тоже бывает подтормаживает.

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

Добавлено: Вс мар 24, 2013 11:01:00
1essor1
Все что там есть - 2 мк, 5 сдвиговых регистров, 10шт 16сегментных индикаторов, ну еще транзиторы и резюки в цифровом режиме. считать то он успевает, а вот анимацию индикаторов в реальном времени проводить - нет

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

Добавлено: Вс мар 24, 2013 11:02:51
Аlex
ну еще транзиторы и резюки
Вот они и тормозят.

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

Добавлено: Вс мар 24, 2013 14:45:55
vitalik_1984
Можно вообще без резисторов, все равно не успевает.