Jump to content

Knazev33

Members
  • Posts

    667
  • Joined

  • Last visited

Posts posted by Knazev33

  1. Господа!

    Два глупых вопроса:

    1. Можно ли применять другие индикаторы 1602, с руским шрифтом, или обязательно тот что указан в схеме (D-YYH-CTK)?

    2. Есть у ГАММЫ "треск", т.е. звуковое сопровождение зарегестрированных импульсов?

    Хочу повторить конструкцию.

    1)Да, любой с аналогичным контроллером, только распиновка может различатся ,

    какой индикатор у вас?

    2)Есть, но можно сделать именно щелчки(треск) или тональный писк, реализовать.

  2. Скажите пожалуйста какими командами можно усыпить мегу8 и разбудить по прерыванию ???

    нужно чтобы ток потребления в режиме сна был наименьшим

    (пишу в CVAVR)

    Для CVAVR, это команда #asm("sleep");

    будет только когда активирован хотябы один из типов спящиго режимов.

    Выход может быть по разным прерываниям, от внешнего/таймера/вотчдога,

    Самый экономичный режим это Power-down, при это мк не можит выполнятить никаких действий.

  3. Конечноже никакой диод неможет донести информацияю о истенной причине его внутренего изменения сопротивления,

    которым может являтся любое квантовое излучение, гамма/бетта/альфа/рентген/фотон/нейтрон/ЭМВ. и т д,

    Единственный прибор который может полноценно заменить СГ, это сцилятор, но это уже другая история...

  4. Это версии прошивки. Они работают на приборе собранном по схеме

    Есть вторые версии прошивки, но нет второй версии прибора.

    Вторая версия прибора отличается только наличием, кнопки SB5, которая подключена к МК, к порту PB.5 выв 19.

  5. 1)а нельзя-ли прошивку 2.1м2 переделать под 1 СБМ20?

    2)На сайте Паяльник в статье про Г1 внизу дайте народу ссылки на новые схемы, прошивки, печатки..

    1. Можно, но не сейчас, я занят 3й версией прибора.

    2. Дать ссылку со статье про Гамму1, неподсилу обычному пользователю, хотя идея хорошия...

  6. Странная агрессивность форумчан по отношению к моей скромной персоне ...

    Ничего странного :P ; с древних времён радиоотлюбительское дело было, бесплатное, для людей,

    а превращение этого хобби в капитализм это не дело, и не место этому в массах,

    А потраченое время и деньги, сдесь не катит, многие из нас работают за идею, а не из-за поганого бобла...

  7. Другие задачи, значит что-то полезное, а не просто выводить циферки с кнопки,

    всё динамическую индикацию можно запихнуть в обработчик прерывания,

    а в главном цикле только задовать значения выводимое на экран.

  8. Если так, то нужно опять для каждого аналового датчика(диод) ставить своё ацп, каждому передатчик+шифратор,

    на обратной стороне, сигнал принятый приёмником+дешифратор нужно подать на цап потом уж на ацп(КР572ПВ2А).

    вот такая вот ретька получается.

  9. Что уже так быстро прочитал книжку? :rolleyes:

    В коде всё не так :huh: ,

    Вот примерный код твоего кодового замка:

    #include <mega16.h>
    #include <delay.h>
    // x    выход бегущего нуля
    #define x1 PORTA.0
    #define x2 PORTA.1
    #define x3 PORTA.2
    // y    вход для  бегущего нуля
    #define y1 PINA.3
    #define y2 PINA.4
    #define y3 PINA.5 
    #asm
      .equ __lcd_port=0x15 ;PORTC
    #endasm
    #include <lcd.h>
    
    unsigned char Mode=1;       
    unsigned char place;
    bit press;
    unsigned char m1[4] ={0, 1, 1, 1};     //массив матрицы
    unsigned char m2[4] ={1, 0, 1, 1};
    unsigned char m3[4] ={1, 1, 0, 1};
    unsigned char Key_count=0;          //счётчик матрицы
    unsigned char Baza[5];
    unsigned char i;
    
    
    interrupt [TIM2_COMP] void timer2_key_counter(void)
    { 
    x1=m1[Key_count]; 
    x2=m2[Key_count]; 
    x3=m3[Key_count]; 
    if(Key_count>4){Key_count=0;}
    // опрос ккнопок 1-3 
    if((!x1)&(!y1)){press=1;   i++; Baza[i]=1;     delay_ms(200);  }     //1
    if((!x2)&(!y1)){press=1;   i++; Baza[i]=2;     delay_ms(200);  }
    if((!x3)&(!y1)){press=1;   i++; Baza[i]=3;     delay_ms(200);  }  
    //   4-6
    if((!x1)&(!y2)){press=1;   i++; Baza[i]=4;   delay_ms(200); } 
    if((!x2)&(!y2)){press=1;   i++; Baza[i]=5;   delay_ms(200);  }
    if((!x3)&(!y2)){press=1;   i++; Baza[i]=6;  delay_ms(200);  }  
    //   6-9
    if((!x1)&(!y3)){press=1;   i++; Baza[i]=7;  delay_ms(200);  } 
    if((!x2)&(!y3)){press=1;   i++; Baza[i]=8;   delay_ms(200);  }
    if((!x3)&(!y3)){press=1;   i++; Baza[i]=9;  delay_ms(200);  } 
    
    if(i>5)
    {
    i=0; lcd_clear();  Mode=5;     //переход
    }
    }   
    
    void main(void)
    {
    
    PORTA=0x3F;
    DDRA=0x07;
    
    PORTB=0x00;
    DDRB=0xFF;
    
    //   вкл счётчик №2
    TCCR2=0x0F;                              //  предделитель для таймера2 
    TCNT2=0x20;                              //  начальное значение
    OCR2=0xFF;                               //   вершина таймера
    //
    
    TIMSK=0x80; 
    
    
    ACSR=0x80;
    SFIOR=0x00;
    
    #asm("sei") 
    lcd_init(16);
    
    while (1)
         {
    switch (Mode)   //переключения между режимами
    {
    case 1 :lcd_gotoxy(0,0);lcd_putsf("Please Enter Cod"); //просьба ввода кода
    if((place<5) &(press)){place++; lcd_gotoxy(place,1); lcd_putsf("*"); press=0; delay_ms(10); }
    if(place>4){place=0; lcd_clear();}
    break;
    case 2 :
    lcd_gotoxy(0,0);lcd_putsf("Code is OK"); //режим вывода правельного кода
    break;
    case 3 :
    lcd_gotoxy(0,0); lcd_putsf("Invalid Code"); //код неверенbreak;
    delay_ms(3000);   lcd_clear(); place=0;  Mode=1;
    break;
    case 4 :
    if((Baza[1]==3)&(Baza[2]==5)&(Baza[3]==2)&(Baza[4]==1)){lcd_clear(); Mode=2;}
    else
    {lcd_clear(); Mode=3;}
    // COD=*3521*
    break;
               }
         };
    }
    
    

  10. нужно читать не просто про какой попало Си, а си ореентированный на совместную работу с МК,

    Если пишеш прогу в CodeVisionAVR, то прочти книгу А.В Белова,(Создаём ус-ва на МК),

    или хороший самоучитель на сайте Николаева .

    А то что у вас написанно в проге неимеет смысла.

  11. А как переменную MODE обьявить а то я незнаю как ее обьявить?

    <_< Если незнаеш как обьявлять переменные то, весь последующий разговор превращается в метод тыка ;) , советую почетать какую нибудь книжку про программирование мк,

    объявляется в начале проги unsigned char MODE; .

  12. Что за ошибку?, а левая процедура опроса кнопок работает?

    На счёт кода, у тебя необьявлена переменная Mode,

    строка if((place<10) &(press any key)){place++; delay_ms(10);} является примером!,

    флаговая переменая press_any_key выступает в роли определителя нажатия любой кнопки,

    если она равна1 и place<10, то добавилять * на экран, флаг press_any_key должен выставлятся и сбрасоватся

    в функции опроса кнопок, и тоже должна быть объявлена,

    такие фишки как цикл while if(PINB.7==0) ненужно делать в данной проге.

  13. Рекомендую в главном цикле замутить структуру из кейсов,

    а то что написано у тебя ненужно,

    Типо того:

    switch (Mode) {

    case :1

    lcd_gotoxy(0,0); lcd_putsf("Please Enter Code"); //просьба ввода кода

    lcd_gotoxy(place,1); lcd_putsf("*");

    //if((place<10) &(press any key)){place++; delay_ms(10);} //сдвигать звёздочки при любом нажатии

    break;

    case :2

    lcd_gotoxy(0,0); lcd_putsf("Code is OK"); //режим вывода правельного кода

    break;

    case :3

    lcd_gotoxy(0,0); lcd_putsf("Invalid Code"); //код неверен

    break;

    };

    Структура клавиатуры както фигова заделана.

  14. Отличие Гаммы3 от преведущих, в том что будет увеличена точность замеров, будут добавлены

    новые режимы, индикатор разряда баттареи, передача данных на комп для последующиго анализа

    (это ещё в разработке), некоторые другие изменения в интерфейсе и принципиальной схеме.

×
×
  • Create New...