реклама на сайте
подробности

 
 
4 страниц V  < 1 2 3 4 >  
Reply to this topicStart new topic
> IAR меня игнорирует . :(, Причем , молча.... собака!
zltigo
сообщение Sep 17 2009, 21:42
Сообщение #31


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(AHTOXA @ Sep 17 2009, 23:29) *
удобно.

Нафиг лишние сущности.


Цитата(rezident @ Sep 17 2009, 23:07) *
Опишите функцию (имею в виду не программное понятие, а функциональную модель аппаратуры), которую выполняет hardware..

Именно так. Иначе за ненужной "универсальностью" ногодрыгания теряется смысл нужной функциональной универсальности.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Sep 17 2009, 22:02
Сообщение #32


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Цитата(zltigo @ Sep 18 2009, 03:42) *
Нафиг лишние сущности.


Ваше мнение понятно, зачем повторяться?

----
Кто-то пишет HAL, кому-то хватает макросов.
У меня в разных проектах на AVR, MB90, MSP430 и STM32 используется, например, один и тот же файл dflash.c:

Код
void df_init(void)
{
    off(FLASH_CS);
    direct(FLASH_CS, O);
}
...
void df_read(...)
{
    on(FLASH_CS);
...
}


Меняется только файл с макросами (под процессор), и описание ноги чипселекта (под схему, в отдельном инклюде).

Ну и чем это не HAL? И где здесь лишние сущности?


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
zltigo
сообщение Sep 17 2009, 22:31
Сообщение #33


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(AHTOXA @ Sep 18 2009, 00:02) *
Ну и чем это не HAL?

Для тех, кто пишет контроллеры светодиодов это может и "HAL" а для меня это махание ножкой через заднепроходное отверстие.
Вместо одной походя написанной банальной и однозначно читаемой строчки.
Когда нужно ПОНЯТНО согласовано и эффективно махать хотя-бы несколькими пинами, все эти макросы или идут лесом, или становятся совершенно невразумительными. Глупо обсуждать разнообразные способы лепки куличей из песка - эти "проблемы" интересны только младшей ясельной группе. А лично я уже давно вырос smile.gif.
Для меня, например, уровень абстракции даже для банального светодиода совсем другой:
Код
typedef enum{
    LM_OFF = 0,
    LM_ON,
    LM_BLINK_SLOW,
    LM_BLINK_NORMAL,
    LM_BLINK_FAST,
    LM_FLASH_1,
    LM_FLASH_2,
    LM_FLASH_3,
    LM_FLASH_1_OFF,
    LM_FLASH_2_OFF,
    LM_MAX

} led_mode_e;

void led_mode( bint led, led_mode_e mode )
{
    if( mode >= LM_MAX )
        mode = LM_MAX-1;
    ledstat &= ((~0x11111111)  <<led);
    ledstat |= (led_const[mode]<<led);
}
led_mode( LED_RED, LM_BLINK_FAST );

И где-то уже дальше-дальше в самом конце
Код
void led_process( int counter )
{
..........

    if( curstat )
        IOlCLR = curstat;
    
    curstat = (~curstat)&(P_LED_RED|P_LED_GREEN|P_LED_INUSE|P_LED_TEST);
    
    if( curstat )
        IOlSET = curstat;
}

И потуги на дивные навороты на банальном включить/выключить "светодиод" мне, как минимум, не интересны.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Sep 17 2009, 23:06
Сообщение #34


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Цитата(zltigo @ Sep 18 2009, 04:31) *
Для тех, кто пишет контроллеры светодиодов это может и "HAL" а для меня это махание ножкой через заднепроходное отверстие.
Вместо одной походя написанной банальной и однозначно читаемой строчки.
Одна понятная строчка, индивидуальная для каждого проекта vs одна понятная строчка на все проекты. Что лучше? Имхо, ответ очевиден.
Цитата
Когда нужно ПОНЯТНО согласовано и эффективно махать хотя-бы несколькими пинами, все эти макросы или идут лесом, или становятся совершенно невразумительными.

Когда приходится согласованно махать несколькими пинами - надо использовать возможности периферии. Вручную махать эффективно всё равно не выйдет. Если до такого дошло, надо что-то править в консерватории.
Цитата
Глупо обсуждать разнообразные способы лепки куличей из песка - эти "проблемы" интересны только младшей ясельной группе. А лично я уже давно вырос smile.gif .

Ох, не похожеsad.gif
Цитата
Для меня, например, уровень абстракции даже для банального светодиода совсем другой:

Таки балуетесь "контроллерами светодиодов"? wink.gif


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
dxp
сообщение Sep 18 2009, 04:32
Сообщение #35


Adept
******

Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343



Вопрос не по теме, пардон.

Цитата(zltigo @ Sep 18 2009, 05:31) *
Код
typedef enum{
    LM_OFF = 0,


Зачем тут явная инициализация?


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Sep 18 2009, 04:54
Сообщение #36


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



Цитата(dxp @ Sep 18 2009, 08:32) *
Зачем тут явная инициализация?

Для наглядности, я тоже так всегда делаю.
Код
enum eAnswerCommonParameters
{
    acp_Preamble = 0,           // преамбула
    acp_Status,                 // слово состояния
    acp_Ktermo_0,               // коэффициент термокомпенсации
    acp_Ktermo_1,
    acp_Ktermo_2,               //
    acp_Ktermo_3,
    acp_Csens_0,                // постоянная датчика
    acp_Csens_1,
    acp_Csens_2,
    acp_Csens_3,
    acp_Rt0_x_10_Low,           // калибровочная константа датчика температуры
    acp_Rt0_x_10_Hi,
    acp_Rref_x_10_Low,          // сопротивление опорного резистора термоканала
    acp_Rref_x_10_Hi,
    acp_CS,
    acp_PacketLen
};


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
zltigo
сообщение Sep 18 2009, 07:27
Сообщение #37


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(AHTOXA @ Sep 18 2009, 01:06) *
Если до такого дошло, надо что-то править в консерватории.

Давайте покажите мастеркласс обновления консерватории, например, переписав ногомахание для одного из примитивов работы с LCD:
Код
void lcd_writedata( bint data )
{
    lcd_waitready( RDY_DATA|RDY_COMMAND );
    // Setup DATA
    PIOlCLR = T6963_CE|T6963_WR|T6963_CD|(0xFFUL<<T6963_D0);
    PIOlSET = (data & 0xFFUL) << T6963_D0;
    PIOlSET = T6963_CE|T6963_WR;
    PIOlSET = T6963_CD;
}

Вышеприведенное, на мой взгляд описание одной простейшей операции с LCD. Рассыпать ее на более мелкие ногодрыгания одиночных пинов в стиле " on(FLASH_CS)" просто гробить и здравый смысл и программу.
Всякие навороченные макросы БЕЗУСЛОВНО полезно читать, разбирать, уметь писать и ПРИМЕНЯТЬ - это упражнение для ума, приобретение навыков и прочеее.... Макросы того-же Волкова это типа шахматного этюда и с этой точки зрения они ОЧЕНЬ полезны. Но реальное программирование отличается, как реальная игра а шахматы от решения надуманных шахматных этюдов. К реальному программированию такого типа макросы можно притянуть только за уши. Нет, конечно, многие так делают и считают использование подобных "штампов" и трюков признаком мастерства sad.gif. Но совершенно зря.
Цитата
Таки балуетесь "контроллерами светодиодов"? wink.gif

Разумеется. Только не контроллерами светодиодов, а устройствами на которых помимо всего прочего железа из которого чип контроллера обычно самый маленький, есть и светодиоды. И я ими разнообразно мигаю, только не на уровне примитива on( RED_LED ) - слишком примитивно sad.gif
Хотя встречаются и почти чистые контроллеры светодиодов - месяц назад 64 светодиода и 32 кнопки на голой ATmega16 походя написал. И даже ума не приложу через какую задницу там можно было макросы типа приведенных Вами использовать sad.gif, хотя вся "программа" это чистое, как слеза, ногодрыгание и переноситься на три варианта конструкции-разводки.

Цитата(dxp @ Sep 18 2009, 06:32) *
Зачем тут явная инициализация?

Банальная наглядность - уточнение с долей привычки. Абсолютно безобидная привычка.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Sep 18 2009, 08:12
Сообщение #38


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Цитата(zltigo @ Sep 18 2009, 13:27) *
Давайте покажите мастеркласс, например, переписав ногомахание для одного из примитивов работы с LCD:
Я где-то призывал использовать макросы Волкова повсеместно? Всему своё место и время.
Цитата
Вышеприведенное, на мой взгляд описание одной простейшей операции с LCD. Рассыпать ее на более мелкие ногодрыгания одиночных пинов в стиле " on(FLASH_CS)" просто гробить и здравый смысл и программу.
Вы говорите какие-то банальности. Даже несерьёзно. Расскажите ещё, что при 16-битной шине использовать "on(FLASH_CS)" глупоsmile.gif
Однако же, существует SPI с его чипселектами, множество микросхем имеет ножки готовности (опять же одиночные), да мало ли примеров одиноких ножек, замечательно ложащихся под эти макросы.
Цитата
Всякие навороченные макросы БЕЗУСЛОВНО полезно читать, разбирать, уметь писать и ПРИМЕНЯТЬ - это упражнение для ума, приобретение навыков и прочеее....
Да что же в них навороченного-то? Там всё достаточно прозрачно. Это просто полезные макросы.
Цитата
Но реальное программирование отличается, как реальная игра а шахматы от решения надуманных шахматных этюдов. К реальному программированию такого типа макросы можно притянуть только за уши. Нет, конечно, многие так делают и считают использование подобных "штампов" и трюков признаком мастерства sad.gif . Но совершенно зря.
Я так понимаю, под "реальным программистом" вы имеете в виду себя? smile.gif
У меня несколько другое представление о реальном программировании. Реальное программирование - это когда человек способен применять разнообразные инструменты и приёмы в зависимости от задачи. А ваш подход больше напоминает узколобый догматизм, уж извините.
Цитата
месяц назад 64 светодиода и 32 кнопки на голой ATmega16 походя написал. И даже ума не приложу через какую задницу там можно было макросы типа приведенных Вами использовать sad.gif
Ну и о чём это говорит? О том что инструмент плохой? Нет. Просто неподходящий для данного конкретного случая.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение Sep 18 2009, 08:44
Сообщение #39


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Цитата(zltigo @ Sep 17 2009, 23:18) *
Баловство все эти фирменные навороты или навороченные (переболел в свое время) макросы.

biggrin.gif

Там (ARM7) кстати не всегда и применишь данные макросы. Смотреть надо. Не везде однозначность.
Например установка бита, порождает конструкцию вида чтение-модификация-запись. То есть, если есть флаги (попутные), которые сбрасываются единицей, то они уйдут незаметно. smile.gif Что-то я ищё подобное для себя отмечал.

Короче, в общем случае, порождает неоднозначность. То есть порождает отрыв программиста от железа. Когда человек пишет "установить бит в 1" то он не учитывает попутные действия компилятора.

Поэтому, если честно, я тоже не пользуюсь такими конструкциями ни в AVR ни в ARM. smile.gif Не хочется запоминать и анализировать. smile.gif

Но в инициализации применял, для наглядности. Сразу видно.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Sep 18 2009, 09:15
Сообщение #40


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(AHTOXA @ Sep 18 2009, 10:12) *
Ну и о чём это говорит? О том что инструмент плохой? Нет. Просто неподходящий для данного конкретного случая.

Когда некий инструмент подходит исключительно для очень конкретного И ПРОСТЕЙШЕГО случая, а рядом с этим случаем, в этом-же проекте 99 других случаев идущих в разрез с этим "инструментом" sad.gif. Причем инструменты оставшиеся задачи спокойно решают и "конкретную" задачу, то поминаемый Вам "хороший" инструмент становится именно той лишней сущностью sad.gif. А его использование, как Вы там сказали -
"напоминает узколобый догматизм, уж извините."
Цитата
Однако же, существует SPI с его чипселектами, множество микросхем имеет ножки готовности (опять же одиночные)....

SPI? Их есть у нас. Вот, например:
Код
__arm void send_spi_start_int( SPI_bcb *sp, int data )
{
    IO0CLR = sp->msel;
    S0SPDR  = data;                       // Data
    if( S0SPSR_check() )
        return;
    IO0SET = P0B_S0SEL_MASK;
    sp->flag &= (~BCB_TX_START);
}

int work_spi_modgal( bint modul, WORD adrdat )
{
int i = 1000; // Total timeout

    if( modul )
        IO0CLR = P0B_M1_CSEL;
    else
        IO0CLR = P0B_M0_CSEL;
    do     // Timeout if not ready
    {   IO0CLR = S0SSEL_SOFT;
        if( !(IO0PIN & P0B_MX_RDY)  )          // Ready?
        {   IO0CLR = P0B_MX_AC;                // Select 'Address' byte
            S0SPDR = (adrdat>>8);             // Send Hi byte(address)
            if( S0SPSR_check() )            // Wait end of transmit
                goto dsl_exit_error;
            IO0SET = (S0SSEL_SOFT|P0B_MX_AC);        // Disable Select and set 'Data'
            do     // Timeout if not ready
            {    IO0CLR = S0SSEL_SOFT;        // Select
                if( !(IO0PIN & P0B_MX_RDY)  )      // Ready?
                {   S0SPDR = adrdat;              // Send Lo byte(data/dummy)
                    if( S0SPSR_check() )        // Wait end of transmit
                        goto dsl_exit_error;
                    IO0SET = (P0B_MASK_CSEL|S0SSEL_SOFT|P0B_MX_AC); // Disable SHDSL
                    return( S0SPDR );              // Get any data
                }
                IO0SET = S0SSEL_SOFT;    // Disable Select
                delay_us( 10 );
                i--;
            }
            while( i > 0 );
        }
        IO0SET = S0SSEL_SOFT;    // Disable Select
        delay_us( 10 );
        i--;
    }
    while( i > 0 );
dsl_exit_error:
    IO0SET = (P0B_MASK_CSEL|S0SSEL_SOFT|P0B_MX_AC); // Disable SHDSL
    return( -1 );
}

Куда прикажете вставлять макрос для махания shipselect?

Цитата
...да мало ли примеров одиноких ножек, замечательно ложащихся под эти макросы.

Ничножно мало и повторюсь еще раз, рядом с этими одиночными "замечательно ложащимися" еще куча не одиночных... Плодить лишнюю сущность для работы с 1-2 одиночными, когда рядом еще десятки "неудобных" пинов просто незачем.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Sep 18 2009, 09:45
Сообщение #41


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(AHTOXA @ Sep 18 2009, 00:29) *
Так есть же макросы имени Волкова. Очень удобно.

Спасибо за ссылку. Я сделал немного по другому по сравнению с Волковым, и делал это последним на долгой дороге структуризации текущих проектов, после структуризации состояний, многоязычных сообщений, сигналов с датчиков, ошибок и прочей ерунды. Основная причина - самодокументируемость, файл описания должен быть понятен заказчику , ну а порты - чтобы было в одном стиле.

В части использования макросов Волкова, я больше склоняюсь к мнению zltigo, поскольку до недавнего времени прямое ногодрыганье было описано функциональными макросами.
Вот только поддержка режимов работы в бэкграунде все-таки следующий уровень модели OSI smile.gif, и правильно не опускаться до портов сквозь уровень функциональных макросов, даже если это кажется проще.
Ладно, дискуссия немного остра получается, и подобная тема возникает раз в пол-года, вот попробую укрепиться в своем мнении и порву всех smile.gif


Цитата(zltigo @ Sep 18 2009, 10:27) *
это чистое, как слеза, ногодрыгание и переноситься на три варианта конструкции-разводки.

Как это выглядит? Я понимаю, условная компиляция, но на каком этапе.
Дело в том, что меня клинит, если по тексту разбросаны ifdef/endif. Все, что не помещается на экран, не помещается в мозг sad.gif


Цитата(zltigo @ Sep 18 2009, 10:27) *
Вышеприведенное, на мой взгляд описание одной простейшей операции с LCD.

У нас lcd разные, и тут все выглядит не очень противно smile.gif

Код
void WriteByte1(uchar ch)
{ uchar i;
  OffPin(LcdCsb);
  for (i = 0; i<8; i++)
  { if (ch & 0x80) OnPin(LcdSi); else OffPin(LcdSi);
    OffPin(LcdClk);
    OnPin(LcdClk);
    ch <<= 1;
  }
  OnPin(LcdCsb);
}
void WriteLcdControl(char D)
{ OffPin(LcdRs);
  WriteByte1(D);
}

void WriteLcdData(char D)
{ OnPin(LcdRs);
  WriteByte1(D);
}


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
zltigo
сообщение Sep 18 2009, 09:55
Сообщение #42


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(Dog Pawlowa @ Sep 18 2009, 11:41) *
Как это выглядит? Я понимаю, условная компиляция, но на каком этапе.
Дело в том, что меня клинит, если по тексту разбросаны ifdef/endif. Все, что не помещается на экран, не помещается в мозг sad.gif

Макросы, только без притензий на "универсальность", а по месту, и таблицы в ROM.
Пример заполнения одной из таблиц
Код
#define MELODY( a, b, c, d ) (((d)<<9)|((c)<<6)|((b)<<3)|(a))
#define DUALTON( a, b ) (((b)<<14)|((a)<<12))

const ushort gtact[GEN_TAKTS] =
{
    MELODY(1,1,1,4) | DUALTON(TOFF,DUAL),
    MELODY(2,0,2,5) | DUALTON(DUAL,DUAL),
    MELODY(3,2,3,6) | DUALTON(TOFF,SINGLE),
....
....
....


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Sep 18 2009, 10:15
Сообщение #43


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Цитата(zltigo @ Sep 18 2009, 15:15) *
Когда некий инструмент подходит исключительно для очень конкретного И ПРОСТЕЙШЕГО случая, а рядом с этим случаем, в этом-же проекте 99 других случаев идущих в разрез с этим "инструментом" sad.gif
Вовсе не вразрез. Ортогонально. Не подходит - не пользуешь, подходит - почему нет?
Цитата
Причем инструменты оставшиеся задачи спокойно решают и "конкретную" задачу, то поминаемый Вам "хороший" инструмент становится именно той лишней сущностью sad.gif .
Я собственно уже всё обосновал. Вы упорно не желаете слушать, и приводите однообразные примеры.
Цитата
А его использование, как Вы там сказали -
"напоминает узколобый догматизм, уж извините."

Неизящно. Как "сам дурак" в детском садикеsmile.gif Использование инструмента по месту - никак не догматизм. А вот упорное отрицание возможной полезности инструмента - да.
Цитата
SPI? Их есть у нас. Вот, например:

Ужас. Вам что, платят по количеству строчек кода, как индусам? smile.gif
Код
int put_byte(uint08_t b)
{
    int i = 1000; // Total timeout
    int res = -1;

    do
    {   on(S0SSEL_SOFT);
        if((signal(MX_RDY))
        {
            S0SPDR = adrdat;
            if(!S0SPSR_check())
                res = S0SPDR;
            break;
        }
        off(S0SSEL_SOFT);
        delay_us( 10 );
        i--;
    }
    while( i > 0 );
    off(P0B_MASK_CSEL);
    off(S0SSEL_SOFT);
    off(P0B_MX_AC);
    return res;
}

int work_spi_modgal( bint modul, WORD adrdat )
{
    int i = 1000; // Total timeout
    int res;

    if( modul )
        on(M1_CSEL);
    else
        on(M0_CSEL);
    res = put_byte(adrdat>>8);
    if (res != -1)
        res = put_byte(adrdat);
    return res;
}

Цитата
Куда прикажете вставлять макрос для махания shipselect?


Вот, как-то так...


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
zltigo
сообщение Sep 18 2009, 10:22
Сообщение #44


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(AHTOXA @ Sep 18 2009, 12:15) *
.... и приводите однообразные примеры.

smile.gif сказал, АНТОХА и в очередной раз написал on() smile.gif
Цитата
Ужас. Вам что, платят по количеству строчек кода, как индусам? smile.gif

Нет, за рабочий код в том числе работающий с железом так, как нужно железу а не мерещится специалистам по макросам описывающим ножку. Не Вам обижать индусов.
Цитата
Вот, как-то так...

Выше просто абсолютно нерабочая отсебятина из которой выброшен почти смысл, зато, например, простые вещи типа
Код
   IO0SET = (P0B_MASK_CSEL|S0SSEL_SOFT|P0B_MX_AC); // Disable SHDSL

заменены на три
Код
  off(P0B_MASK_CSEL);
    off(S0SSEL_SOFT);
    off(P0B_MX_AC);

И после этого "Вам что, платят по количеству строчек кода, как индусам?" sad.gif. Глупо.
О том, что даже эти три строчки совсем другая диаграмма и другие времена помолчим, и тот-же P0B_MASK это совсем не бит.. Но объяснять это счастливому обладателю "отвертки" желающему неприменно запихнуть ее куда попало видимо, пока? невозможно sad.gif. Может со временем и сами переболеете, как переболел желанием абстрагировать всякую мелочь я.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Sep 18 2009, 10:39
Сообщение #45


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(zltigo @ Sep 18 2009, 13:22) *
простые вещи типа
Код
   IO0SET = (P0B_MASK_CSEL|S0SSEL_SOFT|P0B_MX_AC); // Disable SHDSL

заменены на три...
о том, что это совсем другая диаграмма

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


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post

4 страниц V  < 1 2 3 4 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 22:03
Рейтинг@Mail.ru


Страница сгенерированна за 0.01556 секунд с 7
ELECTRONIX ©2004-2016