-
- Все нормуль, все написанное работает, там L и H по одному адресу, но это мелочь abivan(94 знак., 10.04.2013 15:54 - 15:59)
- rezident прав. кроме как через указатели никак. в структуру и в юнион не впихнуть уже определенную пременную, только указатель на нее. А все что будет впихнуто в структуру будет уже другой пременной - abivan(10.04.2013 16:20)
- Ну с LATBL я и без структур/юнионов справился - #define LATBL (char *)&LATB, а вот с LATBH такое не проходит - #define LATBH (char *)(&LATB+1) дает +2 вместо +1 из-за правил арифметики указателей - MBedder(10.04.2013 16:36)
- Ну это совсем уж... #define LATBH *(((char *)(&LATB))+1) - vmp(10.04.2013 16:38)
- Да уж, замылил глаз скобками, спасибо. Снято! :)) - MBedder(10.04.2013 16:44 - 17:19)
- некрочиповский компилер, если эти приведения без volatile char *, может когда хочет "заоптимизировать", сцуко. - Vit(10.04.2013 18:03)
- В хедере так - extern volatile unsigned int LATB __attribute__((__sfr__)); - поэтому не должон - MBedder(10.04.2013 18:13)
- дык в дефайне в приказном порядке к просто char* приводится - Vit(10.04.2013 18:27)
- В хедере так - extern volatile unsigned int LATB __attribute__((__sfr__)); - поэтому не должон - MBedder(10.04.2013 18:13)
- некрочиповский компилер, если эти приведения без volatile char *, может когда хочет "заоптимизировать", сцуко. - Vit(10.04.2013 18:03)
- Да уж, замылил глаз скобками, спасибо. Снято! :)) - MBedder(10.04.2013 16:44 - 17:19)
- Ну это совсем уж... #define LATBH *(((char *)(&LATB))+1) - vmp(10.04.2013 16:38)
- Ну с LATBL я и без структур/юнионов справился - #define LATBL (char *)&LATB, а вот с LATBH такое не проходит - #define LATBH (char *)(&LATB+1) дает +2 вместо +1 из-за правил арифметики указателей - MBedder(10.04.2013 16:36)
- а где инклуд фирменного хэдера? - Snaky(10.04.2013 15:56)
- рано отрапортовал, нехрена это не работает - abivan(10.04.2013 16:09)
- Не работает патамушто надо двухбайтную структуру в унионе определить. Или просто ругаеццо на переопределение? Во всяком случае, у rezident-а универсальная классика. Я про то же самое говорил. Или надо в хидере объявить такие фишки (так в Keil для Гудвин(49 знак., 10.04.2013 16:18)
- Некрочип, сцуко, хедеры дурацкие поставляет, а лазить в них категорически не хочу, т.к это придется делать для каждого нового чипа - MBedder(10.04.2013 17:18)
- а мыши плакали и кололись... :-) а потому что на серии(большой) хорошая цена. А хедеры... Хедеры как хедеры, ничего в них нет ни плохого, ни хорошего - abivan(10.04.2013 17:47)
- Хидеры, хидеры... все некрочипы - пидеры :)) - MBedder(10.04.2013 17:55)
- а мыши плакали и кололись... :-) а потому что на серии(большой) хорошая цена. А хедеры... Хедеры как хедеры, ничего в них нет ни плохого, ни хорошего - abivan(10.04.2013 17:47)
- Некрочип, сцуко, хедеры дурацкие поставляет, а лазить в них категорически не хочу, т.к это придется делать для каждого нового чипа - MBedder(10.04.2013 17:18)
- Не работает патамушто надо двухбайтную структуру в унионе определить. Или просто ругаеццо на переопределение? Во всяком случае, у rezident-а универсальная классика. Я про то же самое говорил. Или надо в хидере объявить такие фишки (так в Keil для Гудвин(49 знак., 10.04.2013 16:18)
- унутрях. LATB определено, значит все пучком - abivan(10.04.2013 16:01)
- рано отрапортовал, нехрена это не работает - abivan(10.04.2013 16:09)
- rezident прав. кроме как через указатели никак. в структуру и в юнион не впихнуть уже определенную пременную, только указатель на нее. А все что будет впихнуто в структуру будет уже другой пременной - abivan(10.04.2013 16:20)
- Может все таки добавить extern при повторном определении той же переменой? - Make_Pic(10.04.2013 15:52)
- вот кстати в фирменном хэдере так Snaky(150 знак., 10.04.2013 16:04)
- Я просто здесь extern не привел для простоты - в хедере, разумеется, оно есть, т.к. поставляется линкером, а на хедером - MBedder(10.04.2013 16:30)
- Видимо уже кто то проехал по хидеру :) - Make_Pic(10.04.2013 16:07)
- вот кстати в фирменном хэдере так Snaky(150 знак., 10.04.2013 16:04)
- Я бы сделал так rezident(362 знак., 10.04.2013 15:18)
- нет С30 под рукой, а глянь нет ли в этом же казенном файле LATBbytes, что-то подобное помню - abivan(10.04.2013 15:19)
- Нет, только LATBbits, иначе бы не заморачивался - MBedder(10.04.2013 15:23)
- Не из-за определения sfr ли это? Не связано ли с тем что регистр 16 битный, а засунуть хочешь байт? Этот проц позволяет побайтно писать? - Codavr(10.04.2013 15:07)
- Естественно - на асме я просто пишу mov.b blabla,LATB или mov.b blabla,LATB+1 - MBedder(10.04.2013 15:08)
- В первую очередь надо сделать unsigned char L,H как структуру внутри union, иначе чары лягут друг на друга, и... - Юра(10.04.2013 14:56, )
- Осторожно поинтересуюсь. У тебя определение LATBbytes видно из тех файлов где LATBbytes.L = data; стоят? - Codavr(10.04.2013 14:50)
- Разумеется - заинклужено, иначе бы ругань была "not defined" - MBedder(10.04.2013 14:51)
- А в .h однократно инклудится? Есть чонить типа такого: Codavr(68 знак., 10.04.2013 14:58)
- Да, однократно - MBedder(10.04.2013 14:59)
- A этот хидер с юнионом в один файл инклудится или в несколько? - Apтём(10.04.2013 15:44)
- Да, однократно - MBedder(10.04.2013 14:59)
- unsigned int data = 0x0034; написать. - Codavr(10.04.2013 14:53)
- А data тут при чем? LATB - 16-битный порт, а я хочу работать ОТДЕЛЬНО с его 8-битными половинками - MBedder(10.04.2013 14:58)
- Пардон. Подглючивает меня. - Codavr(10.04.2013 14:59)
- А data тут при чем? LATB - 16-битный порт, а я хочу работать ОТДЕЛЬНО с его 8-битными половинками - MBedder(10.04.2013 14:58)
- А в .h однократно инклудится? Есть чонить типа такого: Codavr(68 знак., 10.04.2013 14:58)
- Разумеется - заинклужено, иначе бы ругань была "not defined" - MBedder(10.04.2013 14:51)
- #typedef union {бла..бла}. Присвоить ему адрес LATB. Обращаться с помощью указателей. - Гудвин(10.04.2013 14:40)
- Это если не трогать "священную корову" ;) - Гудвин(10.04.2013 14:45)
- Создать указатель на LATBbytes, присвоить ему адрес LATB с приведением типов, далее через указатель. - =AlexD=(10.04.2013 14:39)
- В режиме С++ можно попробовать извернуться с константным указателем, тогда накладных расходов не будет совсем. - =AlexD=(10.04.2013 14:42)
- Не, только С - MBedder(10.04.2013 14:46)
- В режиме С++ можно попробовать извернуться с константным указателем, тогда накладных расходов не будет совсем. - =AlexD=(10.04.2013 14:42)
- Все нормуль, все написанное работает, там L и H по одному адресу, но это мелочь abivan(94 знак., 10.04.2013 15:54 - 15:59)