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

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25172
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

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

Сообщение КРАМ »

_Vasilij_ писал(а):
Alexeyslav писал(а):с применением таймера
нету таймеров, кончились, и место в памяти кончается...

Неужели в устройстве столько независимых часов??? :shock:
Вообще то каждый таймер может использоваться РАЗНЫМИ участками программы, важно лишь, чтобы ХОД ВРЕМЕНИ у этих потребителей был одинаковым.
Nevox
Мучитель микросхем
Сообщения: 426
Зарегистрирован: Чт авг 09, 2012 08:57:20

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

Сообщение 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
Последний раз редактировалось Gudd-Head Ср мар 20, 2013 13:47:26, всего редактировалось 2 раза.
Причина: Нарушение п.2.5 Правил Форума
Аватара пользователя
slavokhire5
Прорезались зубы
Сообщения: 202
Зарегистрирован: Пн сен 26, 2011 13:48:25
Откуда: Харьков

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

Сообщение 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 на выходе *задано во время инициализации* держит все время
Осилит дорогу идущий
--------------------------
Пишу на Си за еду
Valer5
Открыл глаза
Сообщения: 44
Зарегистрирован: Чт фев 21, 2013 20:31:33

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

Сообщение Valer5 »

Доброе время суток всем!
Подскажите начинающему программисту весьма преклонного возраста, как записать в два 8ми разрядных регистра 2х байтную переменную и считать её оттуда?
Аватара пользователя
Goldsmith
Опытный кот
Сообщения: 736
Зарегистрирован: Пн янв 10, 2011 03:06:36
Откуда: Ростов-на-Дону
Контактная информация:

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

Сообщение 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);
Любой дурак может писать код. Настоящий профессионал - это тот, кто способен постоянно создавать продукт высокого качества, укладываясь при этом в бюджет.
J. Ganssle
Аватара пользователя
Meteor
Друг Кота
Сообщения: 3961
Зарегистрирован: Пн июл 13, 2009 14:37:39
Откуда: Московская область, наукоград.....
Контактная информация:

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

Сообщение Meteor »

Nevox писал(а):Здравствуйте!...пытаюсь понять как мне сигналы TFSA,TFSB,TFSC,TFSD с единицы на 0 сделать? он же из двух триггеров состоит,у них RST все ресетит, ставлю его хоть на ноль хоть на 1 ,результат 1 и тот же... помогите с этим пожалуйста!
TFSA = !(ASEL&SER_ENA);

А что вы на вход подаете? Если верить написанному, то TFSA=0, если ASEL=1 и SER_ENA=1.
С другими сигналами аналогично.
Полайте им 1, зачем сброс-то мучить...
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
Alexeyslav
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич
Контактная информация:

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

Сообщение Alexeyslav »

что я неправильно делаю со входом в спящий режим?

Вход то нормальный вроде, бесплатный... а выход 10руб.... (а прерывания-то разрешены?)
Аватара пользователя
slavokhire5
Прорезались зубы
Сообщения: 202
Зарегистрирован: Пн сен 26, 2011 13:48:25
Откуда: Харьков

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

Сообщение slavokhire5 »

Alexeyslav, спасибо. Действительно, проблема с глобальным разрешением прерываний была ) я объявил asm("sei") до блока main вместе со всякими глобальными переменными.
Осилит дорогу идущий
--------------------------
Пишу на Си за еду
Аватара пользователя
Леонид Иванович
Друг Кота
Сообщения: 4779
Зарегистрирован: Сб апр 02, 2011 12:40:46
Откуда: Минск
Контактная информация:

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

Сообщение Леонид Иванович »

Nevox писал(а):пытаюсь понять как мне сигналы TFSA,TFSB,TFSC,TFSD с единицы на 0 сделать? он же из двух триггеров состоит,у них RST все ресетит, ставлю его хоть на ноль хоть на 1 ,результат 1 и тот же... помогите с этим пожалуйста!


Ну правильно, если сбросить ASEL, сигнал TFSA будет равен единице. Чему Вы удивляетесь?
Аватара пользователя
slavokhire5
Прорезались зубы
Сообщения: 202
Зарегистрирован: Пн сен 26, 2011 13:48:25
Откуда: Харьков

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

Сообщение slavokhire5 »

Вопрос появился...
Поставил регистр DIDR0 = 1 (TINY13a) и PCMSK = 1. Прерывания по Pin change разрешены.
Дотрагиваюсь до PORTB0 и ловлю прерывание по Pin change.

Но в даташите вроде написано, что если DIDR0 в 1, то PIN отключен и всегда читается как 0. Откуда прерывание? или я чего не понимаю?
Осилит дорогу идущий
--------------------------
Пишу на Си за еду
ut1wpr
Вымогатель припоя
Сообщения: 581
Зарегистрирован: Ср янв 05, 2011 10:03:18

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

Сообщение 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 местами поменяются. :) :) :)
С уважением,
Виктор.
Аватара пользователя
Goldsmith
Опытный кот
Сообщения: 736
Зарегистрирован: Пн янв 10, 2011 03:06:36
Откуда: Ростов-на-Дону
Контактная информация:

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

Сообщение Goldsmith »

ut1wpr писал(а):зависит от того, с какими индейцами мы дружим.
Точно. Поэтому первый вариант в этом смысле надежнее.

Именно из-за неопределенности endianness не привел вариант через манипуляции с адресами, а этот случай как-то умудрился пропустить впопыхах.
Любой дурак может писать код. Настоящий профессионал - это тот, кто способен постоянно создавать продукт высокого качества, укладываясь при этом в бюджет.
J. Ganssle
Аватара пользователя
slavokhire5
Прорезались зубы
Сообщения: 202
Зарегистрирован: Пн сен 26, 2011 13:48:25
Откуда: Харьков

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

Сообщение slavokhire5 »

Вообще фонарь:) в Протеусе бегает нормально, в тиньке вроде идет по циклу, но после второго прерывания по pin change улетает хз куда... может в асме что не так? или я чего не понимаю?
Вложения
prog.rar
исходник на си, схемка в протеусе и т.д.
(50.23 КБ) 121 скачивание
Осилит дорогу идущий
--------------------------
Пишу на Си за еду
Serj324
Встал на лапы
Сообщения: 129
Зарегистрирован: Вт мар 22, 2011 18:41:48

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

Сообщение Serj324 »

Всем привет.
Залочина МК Atmega8 ждет внешнего тактирования.
Как востановить ?
Могу ли я к выводам XTAL залоченой МК, подключить другую Рабочую МК к которой подключен внешний кварц и конденцаторы. Вообщем соединить выводы XTAL.
SmarTrunk
Друг Кота
Сообщения: 6014
Зарегистрирован: Чт ноя 26, 2009 11:16:50
Откуда: Москва

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

Сообщение SmarTrunk »

Собрать генератор меандра, на частоту, думаю, 1-10 МГц (или взять готовый, кварцевый), и подать с него сигнал на ногу МК внешнего тактирования. Некоторые программаторы сами умеют делать такой сигнал...
Аватара пользователя
1essor1
Нашел транзистор. Понюхал.
Сообщения: 162
Зарегистрирован: Вс дек 09, 2012 12:14:44

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

Сообщение 1essor1 »

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

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

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

Сообщение Chettuser »

Вам и пентагоновского суперкомпьютера будет мало - наверняка считаете что то типа катушек? Аналоговая симуляция требует огромных ресурсов, потому и тормозит. Цифровая не так требовательна, но тоже бывает подтормаживает.
Аватара пользователя
1essor1
Нашел транзистор. Понюхал.
Сообщения: 162
Зарегистрирован: Вс дек 09, 2012 12:14:44

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

Сообщение 1essor1 »

Все что там есть - 2 мк, 5 сдвиговых регистров, 10шт 16сегментных индикаторов, ну еще транзиторы и резюки в цифровом режиме. считать то он успевает, а вот анимацию индикаторов в реальном времени проводить - нет
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

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

Сообщение Аlex »

ну еще транзиторы и резюки
Вот они и тормозят.
Аватара пользователя
vitalik_1984
Поставщик валерьянки для Кота
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень
Контактная информация:

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

Сообщение vitalik_1984 »

Можно вообще без резисторов, все равно не успевает.
Ответить

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