Автор Тема: AVR Studio4.19 и размерность переменных  (Прочитано 2508 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Two_byte

  • Модератор раздела
  • Эксперт
  • ****
  • Сообщений: 1367
  • Похвалили: 176 раз(а)
  • Не впихуйте невпихуемое!
  • Откуда: Ногинск
Ну никак не могу добиться нормальной работы компилятора. Имеем переменные размером в 1 байт, дык эта падла код компилирует под размерность в 2 байта!!!. Я уже себе всю башку разбил об ноут, клаву и стены... Где ему надо на горло наступить???.
Спойлер
Это определение переменных и иже с ними
typedef uint8_t   byte;
typedef unsigned long int dword;
typedef unsigned int word;

#define ServoMin   (int) 450   // uS at 0^
#define ServoMax   (int) 2450   // uS at 180^
//#define ServoMin   (int) 1000   // uS at 0^
//#define ServoMax   (int) 2000   // uS at 180^
#define Shots      7
#define PinMask      0x7F
struct cRGB led[Shots];

volatile struct
 {
  unsigned BtnPress : 1;      // Êíîïêà íàæàòà
  unsigned Title : 1;         // Íàäïèñü Áóõíåì?
  unsigned EncPress : 1;      // Ýíêîäåð íàæàò
  unsigned ServoEn : 1;         // Ðàçðåøåíèå ñåðâî è çàãðóçêè òàéìåðà
  unsigned PumpEn : 1;         // Ðàçðåøåíèå ïîìïû
  unsigned Volume : 1;         // Ñåðâèñíûé ðåæèì ââîä îáúåìà
  unsigned EncDir : 1;         // Íàïðàâëåíèå ñ÷åòà ýíêîäåðà
  unsigned ServoMode : 1;      // Ñåðâèñíûé ðåæèì = 1
 } Mode;

volatile struct
 {
  unsigned Main : 1;         // Èñïîëüçóåòñÿ â òàéìåðå ¹1
  unsigned Display : 1;
  unsigned ServoH : 1;         // Ñåðâà â íóëå
  unsigned Temp : 1;         // Òåìïåðàòóðà = 1
  unsigned Shot5 : 1;
  unsigned Shot6 : 1;
  unsigned Shot7 : 1;
  unsigned Shot8 : 1;
 } Mode1;

volatile byte a,Reg,BtnCount,BtnEncCount,Count,ServoCount,color,ShotPin,Volume,Encoder,nShot,sShot;


Это прерывание по таймеру
ISR(TIMER1_OVF_vect)               // Период 20mS ~ 400uS MAX
 {
  byte x,m;
  Count++;

  if (Mode.ServoEn) ServoCount++;
  else ServoCount = 0;

  if (Mode.PumpEn) PumpCount++;
  if (RdBtn())
   {
    Mode.BtnPress = 1;
    BtnCount++;
   }
  else Mode.BtnPress = 0;

  if (!RdBtnEnc())
   {
    Mode.EncPress = 1;
    BtnEncCount++;
   }
  else Mode.EncPress = 0;

  ADCSRA |= (1<<ADSC);

  ShotPin = ((PINC & 0x0F) | ((PINB & 0x1C) * 4));
  x = ShotPin;
  if ((x != PinMask) && (Mode1.Main))
   {
   for (m = 0; m < Shots; m++)
    {
     if ((!(x & (1<<m))) && (!(nShot & (1<<m))))
      {
      led[m].r = 255;
      led[m].g = 0;
      led[m].b = 0;
      nShot |= (1<<m);
      }
     else if (x & (1<<m))
      {
      led[m].r = 0;
      led[m].g = 0;
      led[m].b = 0;
      nShot &= ~(1<<m);
      sShot &= ~(1<<m);
      }
    }
   ws2812_sendarray((uint8_t *)led,Shots*3);   // 300uS
   }
  else if(Mode1.Main)
   {
   ClrLeds();
   nShot = 0;
   sShot = 0;
   }

  while((ADCSRA & (1<<ADIF))==0);
  ADCSRA|=(1<<ADIF);
  if(Mode1.Temp)
   {
   T = ADCW;
   if(T>328) T -= 328;
   else T = (328-T)|0x8000;
   }
  else
   {
   U = (uint64_t)ADCW*501;
   U = U>>10;
   }
  Mode1.Temp ^= 1;
  if(Mode1.Temp)
   {
   ADMUX = 0xC8;            // Температура
   ArefOff();
   }
  else
   {
   ADMUX = 0x47;                  // ADC7 - Напряжение
   ArefOn();
   }
  Mode1.Display = 1;
//  Mode1.Temp ^= 1;
 }

Это то, что эта падла делает
114:        if ((x != PinMask) && (Mode1.Main))
+00000450:   EAEC        LDI       R30,0xAC       Load immediate
+00000451:   E0F6        LDI       R31,0x06       Load immediate
+00000452:   E080        LDI       R24,0x00       Load immediate
+00000453:   E090        LDI       R25,0x00       Load immediate
118:           if ((!(x & (1<<m))) && (!(nShot & (1<<m))))
+00000454:   E070        LDI       R23,0x00       Load immediate
130:            nShot &= ~(1<<m);
+00000455:   E041        LDI       R20,0x01       Load immediate
+00000456:   E050        LDI       R21,0x00       Load immediate

120:            led[m].r = 255;
+00000457:   EF0F        SER       R16            Set Register
118:           if ((!(x & (1<<m))) && (!(nShot & (1<<m))))
+00000458:   01DB        MOVW      R26,R22        Copy register pair
+00000459:   2E08        MOV       R0,R24         Copy register
+0000045A:   C002        RJMP      PC+0x0003      Relative jump

+0000045B:   95B5        ASR       R27            Arithmetic shift right
+0000045C:   95A7        ROR       R26            Rotate right through carry

+0000045D:   940A        DEC       R0             Decrement
+0000045E:   F7E2        BRPL      PC-0x03        Branch if plus
+0000045F:   FDA0        SBRC      R26,0          Skip if bit in register cleared
+00000460:   C01B        RJMP      PC+0x001C      Relative jump
118:           if ((!(x & (1<<m))) && (!(nShot & (1<<m))))
+00000461:   912006EB    LDS       R18,0x06EB     Load direct from data space
+00000463:   E030        LDI       R19,0x00       Load immediate
+00000464:   2E08        MOV       R0,R24         Copy register
+00000465:   C002        RJMP      PC+0x0003      Relative jump
+00000466:   9535        ASR       R19            Arithmetic shift right
+00000467:   9527        ROR       R18            Rotate right through carry

+00000468:   940A        DEC       R0             Decrement
+00000469:   F7E2        BRPL      PC-0x03        Branch if plus
+0000046A:   FD20        SBRC      R18,0          Skip if bit in register cleared
+0000046B:   C025        RJMP      PC+0x0026      Relative jump

Камень - Атмега328Р
Почему эта падла считает, что у меня переменные в два байта???. Кто поможет?...
Причем вместо переменной Shots (выделено синим) ставлю просто число - ничего не изменяется!.
Можно даже про ник пошутить, я не обижусь. ;D
До кучи полный проект, это бухлоналиватор, прикольная вещь. Навеяно с просторов интернета. Пользуйтесь, мне не жалко. Схему чуть попозжа нарисую, пока балуюсь на ардуино нано (плюс в том, что не надо плату разводить-травить).
На фото данная реализация проекта, только помпа не подключена, за нее пока работает светодиод.
« Последнее редактирование: 30/05/2020 19:57:12 от Two_byte »
 

Оффлайн pletenb

  • Наш человек
  • Ветеран
  • ***
  • Сообщений: 743
  • Похвалили: 92 раз(а)
  • Откуда: Новый Уренгой
Re: AVR Studio4.19 и размерность переменных
« Ответ #1 : 30/05/2020 20:37:15 »
Байт, извини, могу только пошутить на счет ника.))
Поигрался только с гуглом. Вот:

https://radioprog.ru/post/285

Вдруг поможет.
 

Оффлайн Novichek51

  • Наш человек
  • Эксперт
  • ***
  • Сообщений: 1910
  • Похвалили: 111 раз(а)
Re: AVR Studio4.19 и размерность переменных
« Ответ #2 : 30/05/2020 20:50:12 »
Бухлоналиватор - это который по стопкам, выставленных в ряд по очереди наливает?
 

Оффлайн Two_byte

  • Модератор раздела
  • Эксперт
  • ****
  • Сообщений: 1367
  • Похвалили: 176 раз(а)
  • Не впихуйте невпихуемое!
  • Откуда: Ногинск
Re: AVR Studio4.19 и размерность переменных
« Ответ #3 : 30/05/2020 20:56:30 »
Бухлоналиватор - это который по стопкам, выставленных в ряд по очереди наливает?
Ну типа того.
 

Оффлайн Two_byte

  • Модератор раздела
  • Эксперт
  • ****
  • Сообщений: 1367
  • Похвалили: 176 раз(а)
  • Не впихуйте невпихуемое!
  • Откуда: Ногинск
Re: AVR Studio4.19 и размерность переменных
« Ответ #4 : 30/05/2020 20:57:53 »
Байт, извини, могу только пошутить на счет ника.))
Поигрался только с гуглом. Вот:

https://radioprog.ru/post/285

Вдруг поможет.
Лет 10-15 назад пройденый этап.
Я давно уже не мальчик, и АРМ реверсим ( спасибо tridentxp ).
Так то оно работает, просто бесит упрямство компилятора, да и люблю я код сократить - быстрее же работает, и байтов меньше... :)
 

Оффлайн chellenger

  • Модератор раздела
  • Эксперт
  • ****
  • Сообщений: 7018
  • Похвалили: 1310 раз(а)
  • Откуда: Питер, пчелайн 909-579-40-64, Viber, WhatApp
    • Сампо-Сервис
Re: AVR Studio4.19 и размерность переменных
« Ответ #5 : 31/05/2020 00:48:35 »
Two_byte, ну как я смотрю электрик то не простой. .. Как два байта переслать ответ знает... Вадим, не в обиду, просто шутка!
С уважением, Александр.
www.sampokkm.ru
 

Оффлайн RomanPrg

  • Наш человек
  • Постоялец
  • ***
  • Сообщений: 222
  • Похвалили: 156 раз(а)
  • Откуда: Курск
Re: AVR Studio4.19 и размерность переменных
« Ответ #6 : 31/05/2020 01:26:49 »
Я понял возражение к тому, что выделено красным ?

+00000466:   9535        ASR       R19
+00000467:   9527        ROR       R18

Но здесь хранится только временный результат операции, а не значения  самих переменных объявленные как byte.

Контролер как понимаю, там вычисляет операцию 1<<m, так как это RISC контролер, то выполняет операцию последовательно в цикле по одному сдвигу, в а R18R19 хранит только временный результат операции.

Можно попробовать вот так поставить (byte)(1<<m)  для приведения типа промежуточного результата.
 

Оффлайн Two_byte

  • Модератор раздела
  • Эксперт
  • ****
  • Сообщений: 1367
  • Похвалили: 176 раз(а)
  • Не впихуйте невпихуемое!
  • Откуда: Ногинск
Re: AVR Studio4.19 и размерность переменных
« Ответ #7 : 31/05/2020 03:10:06 »
...

Можно попробовать вот так поставить (byte)(1<<m)  для приведения типа промежуточного результата.

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

Оффлайн NewKid

  • Резидент
  • Ветеран
  • ****
  • Сообщений: 918
  • Похвалили: 405 раз(а)
  • ЦТО - Центр творчества одаренных
  • Откуда: Чебоксары
Re: AVR Studio4.19 и размерность переменных
« Ответ #8 : 31/05/2020 03:39:07 »
Two_byte, люди пишут такие проекты на ардуине вообще не парясь о памяти.
https://alexgyver.ru/gyverdrink/
 

Оффлайн tridentxp

  • Резидент
  • Эксперт
  • ****
  • Сообщений: 6742
  • Похвалили: 859 раз(а)
  • Откуда: ARMвиль
Re: AVR Studio4.19 и размерность переменных
« Ответ #9 : 31/05/2020 09:48:10 »
unsigned char my_variable;  ? У натури, чо ты так за размер переменной уперся? Ротировать требо?
то, что дарвин и вы называете эволюцией, является лишь умыслом Отца.
 

Оффлайн Two_byte

  • Модератор раздела
  • Эксперт
  • ****
  • Сообщений: 1367
  • Похвалили: 176 раз(а)
  • Не впихуйте невпихуемое!
  • Откуда: Ногинск
Re: AVR Studio4.19 и размерность переменных
« Ответ #10 : 31/05/2020 10:06:28 »
Да просто доковыряться уже не до чего. Прога то работает. А мне стало интересно - почему такая бяка творится.
 

Оффлайн Two_byte

  • Модератор раздела
  • Эксперт
  • ****
  • Сообщений: 1367
  • Похвалили: 176 раз(а)
  • Не впихуйте невпихуемое!
  • Откуда: Ногинск
Re: AVR Studio4.19 и размерность переменных
« Ответ #11 : 31/05/2020 10:11:31 »
Two_byte, люди пишут такие проекты на ардуине вообще не парясь о памяти.
https://alexgyver.ru/gyverdrink/

Как раз с этого все и началось, только индикатор я свой впихнул, немного логику работы светодиодов изменил, управление сервой вывел в аппаратное (работает в фоне по 1-му таймеру), ну и сервисный режим добавил для настройки всего этого безобразия. Ну и поизвращался слегка меряя температуру ( на камне свой датчик ) и напругу аккума.
 

Оффлайн drfaust

  • Резидент
  • Эксперт
  • ****
  • Сообщений: 5239
  • Похвалили: 573 раз(а)
  • Я не Шариков, просто судьба располосовала мой лоб.
  • Откуда: РФ, Лангепас, MSK+2 (UTC+5)
    • faust.dlinkddns.com
Re: AVR Studio4.19 и размерность переменных
« Ответ #12 : 31/05/2020 13:44:57 »
Да просто доковыряться уже не до чего.
Со встройко на Си не работал, но по стандарту имеются "жёсткие" типы данных. записываются вроде как __int8
Опять же по стандарту размер char зависит от аппаратной платформы - может быть и 5 бит и 53 бита, как и int  может быть 16 бит, 32 и даже 64 бита. Потому и ввели эти "жёсткие типы"
Не кассами одними жив ЦТО ;-)
 
Это сообщение считают полезным: edw1881

Оффлайн RomanPrg

  • Наш человек
  • Постоялец
  • ***
  • Сообщений: 222
  • Похвалили: 156 раз(а)
  • Откуда: Курск
Re: AVR Studio4.19 и размерность переменных
« Ответ #13 : 31/05/2020 15:53:11 »
Да просто доковыряться уже не до чего. Прога то работает. А мне стало интересно - почему такая бяка творится.

А с опциями компилятора пробовали играться ?

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

Для GCC компиляторов это  #pragma GCC optimize "1", #pragma GCC optimize "2"


ЗЫ. Если есть стремление к идеалу, учитесь писать на ассемблере.

Весь старый парк Мерков, те что на 51 проце, полностью на ассемблере написаны!

Хотя сейчас это уже дико.
 

Оффлайн tridentxp

  • Резидент
  • Эксперт
  • ****
  • Сообщений: 6742
  • Похвалили: 859 раз(а)
  • Откуда: ARMвиль
Re: AVR Studio4.19 и размерность переменных
« Ответ #14 : 31/05/2020 17:21:40 »
Да просто доковыряться уже не до чего.
Со встройко на Си не работал, но по стандарту имеются "жёсткие" типы данных. записываются вроде как __int8
Опять же по стандарту размер char зависит от аппаратной платформы - может быть и 5 бит и 53 бита, как и int  может быть 16 бит, 32 и даже 64 бита. Потому и ввели эти "жёсткие типы"
Да ладно ка пи..ть. Шта на  C Builder, шта на keil, шта на AVR Studio unsigned char=2^8 ни разу не подвёл.
то, что дарвин и вы называете эволюцией, является лишь умыслом Отца.
 

Онлайн promah

  • Шил, шью, буду шить.
  • Наш человек
  • Эксперт
  • ***
  • Сообщений: 3124
  • Похвалили: 480 раз(а)
  • Снимаю, порчу, лечу по фотографии
Re: AVR Studio4.19 и размерность переменных
« Ответ #15 : 31/05/2020 17:36:16 »
полностью на ассемблере написаны!
Ужос .
Хотя нее
Фантастика ! как вспомню как один мой бывший коллега  , с нуля за день писал прошивы под китайские недоделки  , как любую мою хотелку за час-два на 2051 создавал   , у меня дольше вемени уходило на плату и корпус  , чем у него на написание и отладку в бою.

Я уже себе всю башку
Ты себе бошку пожалей , ведь вроде  сыне собираешь?

Тут мозга на быдлокод не хватает .Но слава КПСС ! , шутка юмора  , слава https://flprog.ru , теперь не парюсь . Таймеры управляемые, тригеры , массивы , кнопки ,сохранения в епром ..... красота . Только моник с разрешением побольше надо и мыша вместо трекпоинта.

Сча полуавтомат очередной собираю , хочу с пульсом и 2Т-4Т  , ну энкодер вместо кнопок . Но по проекту с АДС - понял лучше переменников - ничего нет , моментально перенастраивать можно  и одним взглядом на регуляторы - уже понятно что и как . Графический эквалайзер ! Ну ,а так 10  пунктов в меню , кнопками,листать менять настройки ,  да ещё и дисплей от помех глючит - ужос .
 

Оффлайн drfaust

  • Резидент
  • Эксперт
  • ****
  • Сообщений: 5239
  • Похвалили: 573 раз(а)
  • Я не Шариков, просто судьба располосовала мой лоб.
  • Откуда: РФ, Лангепас, MSK+2 (UTC+5)
    • faust.dlinkddns.com
Re: AVR Studio4.19 и размерность переменных
« Ответ #16 : 31/05/2020 18:10:26 »
Шта на  C Builder, шта на keil, шта на AVR Studio unsigned char=2^8 ни разу не подвёл.

Еле распарсил данный опус.
По поводу char:
Его размер можно узнать по дефайну CHAR_BIT из limits.h В большинстве случаев он равен 8 (обычный, привычный байт), но согласно стандарту Си полностью зависит от реализации компилятора и может быть любым. Грубо говоря char в Си - минимально-адресуемая область памяти. Если
Цитировать
#include <stdio.h>
#include <limits.h>

int main(void)
{
  printf("Size of char: %d",CHAR_BIT);
  return 0;}

Выведет 8 - то всё прекрасно и ищем дальше, если 5, 16 или что-то ещё - тогда уже сами приспосабливаемся к этим интересным условиям...
Не кассами одними жив ЦТО ;-)
 
Это сообщение считают полезным: edw1881

Оффлайн Two_byte

  • Модератор раздела
  • Эксперт
  • ****
  • Сообщений: 1367
  • Похвалили: 176 раз(а)
  • Не впихуйте невпихуемое!
  • Откуда: Ногинск
Re: AVR Studio4.19 и размерность переменных
« Ответ #17 : 31/05/2020 20:21:24 »
Во всех других местах программы uint8_t, равно как и unsigned char, четко равен одному байту, и только в нескольких местах, где идет проверка флагов сдвигом переменной размером uint8_t она чудесным образом трансформируется в uint16_t. Чесслово, у меня этот код проверки на асме выйдет меньше размером.
 

Оффлайн Two_byte

  • Модератор раздела
  • Эксперт
  • ****
  • Сообщений: 1367
  • Похвалили: 176 раз(а)
  • Не впихуйте невпихуемое!
  • Откуда: Ногинск
Re: AVR Studio4.19 и размерность переменных
« Ответ #18 : 01/06/2020 02:08:05 »
Опять же, почему озадачился данным вопросом - вся эта ботва происходит в прерывании, оно с частотой 50Гц ( надо мне так для управления сервомашинкой, таймер загружаю, он мне аппаратно импульсы определенной длительности PWM-ит. Заодно и АЦП туда же запихал, все аппаратно, а АЦП намного быстрее срабатывает (120мкСек), чем я прогружаю данными адресные светодиоды (300мкСек).). Поэтому прерывание обрабатывается за время меньше 400 мкСек. Вот и борюсь за каждый байт ( частота камня = 16МГц ). У меня все успевает сработать, но зачем мне лишние команды? - это время выполнения.
У меня программно выдерживаются тайминги для запихивания 24бит на светодиод с частотой 800КГц, всего семь светодиодов, на время запихивания данных прерывания не работают. Все это занимает ~300мкСек. Херли мне время терять, когда аппаратно можно таймером серву двигать, и так же аппаратно мерять температуру и напругу?. Вот и пущай ресурсы камня работают, а не программа.
Получилось что-то вроде RTOS.
 

Оффлайн tridentxp

  • Резидент
  • Эксперт
  • ****
  • Сообщений: 6742
  • Похвалили: 859 раз(а)
  • Откуда: ARMвиль
Re: AVR Studio4.19 и размерность переменных
« Ответ #19 : 01/06/2020 05:23:09 »
Федь, ты сам то давно последний раз вышивал то?
то, что дарвин и вы называете эволюцией, является лишь умыслом Отца.
 

Оффлайн Two_byte

  • Модератор раздела
  • Эксперт
  • ****
  • Сообщений: 1367
  • Похвалили: 176 раз(а)
  • Не впихуйте невпихуемое!
  • Откуда: Ногинск
Re: AVR Studio4.19 и размерность переменных
« Ответ #20 : 01/06/2020 19:45:21 »
Вот жеш падала, вот так все ровненько по коду:
     z = ~(ShotPin & PinMask);
     if(z)
      {
      for(c=0;c<Shots;c++)
       {
        led[c].r = 0;
        led[c].g = 0;
        if(z&1) led[c].b = 0xFF;
        z = z >> 1;
       }
      }

И соответственно код:
Спойлер
827:           z = ~(ShotPin & PinMask);
+00000CF3:   918006A4    LDS       R24,0x06A4     Load direct from data space
+00000CF5:   778F        ANDI      R24,0x7F       Logical AND with immediate
828:           if(z)
+00000CF6:   9580        COM       R24            One's complement
377:      void main(void)
+00000CF7:   EAEC        LDI       R30,0xAC       Load immediate
+00000CF8:   E0F6        LDI       R31,0x06       Load immediate
836:              if(z&1) led[c].b = 0xFF;
+00000CF9:   EF9F        SER       R25            Set Register
832:              led[c].r = 0;
+00000CFA:   8211        STD       Z+1,R1         Store indirect with displacement
833:              led[c].g = 0;
+00000CFB:   8210        STD       Z+0,R1         Store indirect with displacement
836:              if(z&1) led[c].b = 0xFF;
+00000CFC:   FD80        SBRC      R24,0          Skip if bit in register cleared
836:              if(z&1) led[c].b = 0xFF;
+00000CFD:   8392        STD       Z+2,R25        Store indirect with displacement
836:              if(z&1) led[c].b = 0xFF;
+00000CFE:   9633        ADIW      R30,0x03       Add immediate to word
830:            for(c=0;c<Shots;c++)
+00000CFF:   E0A6        LDI       R26,0x06       Load immediate
+00000D00:   3CE1        CPI       R30,0xC1       Compare with immediate
+00000D01:   07FA        CPC       R31,R26        Compare with carry
+00000D02:   F011        BREQ      PC+0x03        Branch if equal
838:              z = z >> 1;
+00000D03:   9586        LSR       R24            Logical shift right
+00000D04:   CFF5        RJMP      PC-0x000A 

Тут ясно видно, что двигаем байт а не два байта.
Кстати, заметил по студии, если писать деление и умножение в одну строчку - компилятор просто охреневает и вводит свои правила, даже если прописаны непосредственно типы данных!!!
Еще бы sprintf() полностью запихать как вызов, а то эта падла непосредственно ее код вставляет вместо вызова. Пришлось делать ф-цию sprintf_d(), для известных параметров. Ака sprintf(s,"%d",byte).
Ой-ей-ей, ща исправлюсь... Шотов семь бит в байте, а битов то 8!!!.
Вот так надо: z = ~(ShotPin & PinMask | 0x80);
« Последнее редактирование: 01/06/2020 20:06:14 от Two_byte »
 

Оффлайн RomanPrg

  • Наш человек
  • Постоялец
  • ***
  • Сообщений: 222
  • Похвалили: 156 раз(а)
  • Откуда: Курск
Re: AVR Studio4.19 и размерность переменных
« Ответ #21 : 01/06/2020 20:13:06 »
А вот гляньте, что компиль будет делать, при таком выражении ?

z = z << m;

И при таком

z = 1 << m;

где  z и m byte.
« Последнее редактирование: 01/06/2020 21:20:46 от RomanPrg »
 

Оффлайн Two_byte

  • Модератор раздела
  • Эксперт
  • ****
  • Сообщений: 1367
  • Похвалили: 176 раз(а)
  • Не впихуйте невпихуемое!
  • Откуда: Ногинск
Re: AVR Studio4.19 и размерность переменных
« Ответ #22 : 01/06/2020 20:23:08 »
z = 1 << m;
Вот это он просто будет делать "установить "1" в бите м". Я даже студию запускать не буду, хотя она у меня и запущена. Роман, синтаксис Си не соответствует тому, что ты хочешь спросить. Или я не понял, что ты хочешь узнать данным вопросом.
У меня не установка или сброс бит ( все работает как надо, у меня проверка бит в байте ). т.е. m<<1, или m>>1. И дальше if(m&1).
 

Оффлайн RomanPrg

  • Наш человек
  • Постоялец
  • ***
  • Сообщений: 222
  • Похвалили: 156 раз(а)
  • Откуда: Курск
Re: AVR Studio4.19 и размерность переменных
« Ответ #23 : 01/06/2020 20:36:53 »
Ну вот почему-то, в том коде if ((!(x & (1<<m))) && (!(nShot & (1<<m)))) ,
он просто не устанавливает m бит а сдвигает пару регистров R18R19.

Я к тому, что изучать поведения компилятора нужно на простых выражениях.
И предложил два случая в одном фигурирует константа, в других только переменные.

Может для константы нужно тоже явно формат объявлять типа (1U<<m), фиг его знает.
 

Оффлайн Two_byte

  • Модератор раздела
  • Эксперт
  • ****
  • Сообщений: 1367
  • Похвалили: 176 раз(а)
  • Не впихуйте невпихуемое!
  • Откуда: Ногинск
Re: AVR Studio4.19 и размерность переменных
« Ответ #24 : 01/06/2020 20:50:45 »
Ну вот почему-то, в том коде if ((!(x & (1<<m))) && (!(nShot & (1<<m)))) ,
он просто не устанавливает m бит а сдвигает пару регистров R18R19.

Я к тому, что изучать поведения компилятора нужно на простых выражениях.
И предложил два случая в одном фигурирует константа, в других только переменные.

Может для константы нужно тоже явно формат объявлять типа (1U<<m), фиг его знает.
Роман, без обид, я прошивы реверсил 20 лет назад, причем что MSC51, что AVR. У меня АСМ = второй язык общения, третий = матерный. Спасибо ГУРУ АРМ данного форума, я начал шарить в АРМ. Поэтому -  если нечего сказать по настройке - лучше молчать. Я данную программу могу и на АСМ-е написать, но, как бЭ, на Сях удобнее. Причем люди, которые меня знают могут все это подтвердить. Вставки на АСМ в действующие прошивки можешь создать???, если нет, то нет.
Я создавал действующие вставки. Вплоть до перенастройки камня на нужный кварц.
Ой, простые выражения....Да имел а в рот эти простые выражения. Пущай школьники имеют эти выражения, у нас просто RTOS. И что я буду делать с прерываниями?, у меня 20mS и 1mS?. Два прерывания, которые выполняют свои задачи. Изменяют при этом глобальные переменные?.
« Последнее редактирование: 01/06/2020 21:12:39 от Two_byte »
 

Оффлайн Two_byte

  • Модератор раздела
  • Эксперт
  • ****
  • Сообщений: 1367
  • Похвалили: 176 раз(а)
  • Не впихуйте невпихуемое!
  • Откуда: Ногинск
Re: AVR Studio4.19 и размерность переменных
« Ответ #25 : 01/06/2020 21:23:26 »
Валя, не беспокойся, это моя RTOS, к твоей отношения не имеет.
 

Оффлайн RomanPrg

  • Наш человек
  • Постоялец
  • ***
  • Сообщений: 222
  • Похвалили: 156 раз(а)
  • Откуда: Курск
Re: AVR Studio4.19 и размерность переменных
« Ответ #26 : 01/06/2020 22:24:07 »
Поэтому -  если нечего сказать по настройке - лучше молчать

При таком подходе боюсь тему нужно закрывать.

Конкретно вам тут никто ничего не скажет, по опыту могу сказать, что очень многое зависит от версии компилятора.
Чем более свежая версия компилятора тем, как правило, более компактный код он делает.
На ARM это очень заметно, прошивка, которая год назад не влезала в контролер, на новой версии бац влезает.

Для GCC компилятора, я также предложил поиграться с опциями оптимизации

#pragma GCC optimize "1", #pragma GCC optimize "2"

или в MakeFile  CFLAGS += -O$(OPT)

Опции
-O1, -O2, -O3 и -Os
 

Оффлайн Two_byte

  • Модератор раздела
  • Эксперт
  • ****
  • Сообщений: 1367
  • Похвалили: 176 раз(а)
  • Не впихуйте невпихуемое!
  • Откуда: Ногинск
Re: AVR Studio4.19 и размерность переменных
« Ответ #27 : 01/06/2020 22:56:06 »
Роман,  я тебе уже ответил. Ждем ответа от tridentxp. Сей человек  есть альфа и омега в программироввание.....
Вам - сия переменная только обеспечит Тебе траблы!!!, у нас только на Ты!!!, мне пофигу сколько тебе лет, мне, если надо из профиля видно.
Ой, забыл сказать. Опция компилятора = Оs, по коду компиляцию делает, по его размеру.
На АРМ можно поиграть частотой, на АВР фигушки., вернее можно, но СLK\8 это не комильфо.....
« Последнее редактирование: 01/06/2020 23:50:56 от Two_byte »
 

Онлайн ewgen

  • Модератор раздела
  • Эксперт
  • ****
  • Сообщений: 2929
  • Похвалили: 658 раз(а)
  • Откуда: Планета "The Мля"
Re: AVR Studio4.19 и размерность переменных
« Ответ #28 : 02/06/2020 03:30:33 »
Господа, я извиняюсь. Может, как-то уважительнее друг к другу, что ли? Не все тут альфы и омеги )
 

Оффлайн tridentxp

  • Резидент
  • Эксперт
  • ****
  • Сообщений: 6742
  • Похвалили: 859 раз(а)
  • Откуда: ARMвиль
Re: AVR Studio4.19 и размерность переменных
« Ответ #29 : 02/06/2020 15:50:29 »
есть альфа и омега в программироввание....
ну уж ты загнул. да я с аверами не больно то и дружу. а оптимизацией пользовался только в кейле.
то, что дарвин и вы называете эволюцией, является лишь умыслом Отца.
 

Оффлайн Two_byte

  • Модератор раздела
  • Эксперт
  • ****
  • Сообщений: 1367
  • Похвалили: 176 раз(а)
  • Не впихуйте невпихуемое!
  • Откуда: Ногинск
Re: AVR Studio4.19 и размерность переменных
« Ответ #30 : 06/06/2020 01:08:04 »
Валя, мой номер тел. тот же. звякни. Если не сможешь - ватсап.
 

Оффлайн Two_byte

  • Модератор раздела
  • Эксперт
  • ****
  • Сообщений: 1367
  • Похвалили: 176 раз(а)
  • Не впихуйте невпихуемое!
  • Откуда: Ногинск
Re: AVR Studio4.19 и размерность переменных
« Ответ #31 : 06/06/2020 15:33:39 »
На днях пришла помпа 12В, запитал от 5-ти. Удобно, красиво, НО!... сцуко, баттон использовал на TTP223, вроде красиво, но эта падла максимум держит 6 сек. длительное нажатие, потом сбрасываетса. УРОДЫ!!!, могли бы и в ДШ сие написать!!!!!!!.
Попробую похулиганить и ее TOG дергать в прерывании 20мСек. Идея (мыслишка) такова, чтобы переключать ее вывод с обычного на триггер и наоборот. ХЗ, мож она не будет уходить в режим лоу пауэр.
Или придется либо кнопку обыкновенную ставить, либо в проге менять алгоритм.
« Последнее редактирование: 06/06/2020 15:58:35 от Two_byte »
 

Оффлайн Silver

  • Активный форумчанин
  • Постоялец
  • **
  • Сообщений: 146
  • Похвалили: 23 раз(а)
  • Откуда: Киров
Re: AVR Studio4.19 и размерность переменных
« Ответ #32 : 08/06/2020 14:14:41 »
AVR после обновы винды (7) вообще не работает, только Atmel studio 7.0
 

Оффлайн tridentxp

  • Резидент
  • Эксперт
  • ****
  • Сообщений: 6742
  • Похвалили: 859 раз(а)
  • Откуда: ARMвиль
Re: AVR Studio4.19 и размерность переменных
« Ответ #33 : 08/06/2020 14:59:11 »
Валя, мой номер тел. тот же. звякни. Если не сможешь - ватсап.
О боже! вот только только твою месагу увидел.
то, что дарвин и вы называете эволюцией, является лишь умыслом Отца.
 

Оффлайн Two_byte

  • Модератор раздела
  • Эксперт
  • ****
  • Сообщений: 1367
  • Похвалили: 176 раз(а)
  • Не впихуйте невпихуемое!
  • Откуда: Ногинск
Re: AVR Studio4.19 и размерность переменных
« Ответ #34 : 08/06/2020 20:25:09 »
AVR после обновы винды (7) вообще не работает, только Atmel studio 7.0
А я на ХР сижу и не жужжу. И на 7-ку не собираюсь, во всяком случае на своем рабочем ноуте.
 

Оффлайн Market-Master

  • Наш человек
  • Эксперт
  • ***
  • Сообщений: 1662
  • Похвалили: 196 раз(а)
  • ФП,ЭКЛЗ,ФН-ДАЛЬШЕ ЧТО?!!!
  • Откуда: Липецк
Re: AVR Studio4.19 и размерность переменных
« Ответ #35 : 09/06/2020 13:40:19 »
AVR после обновы винды (7) вообще не работает, только Atmel studio 7.0
А я на ХР сижу и не жужжу. И на 7-ку не собираюсь, во всяком случае на своем рабочем ноуте.
У мну именно поэтому два ноута,с хрюшей и 10.На хрюше avr.
 

Оффлайн Two_byte

  • Модератор раздела
  • Эксперт
  • ****
  • Сообщений: 1367
  • Похвалили: 176 раз(а)
  • Не впихуйте невпихуемое!
  • Откуда: Ногинск
Re: AVR Studio4.19 и размерность переменных
« Ответ #36 : 09/06/2020 22:42:15 »
AVR после обновы винды (7) вообще не работает, только Atmel studio 7.0
А я на ХР сижу и не жужжу. И на 7-ку не собираюсь, во всяком случае на своем рабочем ноуте.
У мну именно поэтому два ноута,с хрюшей и 10.На хрюше avr.
У меня рабочий мой dell latitude d620ATG с хрюней, у детей комп - они там сами развлекаются (10-ка), и какой то ноут от клиента остался, посерьезней моего, (по моему Е-машинс), на 7-ке.
Мне моего хватает под все задачи, даже iptv на нем, только литл трабла с сайтами - кой чего не открывает, на протокол ругается, не стал вдавться в подробности, просто забил на сей факт ( один хрен сайты в основном левые ). Если ну очень уж хочется глянуть ссылку, то копируем ее и идем на другой ноут. 99% ссыль = гуано.
 

Оффлайн Two_byte

  • Модератор раздела
  • Эксперт
  • ****
  • Сообщений: 1367
  • Похвалили: 176 раз(а)
  • Не впихуйте невпихуемое!
  • Откуда: Ногинск
Re: AVR Studio4.19 и размерность переменных
« Ответ #37 : 20/06/2020 23:48:33 »
Поэтому -  если нечего сказать по настройке - лучше молчать

При таком подходе боюсь тему нужно закрывать.

Конкретно вам тут никто ничего не скажет, по опыту могу сказать, что очень многое зависит от версии компилятора.
Чем более свежая версия компилятора тем, как правило, более компактный код он делает.
На ARM это очень заметно, прошивка, которая год назад не влезала в контролер, на новой версии бац влезает.

Для GCC компилятора, я также предложил поиграться с опциями оптимизации

#pragma GCC optimize "1", #pragma GCC optimize "2"

или в MakeFile  CFLAGS += -O$(OPT)

Опции
-O1, -O2, -O3 и -Os
Роман, снимаю шляпу!...Дико извиняюсь за неправильный тон. Я прекрасно понимаю ху из ху на данном форуме, Ну, как бЭ прошу прощения за свои выверты .Могу любые сигналы распознать и оформить на АВР. Реально, я понял, что ты хотел спросить 1<<m.
 
Это сообщение считают полезным: RomanPrg

Оффлайн Two_byte

  • Модератор раздела
  • Эксперт
  • ****
  • Сообщений: 1367
  • Похвалили: 176 раз(а)
  • Не впихуйте невпихуемое!
  • Откуда: Ногинск
Re: AVR Studio4.19 и размерность переменных
« Ответ #38 : 21/06/2020 00:02:54 »
Не обижайся, А?
 

Оффлайн chellenger

  • Модератор раздела
  • Эксперт
  • ****
  • Сообщений: 7018
  • Похвалили: 1310 раз(а)
  • Откуда: Питер, пчелайн 909-579-40-64, Viber, WhatApp
    • Сампо-Сервис
Re: AVR Studio4.19 и размерность переменных
« Ответ #39 : 21/06/2020 17:20:11 »
Как то так...
С уважением, Александр.
www.sampokkm.ru
 
Это сообщение считают полезным: Two_byte

Оффлайн Two_byte

  • Модератор раздела
  • Эксперт
  • ****
  • Сообщений: 1367
  • Похвалили: 176 раз(а)
  • Не впихуйте невпихуемое!
  • Откуда: Ногинск
Re: AVR Studio4.19 и размерность переменных
« Ответ #40 : 22/06/2020 02:45:43 »
Я всегда живу дружно, ну бывают иногда выверты...
 

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15