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

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

Добавлено: Вт май 17, 2011 11:48:47
Ратмир
Да есть такой в наличии. Как соберу отпишусь что получилось!

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

Добавлено: Вт май 17, 2011 14:42:45
sergeys
Привет! Вопрос вот в чем: как в АВРеАле ставить фузы? Понятно что надо в батник их записать= как? Или скажите пжл прогу чтоб работала с аля 5 проводков и с фейсом.

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

Добавлено: Вт май 17, 2011 15:43:56
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

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

Добавлено: Вт май 17, 2011 16:45:58
Ратмир
Ратмир писал(а):Да есть такой в наличии. Как соберу отпишусь что получилось!
Вот пока без операционника V/дел - 0,01, Время/дел - 20 ms. имею! завтра куплю MPC601

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

Добавлено: Вт май 17, 2011 17:46:14
Ратмир
Минималку поймал где-то 850ms растояние между импульсами , т.е получаем интервал 850 ms - 200 ms, это диапозон моего расходомера, осталось привязать к литрам, но без цифровика ни как :cry:

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

Добавлено: Ср май 18, 2011 11:55:20
Gudd-Head
Chip115 писал(а):Проблема в том что я не понимаю как зажечь точку, скажем третьего разряда, и само число одновременно.
Делать как-нибудь лог. "И" кодов точки и числа перед выводом.

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

Добавлено: Ср май 18, 2011 18:23:42
Chettuser
Выход: лог. И или 2 таблицы символов - с точкой и без неё. В счётчике разрядов воткнуть условие проверки на 3-й разряд, следом же и вызывать 2-ю таблицу.
я делал немного по другому: У меня вывод на 7-сегм. LED производился через регистр 74HC595. Там код удачный получается - для добавления "зажигания точки" нужно было всего лишь инкрементировать выводимое число (в 16-м виде), таким образом обходился одной таблицей.

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

Добавлено: Ср май 18, 2011 18:47:05
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 равно нулю - точка погашена, если единице - горит постоянно, если значение менять раз в пол секунду - точка мигает раз в секунду.

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

Добавлено: Чт май 19, 2011 11:14:45
Gudd-Head
O-LED писал(а):Объясните кто понимает, так можно ли Тини25 затактировать от кварца на 32768гц???
Да, можно. От 400 кГц — это "Crystal Osc.", а 32768 Гц — "Low-Freq. Crystal".
У Меги в режиме Low-Freq. Crystal подключаются встроенные кварцы на 36 пФ.
В АВР студии:
Изображение

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

Добавлено: Чт май 19, 2011 12:07:20
Ратмир
pyzh_man писал(а):Смастерите и посмотрите, что выдает. Отсюда и надо плясать. От реала.
Смастерил, спасибо ребятам с форума :beer: , выдает расходчик следущее: сигнал постоянный 4,83В когда магнит вне зоны датчика Холла, при прохождении мимо датчика 0,00 В, длина импульса где-то 0,1сек прямоугольный, при минимальном расходе 1-2 импульса в сек, при максимальном 8-10 импульсов в сек. В таком виде могу подключить к МК?

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

Добавлено: Чт май 19, 2011 12:21:12
pyzhman
Конечно. МК еще и поотдыхать успеет.

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

Добавлено: Чт май 19, 2011 21:50:10
arhip1810
Здравствуйте товарищи коты. Хочу сделать подобный девайс http://radiohlam.ru/control/RGB_pic12.htm толь хотелось бы сделать побольше эффектов, например как в вложенной картинке. Только проблемы с файлом прошивки, подскажите что где и как исправить чтобы было всё правильно. За много благодарен!

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

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

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

Указывать можно только те fuse, которые хочетя изменить -- avreal сначала зачитыает текущее состояние, потом врезает в него данное в командной строке и результат пишет назад.

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

Добавлено: Пт май 20, 2011 05:54:28
Chettuser
arhip1810 писал(а): хотелось бы сделать побольше эффектов, например как в вложенной картинке. Только проблемы с файлом прошивки, подскажите что где и как исправить чтобы было всё правильно. За много благодарен!
Тут придётся юзать АЦП, файл прошивки исправлять - это "крутое нетрадиционное немецкое порно". Лучше для этого использовать исходник на asm или C.

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

Добавлено: Пт май 20, 2011 09:11:04
pyzhman
Причем здесь АЦП? ШИМ согласно приведенным графикам, естественно все ручками, т.к. исправлять нечего.

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

Добавлено: Пт май 20, 2011 18:16:29
Chettuser
А чем плавные фронты и спады делать предлагаете? Там есть и плавные и цифровые. ШИМ, насколько я помню в этой штуке нет.

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

Добавлено: Пт май 20, 2011 18:18:43
pyzhman
Это обозначена яркость свечения, а не сигнал.

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

Добавлено: Пт май 20, 2011 19:19:11
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

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

Добавлено: Пт май 20, 2011 20:18:11
GRAF
Разобрался. 5-го else if не нужно, иначе лишний раз отрабатывается прерывание таймера и импульс уширяется.

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

Добавлено: Пт май 20, 2011 22:35:32
Xerion
Куда к меге 16ой подключать аналоговую землю?