Перейти к содержанию

Knazev33

Members
  • Постов

    667
  • Зарегистрирован

  • Посещение

Сообщения, опубликованные Knazev33

  1. Возник вопрос про странное мерцание жк16х2, при выводе на него значение переменной,

    здесь какимто образом влияет задержка,

    char lcd_buffer[31]; //что за число в скобках

    sprintf(lcd_buffer,"ADC=%4umV ",result);// записываем в буфер вторые 2

    lcd_clear(); // очищаем жки

    lcd_puts(lcd_buffer); // теперь выводим в него

    delay_ms(100); //задержка

    Как избавится от мерцания :huh:

  2. Требуется совет спетцов в СИ B) , есть жк 16х2 есть две переменные i и i, переменная i меняется

    от 0 до 2000, переменная ii должна пребовлятся на +1 когда переменная i будет кратна 20, типа когда

    i=20 тогда ii=1, i=40 тогда ii=2, i=60 тогда ii=3 и т д, немогу понять как создать такой алгоритм :unsure:

  3. Привет всем форумчанам!

    Возник вопрос по написанию кода,

    Есть цикл который включается по сработке, в нём начинают мигать диоды "лед1" , по идеии он должен

    мигнуть 10раз и выйти из цикла, но почемуто этого непроисходит :huh:

    немогу понять в чём дело почему условие иф неработает в цикле?

    кто нубудь знает что нужно исправить :D

    while(alarm==1)   //цикл мигания
    {
    led2=1; //свето диод
    rele=0;   //реле
    delay_ms(150);
    led2=0;
    i++; //+1к счётчику
    delay_ms(150);
    my_keys(); // кнопки
    if(i==10){rele=1; alarm=0; led2=1;} //условие выхода из цикла
    }

  4. Буквы это имеется ввиду массив с буквенными элементами типа unsigned char cod[] = {a, b, c, d, e, f, g}; и присвоить в программе отденьному элементу новое значение.

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

    #include <mega8.h>
    #include <delay.h>
    unsigned char  i=1;
    int c;
    int temp;
    
    unsigned int cod[] = {1, 2, 3, 4, 5, 6, 7};  //  массив
    void main(void)
    {
    
    PORTB=0xFF;
    DDRB=0xFF;
    
    PORTC=0x7F;
    DDRC=0x7F;
    
    PORTD=0xFF;
    DDRD=0x00;
    ACSR=0x80;
    
    
    while (1)
         { 
    m1: temp=PIND;
    for(c=0; c<7; c++)//  run key
    {
    if ((temp&1)==0) delay_ms(150);  goto m2;
    temp>>=1;
    }   
    
    m2: if(i==7){i=1;};  i++;  
    cod[i]=c;
    
    if((cod[1]=2)&(cod[2]=4)&(cod[3]=3)&(cod[4]=5)&(cod[5]=1)&(cod[6]=2)){PORTB.0=0;} //open
    else
    {goto m1;}      
    // kod is 2 4 3 5 1 2
    
    
         };
    }
    

  5. Сталкнулся с такой проблемой, при попытке присвоить отдельному элементу массива значение,

    выдаёт ошибку что незнает элемент в массиве. попытка отдельно описать элемены не помогает,

    при описание массива2 выдаёт ошибки в описании кнопок.

    хотя в книжках написано что можно присвоить отдельному элементу массива новое значение

    типа rabtab[1]=231; это тоже неработает.

    #include <mega8.h>
    
    //unsigned char  a1=0, a2=0, a3=0, a4=0, a5=0, a6=0, a7=0;     //x
    //unsigned char  i=3;     //для счётчика
    flash unsigned char cod[] = {a1, a2, a3, a4, a5, a6, a7};   //массив1
    //flash unsigned int cod[7] = {1, 2, 3, 4, 5, 6, 7};  //  массив2
    void main(void)
    {
    while (1)
         { 
    
    if (!PIND.0) {cod[i]=7;}   // присвоить 3му эл-ту значение 7
    if (!PIND.1) {cod[7]=2;}   //    присвоить 7му эл-ту значение 2
    
    
         };
    }
    

    как описано в книжке:

    flash unsigned int rabtab[7] = {1, 2, 3, 4, 5, 6, 7};  
    void main(void)
    {
    while (1)
         { 
    rabtab[1] = 231;   // первому  элементу массива значение 231
    
         };
    }
    

    тоже ошибочно.

  6. я эту схему собирал в качестве управляемого двумя кнопками ЦАП, работало и с ие6 и с ие7

    для ие7(входы Д1-Д4 и Р на землю выв,1,9,10,15,14 вывод 11 на уст вноль), если есть еи6

    попробуй тогда на ней,(по функ выводам 1533ие7 аналог 155ие6 только новее и быстрее), ты прав на счёт -1(4выв) :blink: .тут на подогнать значение сопротивлений цап именно для

    твоего варианта. конденсатор филтр можно подобрать. дд5 служит для ограничения счёта до14,

    она необязательна можно не ставить тип её любой элмент и-не (пипа 155ла7,176ла7,561ла7 и др). кстати как рег-ся усилитель изменением сопротивления или напряжения?

    Конечно такую схему можно и на на одном мк закустарить это легче, но я смотрю что хочется замутить на старой доброй расыпухе. ;)

  7. вот более дороботанная ферсия, с микрухой 155ие6, должна избавить от случайностей :unsure:

    фильт на кондёре должен убрать вплески, нужно с ёмкость эк-ровать на увелечение.

    конешно стабилизатор поставить на 5вольт. Можно DD1 поставить для ограниченич счёта до 14.

    post-57001-1214763287_thumb.jpg

  8. Я думаю что 5проводков это просто не очень хороший програматор, скорее всего у нехватает мощи для пошивки 32меги, попробуй прграматор с буфером уровня h74hc244.

  9. Вот прочитал горы статей про ШИМ в AVR, и нигде ненашол точных указаний как запустить его для Atiny2313,очень бы хотелось,

    а точней как настроить таймеры в CVAVR.

    набрал код из одной статьи, который заставляет менять яркость лампы.

    пробывал настроить таймеры но незнаю точно как :huh:

    прога неработает :blink:

    Мож кто подскажет как тут надо их настроить :rolleyes:

    заранее блогадарен :D

    (сёдня 22 юбилей как 2года назад в армию попал :ph34r: )

    #include "tiny2313.h"
    // fclock=4MHz
    unsigned char pwm = 1;
    unsigned char inc = 1; // inc = 0 - уменьшать, inc = 1 - увеличивать яркость
    void main (void)
    {
    CLKPR=0x80;
    CLKPR=0x00;
    
    PORTA=0x00;
    DDRA=0x00;
    
    PORTB=0xFF;
    DDRB=0xFF;
    
    PORTD=0x7F;
    DDRD=0x00;
    //тимер0
    TCCR0A=0x00;
    TCCR0B=0x00;
    TCNT0=0x00;
    OCR0A=0x00;
    OCR0B=0x00;
    //  тимер1
    TCCR1A=0x83;
    TCCR1B=0x1B;
    
    TCNT1H=0x00;
    TCNT1L=0x00;
    ICR1H=0x00;
    ICR1L=0x00;
    OCR1AH=0x00;
    OCR1AL=0x00;
    OCR1BH=0x00;
    OCR1BL=0x00;
    //
    GIMSK=0x00;
    MCUCR=0x00;
    TIMSK=0x00;
    USICR=0x00;
    ACSR=0x80;
    
     while(1)
     {
    
    TCCR1A=0x40;  // вкл тимер
    
    // Заставляет лампу плавно загораться и гаснуть
    
     if (inc == 1) 
     {
       if (pwm < 254)
       {
         pwm++;  // Увеличиваем яркость лампы, пока не достигнем максимума
         OCR1A = pwm;
       }
       else
       {
         inc = 0;
       }
     }
     else
     {
       if (pwm > 1)
       {
         pwm--;  // Уменьшаем яркость лампы, пока не достигнем минимума
         OCR1A = pwm;
       }
       else
       {
         inc = 1;
       }
     }
    };
    }

×
×
  • Создать...