Кто любит RISC в жизни, заходим, не стесняемся.
Ответить

Re: CUbeide 1.8 глючит.

Ср янв 26, 2022 21:29:23

ivan dimir, опять Вы за своё ? Буду килять нахрен Ваши посты, за такое неуважение к нам !

Re: CUbeide 1.8 глючит.

Ср янв 26, 2022 21:31:17

ivan dimir, опять Вы за своё ? Буду килять нахрен Ваши посты, за такое неуважение к нам !

А как правильно?

Re: CUbeide 1.8 глючит.

Ср янв 26, 2022 21:36:36

Вы не видите разницу, между форматированием Вашего выложенного кода и других участников ? Серьёзно ? :facepalm:

Re: CUbeide 1.8 глючит.

Ср янв 26, 2022 21:52:49

Вы не видите разницу, между форматированием Вашего выложенного кода и других участников ? Серьёзно ? :facepalm:

Вижу .Дайте мне инструкцию.И переведите на мой язык.Простолюдинов(тюрский)?

Re: CUbeide 1.8 глючит.

Ср янв 26, 2022 21:57:38

ivan dimir писал(а):Дайте мне инструкцию
А ещё Вам что дать ? Ключи от квартиры не надо ? :)))

Интернетом тоже не умеете пользоваться ?

Re: CUbeide 1.8 глючит.

Ср янв 26, 2022 22:01:54

Ну обьясните мне нерусскому как правильно вводить программу на белом фоне чтоб было?[code][/code]

Re: CUbeide 1.8 глючит.

Ср янв 26, 2022 22:06:27

ivan dimir, нажимаешь [спойлер][код]сюда вставляешь свой код[/код][/спойлер]

Re: CUbeide 1.8 глючит.

Ср янв 26, 2022 22:13:30

ivan dimir, нажимаешь [спойлер][код]сюда вставляешь свой код[/код][/спойлер]
А спойлер что это и где находится.Я чтото не замечал?

Re: CUbeide 1.8 глючит.

Ср янв 26, 2022 22:25:06

Спойлер
Код:
Сюда копируем код !

Изображение
2022-01-26_22-20-30.png
(18.2 KiB) Скачиваний: 263

Re: CUbeide 1.8 глючит.

Ср янв 26, 2022 23:31:23

Спойлер
Код:
int main(void)
{
    RCC_init();
    init_systimer();
    AHB1ER_init();
    GPIO_init();

     timer_2_init();
    I2C1_Init();
    LCD_ini();
    LCD_Clear();
   while(1)
   {


        if((GPIOB->IDR&GPIO_IDR_IDR_5)==0)
              {
                 delay_ms(10);
                 flag=1;
              }

              if((flag==1)&&(GPIOB->IDR&GPIO_IDR_IDR_5))
             {
              flag=0;
              menu_lcd++;
              menu_btn++;
             }
              if(menu_btn==1)
              {
                                          if((GPIOB->IDR&GPIO_IDR_IDR_4)==0)
                                           {
                                          // __disable_irq ();

                                          //   if(pauza1>20)
                                          //  {
                                           //    pauza1=0;
                                              //a++;
                                               if (a==4095)
                                               {
                                                   a=0;
                                               }
                                                a++;
                                          // }

                                           }
                                             //__enable_irq ();
                                          if((GPIOB->IDR&GPIO_IDR_IDR_8)==0)
                                          {
                                              //__disable_irq ();
                                              //if(pauza1>20)
                                            // {
                                            //  pauza1=0;
                                               ///a--;
                                               if (a==0)
                                               {
                                                a=4095;
                                               }
                                              a--;
                                            // }
                                         }

              }
              if(menu_btn==2)
              {
                                                  if((GPIOB->IDR&GPIO_IDR_IDR_4)==0)
                                                 {
                                                    //  __disable_irq ();
                                                        //pauza1=0;
                                                    if (b==4095)
                                                        {
                                                        b=0;
                                                        }
                                                       b++;

                                                 }
                                                   //__enable_irq ();
                                                 if((GPIOB->IDR&GPIO_IDR_IDR_8)==0)
                                                  {
                                                 //   __disable_irq ();
                                                    if (b==0)
                                                      {
                                                       b=4095;
                                                     }
                                                       b--;

                                                  }
              }
              if(menu_btn==3)
              {
                                             if((GPIOB->IDR&GPIO_IDR_IDR_4)==0)
                                            {
                                             //  __disable_irq ();
                                               if (c==4095)
                                                   {
                                                   c=0;
                                                   }
                                               c++;

                                            }
                                           // __enable_irq ();
                                            if((GPIOB->IDR&GPIO_IDR_IDR_8)==0)
                                             {
                                            //   __disable_irq ();
                                               if (c==0)
                                                 {
                                                  c=4095;
                                                }
                                                  c--;
                                             }
              }
              if(menu_btn==4)
              {
                                        if((GPIOB->IDR&GPIO_IDR_IDR_4)==0)
                                        {
                                            // __disable_irq ();
                                            if ( d==4095)
                                             {
                                             d=0;
                                             }
                                            d++;

                                         }
                                        //  __enable_irq ();
                                         if((GPIOB->IDR&GPIO_IDR_IDR_8)==0)
                                          {
                                         //   __disable_irq ();

                                            // pauza1=0;

                                            if (d==0)
                                             {
                                             d=4095;
                                             }
                                            d--;

                                            }
                                        // __enable_irq ();
              }
              if(menu_btn==5)
              {
                 menu_btn=0;
              }
                if(menu_lcd==0)
                {

                   LCD_SetPos(0,0);
                     LCD_String("Bobr_stm32");
                    }


                 if(menu_lcd==1)
                  {


                        sprintf(buf,"     a=%2d",a);
                         LCD_SetPos(0,1);
                         LCD_String(buf);

                 }
                  if(menu_lcd==2)
                  {


                         sprintf(buf2,"b=%2d        ",b);
                           LCD_SetPos(0,0);
                         LCD_String(buf2);
                      }
                  if(menu_lcd==3)
                   {

                           sprintf(buf4,"c=%2d     ",c);
                          LCD_SetPos(0,0);
                           LCD_String(buf4);
                      }
                    if(menu_lcd==4)
                    {

                       sprintf(buf6,"d=%2d      ",d);
                        LCD_SetPos(0,0);
                        LCD_String(buf6);

                    }
                   if(menu_lcd==5)
                   {
                     menu_lcd=0;

                  }

   }

}
 

Re: CUbeide 1.8 глючит.

Ср янв 26, 2022 23:42:06

Маладец :write: :music: :tea:

Re: CUbeide 1.8 глючит.

Чт янв 27, 2022 06:45:07

Да при создании проекта в CUbeide 1.8 .Я создаю папки и хочу создать файлы.Компилятор не видит эти папки ? А видит те папки которые созданные копилятором.Раньше такого не было.?

Re: CUbeide 1.8 глючит.

Чт янв 27, 2022 07:07:00

Чтож. Кажется, я вижу причину.
1. Используйте более мягкие проверки переменных:
Код:
   if(menu_btn==1) {
      if((GPIOB->IDR&GPIO_IDR_IDR_4)==0) {
         if (a >= 4095) {
            a = 0;
         }
         a++;
      }
      if((GPIOB->IDR&GPIO_IDR_IDR_8)==0) {
         if (a >= 4096) {
            a = 4095;
         }
         a--;
      }
<...>


Либо измените тип переменной "а" на int16_t (она станет знаковой, и это даже лучше):
Код:
   if(menu_btn==1) {
      if((GPIOB->IDR&GPIO_IDR_IDR_4)==0) {
         if (a >= 4095) {
            a = 0;
         }
         a++;
      }
      if((GPIOB->IDR&GPIO_IDR_IDR_8)==0) {
         if (a <= 0) {
            a = 4095;
         }
         a--;
      }
<...>

Та же проблема с переменной "b" - она БЕЗЗНАКОВАЯ. Она не может принимать отрицательных значений, но её технически можно переполнить. Случайно.

2. Работа со строковым буфером... неудачная.
Разберём строку:
Код:
sprintf(buf,"     a=%2d",a);

В результате получим вывод:
Код:
sprintf(buf,"     a=%2d",200) ->
"     a=200" (10 символов)
sprintf(buf,"     a=%2d",10) ->
"     a=10" (9 символов)
sprintf(buf,"     a=%2d",4096) ->
"     a=4096" (11 символов)

Естественно, с числом вплоть до 99 всё будет работать. Но printf с аргументом %2d - будет резервировать только ДВА знакоместа под число. Всё, что не поместится будет печататься дальше.
Исправим на
Код:
sprintf(buf,"     a=%4d",a)

Теперь будем получать такой вывод:
Код:
sprintf(buf,"     a=%4d",1) ->
"     a=   1" (11 символов)
sprintf(buf,"     a=%4d",42) ->
"     a=  42" (11 символов)
sprintf(buf,"     a=%4d",123) ->
"     a= 123" (11 символов)
sprintf(buf,"     a=%4d",4095) ->
"     a=4095" (11 символов)

Всё, что печатается ДО заместителя переменной, будет печататься в неизменном виде.

То есть, ровно то, что я предположил в предыдущем ответе. :/

Re: CUbeide 1.8 глючит.

Чт янв 27, 2022 07:41:58

AlanDrakes писал(а):Чтож. Кажется, я вижу причину.
Код:
sprintf(buf,"     a=%2d",a);
Да он просто пропустил первые 5 символов, а причину не нашел.
ivan dimir писал(а):А когда запускаю Часы DS3231 нормально.
Это в одну строку выводится или нет?
Dimon456 писал(а):Резет нажми и удержи или паузу в отладчике, мерцают эти показания или нет?
В это время контроллер будет находится в состоянии сброса и передача по i2c будет прекращена.

Re: CUbeide 1.8 глючит.

Чт янв 27, 2022 12:25:20

Чтож. Кажется, я вижу причину.
1. Используйте более мягкие проверки переменных:
Код:
   if(menu_btn==1) {
      if((GPIOB->IDR&GPIO_IDR_IDR_4)==0) {
         if (a >= 4095) {
            a = 0;
         }
         a++;
      }
      if((GPIOB->IDR&GPIO_IDR_IDR_8)==0) {
         if (a >= 4096) {
            a = 4095;
         }
         a--;
      }
<...>


Либо измените тип переменной "а" на int16_t (она станет знаковой, и это даже лучше):
Код:
   if(menu_btn==1) {
      if((GPIOB->IDR&GPIO_IDR_IDR_4)==0) {
         if (a >= 4095) {
            a = 0;
         }
         a++;
      }
      if((GPIOB->IDR&GPIO_IDR_IDR_8)==0) {
         if (a <= 0) {
            a = 4095;
         }
         a--;
      }
<...>

Та же проблема с переменной "b" - она БЕЗЗНАКОВАЯ. Она не может принимать отрицательных значений, но её технически можно переполнить. Случайно.

2. Работа со строковым буфером... неудачная.
Разберём строку:
Код:
sprintf(buf,"     a=%2d",a);

В результате получим вывод:
Код:
sprintf(buf,"     a=%2d",200) ->
"     a=200" (10 символов)
sprintf(buf,"     a=%2d",10) ->
"     a=10" (9 символов)
sprintf(buf,"     a=%2d",4096) ->
"     a=4096" (11 символов)

Естественно, с числом вплоть до 99 всё будет работать. Но printf с аргументом %2d - будет резервировать только ДВА знакоместа под число. Всё, что не поместится будет печататься дальше.
Исправим на
Код:
sprintf(buf,"     a=%4d",a)

Теперь будем получать такой вывод:
Код:
sprintf(buf,"     a=%4d",1) ->
"     a=   1" (11 символов)
sprintf(buf,"     a=%4d",42) ->
"     a=  42" (11 символов)
sprintf(buf,"     a=%4d",123) ->
"     a= 123" (11 символов)
sprintf(buf,"     a=%4d",4095) ->
"     a=4095" (11 символов)

Всё, что печатается ДО заместителя переменной, будет печататься в неизменном виде.

То есть, ровно то, что я предположил в предыдущем ответе. :/

сделал как вы говорили.Без изменения.Причина не эта.

Re: CUbeide 1.8 глючит.

Чт янв 27, 2022 12:29:23

ivan dimir, почитайте правила, пожалуйста !
Могу даже Вам дать "отпуск", под это дело ! :)

Re: CUbeide 1.8 глючит.

Чт янв 27, 2022 12:44:49

Я ничего зазорного не пишу.Это технический момент.В AVR такого не было.Я так подозреваю что или проблема в библиотеке Lcd или в шине проблема i2c.Мнение профессионалов для меня имеет большое значение.

Re: CUbeide 1.8 глючит.

Чт янв 27, 2022 14:58:00

:facepalm:
Ещё раз - почитайте правила форума ! Пока это просьба.

Re: CUbeide 1.8 глючит.

Чт янв 27, 2022 15:17:52

Я ничего зазорного не пишу.

Не цитируйте длинные сообщения полностью. Цитируйте конкретные фразы, на которые отвечаете, а не весь текст сообщения на три монитора.
Заметили, как я вас процитировал? Я процитировал не всё ваше исходное сообщение, а лишь малую его часть. Ровно ту, на которую ответил. Поступайте также.

Re: CUbeide 1.8 глючит.

Чт янв 27, 2022 15:21:13

Понял .Это по незнанию.И не умению.
Ответить