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

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Аватара пользователя
Ратмир
Друг Кота
Сообщения: 8863
Зарегистрирован: Чт янв 20, 2011 19:54:19
Откуда: Уфа

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

Сообщение Ратмир »

Да есть такой в наличии. Как соберу отпишусь что получилось!
"Мы так жить будем, что наши внуки нам завидовать будут" В.С. Черномырдин
Изображение
Аватара пользователя
sergeys
Поставщик валерьянки для Кота
Сообщения: 1946
Зарегистрирован: Сб сен 11, 2010 13:45:01
Откуда: Екатеринбург

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

Сообщение sergeys »

Привет! Вопрос вот в чем: как в АВРеАле ставить фузы? Понятно что надо в батник их записать= как? Или скажите пжл прогу чтоб работала с аля 5 проводков и с фейсом.
Ко мне можно на "ты", так даже лучше!
Аватара пользователя
Chip115
Сверлит текстолит когтями
Сообщения: 1132
Зарегистрирован: Пт фев 16, 2007 14:18:20
Откуда: Новосибирск
Контактная информация:

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

Сообщение Chip115 »

Всем привет!
Появилась небольшая проблемка...
Имеется 4-х разрядный СИД индикатор.
Индикация статическая.
Имеются функции следующие функции для этого индикатора. // SSISend5CharVolt(0,0,0,0); светится 0000 и т.д
1. Функция вывода показаний на дисплей.
2. Таблицы символов.

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

//----------
// Функция вывода показаний на дисплей
//----------

void SSISend5CharVolt (unsigned char Dig3, unsigned char Dig2, unsigned char Dig1, unsigned char Dig0)
{
   SSISerOE = 1;                                                //Disable indicators

   SSIShiftesWord = CharSymbolsTable[Dig3];
   for(CurrentBitNumber = 0; CurrentBitNumber < 8; CurrentBitNumber++)
   {
      if (1 == SSIBitForRegister)
      {
         SSISerData   = 1;                                       //Current bit is equal 1
      }
      else{
         SSISerData   = 0;                                       //Current bit is equal 0
      }
      SSISerClk = 0;                                             //Begin write data pulse
      SSISerClk = 1;                                             //Fix data in shift register
      SSIShiftesWord = SSIShiftesWord >> 1;
   }
   SSIShiftesWord = CharSymbolsTable[Dig2];
   for(CurrentBitNumber = 0; CurrentBitNumber < 8; CurrentBitNumber++)
   {
      if (1 == SSIBitForRegister){
         SSISerData   = 1;                                       //Current bit is equal 1
      }
      else{
         SSISerData   = 0;                                       //Current bit is equal 0
      }
      SSISerClk = 0;                                             //Begin write data pulse
      SSISerClk = 1;                                             //Fix data in shift register
      SSIShiftesWord = SSIShiftesWord >> 1;
   }
   SSIShiftesWord = CharSymbolsTable[Dig1];
   for(CurrentBitNumber = 0; CurrentBitNumber < 8; CurrentBitNumber++)
   {
      if (1 == SSIBitForRegister){
         SSISerData   = 1;   //Current bit is equal 1
      }
      else{
         SSISerData   = 0;   //Current bit is equal 0
      }
      SSISerClk = 0;         //Begin write data pulse
      SSISerClk = 1;         //Fix data in shift register
      SSIShiftesWord = SSIShiftesWord >> 1;
   }
   SSIShiftesWord = CharSymbolsTable[Dig0];
   for(CurrentBitNumber = 0; CurrentBitNumber < 8; CurrentBitNumber++)
   {
      if (1 == SSIBitForRegister){
         SSISerData   = 1;   //Current bit is equal 1
      }
      else{
         SSISerData   = 0;   //Current bit is equal 0
      }
      SSISerClk = 0;         //Begin write data pulse
      SSISerClk = 1;         //Fix data in shift register
      SSIShiftesWord = SSIShiftesWord >> 1;
   }
   SSISerOE = 0;            //Enable indicators
}





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

/////////////////////////////////////////////////////////////////////////////////////
// About Serial Indicator
data char         CurrentBitNumber;
unsigned int       LED_andmask;      //Word for shifting
data unsigned int SSISendedSymbol;   //Contain symbol sample, prepared for SSI sending
unsigned int  bdata SSIShiftesWord;   //Word for shifting
sbit SSIBitForRegister = SSIShiftesWord ^ 8;   //Serial bit for register
                                    //8 - because of big endian in 8051
unsigned long bdata SSIShiftesDWord;   //Word for shifting
sbit SSIBitForRegister2 = SSIShiftesDWord ^ 24;


sbit SSISerData   = P2^0;      //Pin 2.5 is serial data for 74HC299
sbit SSISerClk   = P2^1;      //Pin 2.4 is serial data for 74HC299
sbit SSISerOE   = P2^2;      //Pin 2.3 is serial data for 74HC299


code unsigned long LongSymbolsTable[12] = {
   0xFFFFFF7F, 0xFFFF7FFF, 0xFF7FFFFF, 0x7FFFFFFF,      //----
   0xBFFFFFFF, 0xDFFFFFFF,                        //||
   0xEFFFFFFF, 0xFFEFFFFF, 0xFFFFEFFF, 0xFFFFFFEF,      //----
   0xFFFFFFF7, 0xFFFFFFFB,                        //||
};

code unsigned int IntSymbolsTable [112] = {
      0x0303, 0x9F03, 0x2503, 0x0D03,   //00, 01, 02, 03
      0x9903, 0x4903, 0x4103, 0x1F03,   //04, 05, 06, 07
      0x0103, 0x0903, 0x039F, 0x9F9F,   //08, 09, 10, 11
      0x259F, 0x0D9F, 0x999F, 0x499F,   //12, 13, 14, 15
      0x419F, 0x1F9F, 0x019F, 0x099F,   //16, 17, 18, 19
      0x0325, 0x9F25, 0x2525, 0x0D25,   //20, 21, 22, 23
      0x9925, 0x4925, 0x4125, 0x1F25,   //24, 25, 26, 27
      0x0125, 0x0925, 0x030D, 0x9F0D,   //28, 29, 30, 31
      0x250D, 0x0D0D, 0x990D, 0x490D,   //32, 33, 34, 35
      0x410D, 0x1F0D, 0x010D, 0x090D,   //36, 37, 38, 39
      0x0399, 0x9F99, 0x2599, 0x0D99,   //40, 41, 42, 43
      0x9999, 0x4999, 0x4199, 0x1F99,   //44, 45, 46, 47
      0x0199, 0x0999, 0x0349, 0x9F49,   //48, 49, 50, 51
      0x2549, 0x0D49, 0x9949, 0x4949,   //52, 53, 54, 55
      0x4149, 0x1F49, 0x0149, 0x0949,   //56, 57, 58, 59
      0x0341, 0x9F41, 0x2541, 0x0D41,   //60, 61, 62, 63
      0x9941, 0x4941, 0x4141, 0x1F41,   //64, 65, 66, 67
      0x0141, 0x0941, 0x031F, 0x9F1F,   //68, 69, 70, 71
      0x251F, 0x0D1F, 0x991F, 0x491F,   //72, 73, 74, 75
      0x411F, 0x1F1F, 0x011F, 0x091F,   //76, 77, 78, 79
      0x0301, 0x9F01, 0x2501, 0x0D01,   //80, 81, 82, 83
      0x9901, 0x4901, 0x4101, 0x1F01,   //84, 85, 86, 87
      0x0101, 0x0901, 0x0309, 0x9F09,   //88, 89, 90, 91
      0x2509, 0x0D09, 0x9909, 0x4909,   //92, 93, 94, 95
      0x4109, 0x1F09, 0x0109, 0x0909,   //96, 97, 98, 99
      0xFFFE, 0xFEFF, 0xFEFE, 0xFFFD,   // ,   ,   .,  -
      0xFDFF, 0xFDFD, 0xFF6D, 0x6DFF,    // -  --
      0xFF93, 0x93FF, 0x9393, 0x9191    //  | |   ||
};

code char CharSymbolsTable[] = {
   0x03, 0x9f, 0x25, 0x0d,                  //0, 1, 2, 3
   0x99, 0x49, 0x41, 0x1F,                  //4, 5, 6, 7
   0x01, 0x09, 0xFFFF, 0xFFFD,               //8, 9, , .
   0xFFFD
};



Проблема в том что я не понимаю как зажечь точку, скажем третьего разряда, и само число одновременно.
Помогите пожалуйста ))
Схемы нет (( собран на четырех HC299M
Теория — это когда все известно, но ничего не работает. Практика — это когда все работает, но никто не знает почему. Мы же объединяем теорию и практику: ничего не работает… и никто не знает почему!
© Альберт Эйнштейн
Аватара пользователя
Ратмир
Друг Кота
Сообщения: 8863
Зарегистрирован: Чт янв 20, 2011 19:54:19
Откуда: Уфа

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

Сообщение Ратмир »

Ратмир писал(а):Да есть такой в наличии. Как соберу отпишусь что получилось!

Вот пока без операционника V/дел - 0,01, Время/дел - 20 ms. имею! завтра куплю MPC601
Вложения
P1050913.JPG
типо расходомер
(162.75 КБ) 321 скачивание
P1050912.JPG
магнитик - супермагнит 12 рубл.
(161.41 КБ) 333 скачивания
P1050910.JPG
минимальная частота вращения колесика, время между имульсами пока измерить нет возможности.
(173.54 КБ) 307 скачиваний
P1050911.JPG
максимальная частота,время межу имп. примерно 200 ms
(168.62 КБ) 316 скачиваний
"Мы так жить будем, что наши внуки нам завидовать будут" В.С. Черномырдин
Изображение
Аватара пользователя
Ратмир
Друг Кота
Сообщения: 8863
Зарегистрирован: Чт янв 20, 2011 19:54:19
Откуда: Уфа

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

Сообщение Ратмир »

Минималку поймал где-то 850ms растояние между импульсами , т.е получаем интервал 850 ms - 200 ms, это диапозон моего расходомера, осталось привязать к литрам, но без цифровика ни как :cry:
"Мы так жить будем, что наши внуки нам завидовать будут" В.С. Черномырдин
Изображение
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20092
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

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

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

Chip115 писал(а):Проблема в том что я не понимаю как зажечь точку, скажем третьего разряда, и само число одновременно.

Делать как-нибудь лог. "И" кодов точки и числа перед выводом.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Chettuser

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

Сообщение Chettuser »

Выход: лог. И или 2 таблицы символов - с точкой и без неё. В счётчике разрядов воткнуть условие проверки на 3-й разряд, следом же и вызывать 2-ю таблицу.
я делал немного по другому: У меня вывод на 7-сегм. LED производился через регистр 74HC595. Там код удачный получается - для добавления "зажигания точки" нужно было всего лишь инкрементировать выводимое число (в 16-м виде), таким образом обходился одной таблицей.
Аватара пользователя
O-LED
Мудрый кот
Сообщения: 1800
Зарегистрирован: Вт окт 05, 2010 01:08:57
Контактная информация:

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

Сообщение O-LED »

Котятки, помогите разобраться в данном вопросе.
ATtiny25.
В даташите на странице 25 есть такая таблица
Изображение

из чего следует, что можно применить кварц с минимальной частотой 400кгц. В тоже время, в даташите на стр26 есть такой абзац

Изображение
что онлайнпереводчиком переводится как -

6,5 Низкочастотные Кварцевый генератор
Для использования 32,768 кГц смотреть кристалла часы источника для данного устройства, низкочастотные кристалла
генератор должен быть выбран путем установки предохранителей CKSEL '0110 '. кристалла должен быть подключен
как показано на рисунке 6-3. Обратитесь к 32 кГц Кварцевый генератор Замечания по применению для подробной информации о
операции осциллятора и как выбрать соответствующие значения для C1 и C2.


Объясните кто понимает, так можно ли Тини25 затактировать от кварца на 32768гц???




Chip115
Глубоко не вникал, но тут все просто. Допустим седьмой бит у бебя точка.
тогда пишим.

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

SSIShiftesWord = CharSymbolsTable[Dig2] ^ (0x80*ZPT);
если ZPT равно нулю - точка погашена, если единице - горит постоянно, если значение менять раз в пол секунду - точка мигает раз в секунду.
KIT
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20092
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

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

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

O-LED писал(а):Объясните кто понимает, так можно ли Тини25 затактировать от кварца на 32768гц???

Да, можно. От 400 кГц — это "Crystal Osc.", а 32768 Гц — "Low-Freq. Crystal".
У Меги в режиме Low-Freq. Crystal подключаются встроенные кварцы на 36 пФ.
В АВР студии:
Изображение
Вложения
Безымянный.GIF
(32.8 КБ) 705 скачиваний
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Аватара пользователя
Ратмир
Друг Кота
Сообщения: 8863
Зарегистрирован: Чт янв 20, 2011 19:54:19
Откуда: Уфа

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

Сообщение Ратмир »

pyzh_man писал(а):Смастерите и посмотрите, что выдает. Отсюда и надо плясать. От реала.

Смастерил, спасибо ребятам с форума :beer: , выдает расходчик следущее: сигнал постоянный 4,83В когда магнит вне зоны датчика Холла, при прохождении мимо датчика 0,00 В, длина импульса где-то 0,1сек прямоугольный, при минимальном расходе 1-2 импульса в сек, при максимальном 8-10 импульсов в сек. В таком виде могу подключить к МК?
Вложения
P1050946.JPG
(174.42 КБ) 1497 скачиваний
Последний раз редактировалось Ратмир Чт май 19, 2011 12:36:11, всего редактировалось 1 раз.
"Мы так жить будем, что наши внуки нам завидовать будут" В.С. Черномырдин
Изображение
Аватара пользователя
pyzhman
Друг Кота
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск
Контактная информация:

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

Сообщение pyzhman »

Конечно. МК еще и поотдыхать успеет.
Docendo discimus
Аватара пользователя
arhip1810
Родился
Сообщения: 9
Зарегистрирован: Сб мар 12, 2011 13:27:30

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

Сообщение arhip1810 »

Здравствуйте товарищи коты. Хочу сделать подобный девайс http://radiohlam.ru/control/RGB_pic12.htm толь хотелось бы сделать побольше эффектов, например как в вложенной картинке. Только проблемы с файлом прошивки, подскажите что где и как исправить чтобы было всё правильно. За много благодарен!
Вложения
hjgj241.zip
(8.56 КБ) 147 скачиваний
Аватара пользователя
avreal
Опытный кот
Сообщения: 842
Зарегистрирован: Чт дек 31, 2009 19:27:45
Откуда: Бровари, Україна
Контактная информация:

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

Сообщение avreal »

sergeys писал(а):Привет! Вопрос вот в чем: как в АВРеАле ставить фузы? Понятно что надо в батник их записать= как?
Ну ключиком -f
Только не забыть -w -- без него новые значения не запишет.
В -f можно перечислять имена и значения отдельных fuse в hex-формате (например, CKSEL=F), можно указывать значение целого байта (например, _LOW=AA).

Значения fuse -- как в табличках в документации от atmel -- там 0, значит и для avreal 0
там для CKSEL3..0 выходит какое-то 1110 -- значит для avreal перевести в шестнадцатеричную форму и задать CKSEL=E

Указывать можно только те fuse, которые хочетя изменить -- avreal сначала зачитыает текущее состояние, потом врезает в него данное в командной строке и результат пишет назад.
Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.
Chettuser

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

Сообщение Chettuser »

arhip1810 писал(а): хотелось бы сделать побольше эффектов, например как в вложенной картинке. Только проблемы с файлом прошивки, подскажите что где и как исправить чтобы было всё правильно. За много благодарен!

Тут придётся юзать АЦП, файл прошивки исправлять - это "крутое нетрадиционное немецкое порно". Лучше для этого использовать исходник на asm или C.
Аватара пользователя
pyzhman
Друг Кота
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск
Контактная информация:

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

Сообщение pyzhman »

Причем здесь АЦП? ШИМ согласно приведенным графикам, естественно все ручками, т.к. исправлять нечего.
Docendo discimus
Chettuser

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

Сообщение Chettuser »

А чем плавные фронты и спады делать предлагаете? Там есть и плавные и цифровые. ШИМ, насколько я помню в этой штуке нет.
Последний раз редактировалось Chettuser Пт май 20, 2011 18:19:23, всего редактировалось 1 раз.
Аватара пользователя
pyzhman
Друг Кота
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск
Контактная информация:

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

Сообщение pyzhman »

Это обозначена яркость свечения, а не сигнал.
Docendo discimus
Аватара пользователя
GRAF
Мудрый кот
Сообщения: 1867
Зарегистрирован: Ср янв 23, 2008 22:11:54
Откуда: Калининград

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

Сообщение GRAF »

Решил сделать 3-фазный генератор меандра на контроллере ATmega8. Использовал таймер2 в ежиме CTC и прерывание по OCR2. По идее таймер должен отсчитывать равные промежутки времени.

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

#include <mega8.h>

#define BLDC_DDR  DDRC
#define BLDC_PORT PORTC
#define UH        PORTC.0
#define UL        PORTC.1
#define VH        PORTC.2
#define VL        PORTC.3
#define WH        PORTC.4
#define WL        PORTC.5



unsigned char a=0;
void main()
{

BLDC_DDR|=0x3F;
BLDC_PORT=0x00;



TCCR2|=(1<<WGM21)|(1<<CS21)|(1<<CS20); // clock/128, CTC
TIMSK|=(1<<OCIE2);//T/C2 compare match interrupt
OCR2=0x0F;
SREG|=0x90;
while (1);
}


interrupt [TIM2_COMP] void TC2_CMP(void)
{
  a+=1;
  //TCNT2=0x5F;
  if (a==1)
  {
    UL=0;
    UH=1;
  } 
  else if (a==2)
  {
    VL=0;
    VH=1;
  }
  else if (a==3)
  {
    UH=0;
    UL=1;
    WL=0;
    WH=1;
  }
  else if (a==4)
  {
    VH=0;
    VL=1;
  }
  else if (a==5)
  {
    WH=0;
    WL=1;
    UL=0;
    UH=1;
    a=0;
  }
}   


Симулирую в протеусе. На ногах контроллера не меандр, а импульсы разной скважности. В программе косяк?
Проект протеуса и прошивку МК прилепил. Прога написана в CVAVR 2.04
Вложения
PRJ.rar
(15.02 КБ) 140 скачиваний
Аватара пользователя
GRAF
Мудрый кот
Сообщения: 1867
Зарегистрирован: Ср янв 23, 2008 22:11:54
Откуда: Калининград

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

Сообщение GRAF »

Разобрался. 5-го else if не нужно, иначе лишний раз отрабатывается прерывание таймера и импульс уширяется.
Xerion
Встал на лапы
Сообщения: 138
Зарегистрирован: Пн дек 06, 2010 11:11:36

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

Сообщение Xerion »

Куда к меге 16ой подключать аналоговую землю?
Ответить

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