Страница 414 из 628
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Вт мар 19, 2013 12:23:10
КРАМ
_Vasilij_ писал(а):Alexeyslav писал(а):с применением таймера
нету таймеров, кончились, и место в памяти кончается...
Неужели в устройстве столько независимых часов???
Вообще то каждый таймер может использоваться РАЗНЫМИ участками программы, важно лишь, чтобы ХОД ВРЕМЕНИ у этих потребителей был одинаковым.
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
Можно вообще без резисторов, все равно не успевает.