К списку форумов К списку тем
Регистрация    Правила    Главная форума    Поиск   
Имя: Пароль:
Рекомендовать в новости

Разработать контроллер - источник импульсов

Гость
0 - 30.09.2014 - 19:46
Хороший знакомый, и кстати, хороший заказчик, попросил найти толкового исполнителя.
контроллер должен выдавать две импульсные последовательности, сдвиг между ними всегда в пол-периода, в остальном они идентичны.
Также, должно быть 4 кнопки: 2 кнопки увеличивают/уменьшают период импульсов. От 0.2мс, до 0.006мс. Другие 2 кнопки, увеличивают/уменьшают длительность импульсов, От 0.006мс, до 0.1мс. Длительность меньше чем пол-периода. И наверно понадобятся кнопки для более крупных шагов, ну это обсудите по ходу. Это всё:))). Пишите предложения тут, я дам заказчику ссылку на тему.



Гость
1 - 30.09.2014 - 21:34
типа того, что ли -
Гость
2 - 30.09.2014 - 23:49
1-8pin > Думаю это примерно то, что нужно, не знаю нужны ли индикаторы. Удачно вам обоим договориться!:)
Гость
3 - 01.10.2014 - 06:53
я всего лишь полюбопытствовал, делать времени нет.
Гость
4 - 01.10.2014 - 10:45
вообще по описанию выходной сигнал должен быть похож на то что генерируется копеечным шим-контроллером наподобие TL494.
Гость
5 - 02.10.2014 - 02:59
Народ, не забывайте чистить папку с личными сообщениями, при переполнении, сообщения не доходят.
Цитата:
Сообщение от 8pin Посмотреть сообщение
наподобие TL494
не помню даташит, но если там есть RC цепи по обоим параметрам, то красиво:). Заказчик что-то пропал:), может уже не надо, может позже появится.
Гость
6 - 02.10.2014 - 09:54
да пофиг на заказчика, при всём уважении ) сколько там такая разработка может стоить - 500 рублей? больше мороки.

частоту там можно регулировать изменяя R в RC а скважность напряжением на компараторе. точность только не очень. в принципе схема на мк не намного сложнее -

Код:
/*****************************************************
CVAVR V2.05

Chip type               : ATmega8A
AVR Core Clock frequency: 2 MHz
*****************************************************/

#include <mega8.h>

#define A PORTC.2
#define B PORTC.3                 
#define C PORTC.4
#define D PORTC.5
#define E PORTD.0
#define F PORTD.1
#define G PORTD.2
#define DP PORTD.3

#define A0 PORTD.4
#define A1 PORTD.5
#define A2 PORTD.6

#define B0 PORTD.7
#define B1 PORTB.0
#define B2 PORTB.3

#define key_F_up PINB.5
#define key_F_dn PINB.4
#define key_D_up PINC.1
#define key_D_dn PINC.0

char d_buffer[6]={1,1,1,2,2,2**;

enum btn_states 
{b_prs, b_rls, b_hold** F_up, F_dn, D_up, D_dn;

unsigned int tmr[5];

unsigned char fr, dr;
eeprom unsigned char efr, edr;

void gpio_init ()
**
DDRB  = 0b11001111;
PORTB = 0b00110000;

DDRD  = 0b11111111;
PORTD = 0b00000000;

DDRC  = 0b11111100;
PORTC = 0b00000011;
**

void T0_init ()
**
   TCCR0=0x05; //1,953kHz
   TIMSK=1<<TOIE0;
**

void T1_init ()
**
  unsigned int x;
   
   TCCR1A = 1<<COM1A1|1<<COM1B1|1<<COM1B0;
   TCCR1B = 1<<CS10|1<<WGM13; // no presc, icr1-top  
   
   ICR1  = 200; 
   x=ICR1/2;
   OCR1A = ICR1-x;
   OCR1B = x;

**

void convert_data_a (unsigned int x)
**
char k;
  for (k=0;k<3;k++)
  **
   d_buffer[k]=x%10;
   x/=10;
  ** 
 
**
void convert_data_b (unsigned int y)
**
char k;

  for (k=3;k<6;k++)
  **
   d_buffer[k]=y%10;
   y/=10;
  **  
**

void display_data ()
**
  static char d_cnt=0; 
  
  (d_cnt)?(d_cnt--):(d_cnt = 5);
  A0=A1=A2=B0=B1=B2=0; DP=1;

  switch (d_buffer[d_cnt])
 **

  case 0:  A=0; B=0; C=0; D=0; E=0; F=0; G=1; break;
  case 1:  A=1; B=0; C=0; D=1; E=1; F=1; G=1; break;
  case 2:  A=0; B=0; C=1; D=0; E=0; F=1; G=0; break;
  case 3:  A=0; B=0; C=0; D=0; E=1; F=1; G=0; break;
  case 4:  A=1; B=0; C=0; D=1; E=1; F=0; G=0; break;
  case 5:  A=0; B=1; C=0; D=0; E=1; F=0; G=0; break;
  case 6:  A=0; B=1; C=0; D=0; E=0; F=0; G=0; break;
  case 7:  A=0; B=0; C=0; D=1; E=1; F=1; G=1; break;
  case 8:  A=0; B=0; C=0; D=0; E=0; F=0; G=0; break;
  case 9:  A=0; B=0; C=0; D=0; E=1; F=0; G=0; break;
  case 10: A=1; B=1; C=1; D=1; E=1; F=1; G=1; break;
  case 11: A=1; B=1; C=1; D=0; E=1; F=1; G=1; break; //_
  default: A=1; B=1; C=1; D=1; E=1; F=1; G=0; break; //-
 **

   switch (d_cnt)
 **
  case 0: A0=1; break;
  case 1: A1=1; break;
  case 2: A2=1; break;
  case 3: B0=1; break; 
  case 4: B1=1; break;
  case 5: B2=1; break;  
  
  default:      break;
 **
 **

void scan_keys ()
**
#define lp  50
#define lh  15

static unsigned char count[8];

if (key_F_dn)** F_dn = b_rls;**
if (key_F_up)** F_up = b_rls;**
if (key_D_dn)** D_dn = b_rls;**
if (key_D_up)** D_up = b_rls;**

if (!key_F_dn) {count[0]++; ** 
else {count[0]=count[4] = 0;**
if (!key_F_up) {count[1]++; ** 
else {count[1]=count[5] = 0;**
if (!key_D_dn) {count[2]++; ** 
else {count[2]=count[6] = 0;**
if (!key_D_up) {count[3]++; ** 
else {count[3]=count[7] = 0;**


if ((count[0] > lp)&&(F_dn != b_hold)) {F_dn = b_prs; count[0] = 0; count[4]++;**
if ((count[1] > lp)&&(F_up != b_hold)) {F_up = b_prs; count[1] = 0; count[5]++;** 
if ((count[2] > lp)&&(D_dn != b_hold)) {D_dn = b_prs; count[2] = 0; count[6]++;**
if ((count[3] > lp)&&(D_up != b_hold)) {D_up = b_prs; count[3] = 0; count[7]++;**

if ((count[4] > lh)&&(F_dn == b_prs)) {F_dn = b_hold; count[4] = 0;**
if ((count[5] > lh)&&(F_up == b_prs)) {F_up = b_hold; count[5] = 0;**
if ((count[6] > lh)&&(D_dn == b_prs)) {D_dn = b_hold; count[6] = 0;**
if ((count[7] > lh)&&(D_up == b_prs)) {D_up = b_hold; count[7] = 0;**
**

interrupt [TIM0_OVF] void t0_ovf_isr()
**
   char i;
   
   for(i=5;i;i--) 
   **
    if(tmr[i-1])tmr[i-1]--;
   **

**

void afr();

void main(void)
**
  gpio_init(); 
  T0_init();
  T1_init();  
 
  
  
  if((efr==0xff)){efr = 200; edr=efr/2;**
  fr=efr; 
  dr=edr;

#asm("sei")
while (1)
      **
         
         scan_keys();      
         display_data(); 
         convert_data_a(dr);
         convert_data_b(fr);
         afr();
          


         

      **
**

void afr()
**
  static bit trg0=0, trg1=0, trg2=0, trg3=0;
  static bit trg4=0;
  
  if(F_up==b_rls){trg0--;**
  if(F_dn==b_rls){trg1--;**
  if(D_up==b_rls){trg2--;**
  if(D_dn==b_rls){trg3--;**  
  
  if((F_up==b_prs)&&(!trg0)){trg0++; if(fr<200)fr++;**
  if((F_dn==b_prs)&&(!trg1)){trg1++; if(fr>6)fr--;**  
  if((D_up==b_prs)&&(!trg2)){trg2++; if(dr<100)dr++;**
  if((D_dn==b_prs)&&(!trg3)){trg3++; if(dr>3)dr--;**  
  
  if((F_up==b_hold)&&(!tmr[0])){tmr[0]=2; if(fr<200-10)fr+=10; else fr=200;**
  if((F_dn==b_hold)&&(!tmr[1])){tmr[1]=2; if(fr>6+10)fr-=10;   else fr=6;**  
  if((D_up==b_hold)&&(!tmr[2])){tmr[2]=2; if(dr<100-10)dr+=10; else dr=100;**
  if((D_dn==b_hold)&&(!tmr[3])){tmr[3]=2; if(dr>3+10)dr-=10;   else dr=3;**  

   ICR1  = fr; 
   if(dr<fr/2){OCR1A = dr; OCR1B = ICR1-dr;**
   else {dr= ICR1/2; OCR1A=OCR1B = dr;** 
   
   if(((efr!=fr)||(edr!=dr))&&(!trg4)){trg4=1; tmr[4]=50;**  
   if((trg4)&&(!tmr[4])) {trg4=0; efr=fr; edr=dr;**
    
  
**
Гость
7 - 02.10.2014 - 22:52
Сколько тысяч девайсов надо?
8 - 03.10.2014 - 07:07
7-Фанат NASCAR > не тысяч, а миллионов. Мелко мыслишь.
Гость
9 - 03.10.2014 - 08:15
ну, с учётом того что это очень полезное устройство должно быть в каждом доме то да. а если бы не санкции то рынок сбыта был бы ещё шире.
Гость
10 - 05.10.2014 - 12:30
Автор, вы нас пришли спросить сколько бы мы запросили денег за такую разработку? Далее вы говорите своему заказчику, что вот народ говорит, что это стоит столько то, а я с вас беру на 10% меньше и продаёте свою разработку http://bortsoff.narod.ru/Gen.htm не за 1000 рублей, а за 10000 к примеру. Ну это по русски. Пропиарились оч хорошо.
Гость
11 - 05.10.2014 - 17:59
В общем я заказчик. Понадобился такой контроллер для исследований... На логике сложно в регулировании и оценке.. поэтому спросил можно ли сваять такое за недорого. Можно без индикации. А Вас тут понесло...по русски
Гость
12 - 05.10.2014 - 19:20
11-bolleg > Исследования - это интересно! Можно подробности?
Гость
13 - 05.10.2014 - 20:31
Пока одни мысли, будет результат напишу если интересно.При личном знакомстве можно и обговорить
Гость
14 - 06.10.2014 - 00:09
13-bolleg >если исследования, быстренько освойте ардуино, и мини прикупите за полтыщи. Пригодицо в других нетипичных задачах.
Сложного ничего.
Гость
15 - 06.10.2014 - 00:11
Ну и бребоард с проводками разными заодно
Гость
16 - 06.10.2014 - 02:37
FOT2, ну вот:(.
А я искренне думал, что как действующий разработчик, я абсолютный чемпион по скрытности и незаметности:). Уж если и обмолвлюсь, то дважды косвенно, так что поймёт лишь тот, кто итак уже знает. А оно вот значит как... Эх:((.
Гость
17 - 06.10.2014 - 09:09
лучше купить лазерный принтер за две тыщщи, чем ардуину с проводками.
Гость
18 - 06.10.2014 - 13:36
17-8pin > Фу, как грубо )))
Гость
19 - 06.10.2014 - 15:04
Цитата:
как грубо
каждому, как известно, своё.
кстати - архив с прошивкой, кодом и проектом proteus pgen.rar
- возможно кому нибудь пригодится.
Гость
20 - 07.10.2014 - 00:28
19-8pin >лучше устроиться работать высокооплачиваемым футболистом)
Принтер плесенью покрылся. Не в нашей стране..
Гость
21 - 07.10.2014 - 06:01
футбол это скучно.
22 - 20.10.2014 - 05:21
Если еще актуально, можем обсудить
Гость
23 - 22.10.2014 - 21:51
пиши мне на почту, созвонимся... актуально пока.
bolleg@bk.ru


К списку вопросов






Copyright ©, Все права защищены