MPLAB C18 EEPROM initialization

Hello, All!
Hачал с USB'шным интерфейсом в PIC18 разбираться, для этого пришлось вместо
HiTech начать осваивать mcc18, под который есть библиотеки и примеры. Из
этого поделия со страшной силой торчат гнусные уши - документация ниже
плинтуса, присутствует в ней не то, что нужно, зачем-то детально описан
формат COFF файла, но скажем опция -s (компилировать через ассемблер) нигде
не описана, хотя и работает. А вопрос - как в программе содержимое EEPROM
задать? То, что в HiTech делается макросом __EEPROM_DATA()?
dima
formatting link

Reply to
Dmitry Orlov
Loading thread data ...
Hello, Dmitry! You wrote to All on Wed, 2 Sep 2009 09:12:01 +0000 (UTC):
DO> (ËÏÍÐÉÌÉÒÏ×ÁÔØ ÞÅÒÅÚ ÁÓÓÅÍÂÌÅÒ) ÎÉÇÄÅ ÎÅ ÏÐÉÓÁÎÁ, ÈÏÔÑ É ÒÁÂÏÔÁÅÔ.
÷Ï-ÐÅÒ×ÙÈ, ÎÅ ÞÅÒÅÚ ÁÓÓÅÍÂÌÅÒ, Á Ó ÇÅÎÅÒÁÃÉÅÊ ÁÓÓÅÍÂÌÅÒÎÏÇÏ ÉÓÈÏÄÎÉËÁ. ÷Ï-×ÔÏÒÙÈ ÓÍÙÓÌÁ × ÜÔÏÍ ÎÉËÁËÏÇÏ, ÌÉÓÔÉÎÇÁ ÄÏÓÔÁÔÏÞÎÏ.
DO> á ×ÏÐÒÏÓ - ËÁË × ÐÒÏÇÒÁÍÍÅ ÓÏÄÅÒÖÉÍÏÅ EEPROM ÚÁÄÁÔØ? ôÏ, ÞÔÏ × HiTech DO> ÄÅÌÁÅÔÓÑ ÍÁËÒÏÓÏÍ __EEPROM_DATA()?
÷ ÌÉÎËÅÒÎÏÍ ÆÁÊÌÅ ÄÏÌÖÎÙ ÂÙÔØ ÏÂßÑ×ÌÅÎÎÙ:
CODEPAGE NAME=eedata START=0xF00000 END=0xF000FF PROTECTED SECTION NAME=EEDATA ROM=eedata
÷ ÐÒÏÇÒÁÍÍÅ ËÁË ÏÂÙÞÎÏ ÏÂßÑ×ÌÑÅÍ ÓÅËÃÉÀ É ÒÁÚÍÅÝÁÅÍ × ÎÅÊ ÎÕÖÎÙÅ ÐÅÒÅÍÅÎÎÙÅ.
#pragma romdata EEDATA
rom struct reg_cfg reg_config[8];
WBR, AVB
Reply to
Alexey V Bugrov
Hello, Alexey V Bugrov! You wrote in conference fido7.ru.embedded to Dmitry Orlov on Wed, 2 Sep 2009 11:31:17 +0000 (UTC):
DO>> (компилировать через ассемблер) нигде не описана, хотя и работает.
AVB> Во-первых, не через ассемблер, а с генерацией ассемблерного AVB> исходника.
Или так, не важно, важно, что ни в выводе компилятора при его запуске, ни в документации эта команда не приведена (и кто его знает какие еще), что на мой вкус говорит о ее отвратительном качестве.
AVB> Во-вторых смысла в этом никакого, листинга достаточно.
А как его получить?
DO>> А вопрос - как в программе содержимое EEPROM задать? То, что в DO>> HiTech делается макросом __EEPROM_DATA()?
AVB> В линкерном файле должны быть объявленны:
AVB> CODEPAGE NAME=eedata START=0xF00000 END=0xF000FF PROTECTED AVB> SECTION NAME=EEDATA ROM=eedata
А для килобайтного EEPROM (18f24k20)? И откуда вообще адрес 0xF00000 взялся?
AVB> В программе как обычно объявляем секцию и размещаем в ней нужные AVB> переменные.
AVB> #pragma romdata EEDATA
AVB> rom struct reg_cfg reg_config[8];
Ага, спасибо.
dima
formatting link
Reply to
Dmitry Orlov
Hello, Dmitry! You wrote to Alexey V Bugrov on Wed, 2 Sep 2009 14:22:17 +0000 (UTC):
DO>>> (ËÏÍÐÉÌÉÒÏ×ÁÔØ ÞÅÒÅÚ ÁÓÓÅÍÂÌÅÒ) ÎÉÇÄÅ ÎÅ ÏÐÉÓÁÎÁ, ÈÏÔÑ É ÒÁÂÏÔÁÅÔ. AVB>> ÷Ï-ÐÅÒ×ÙÈ, ÎÅ ÞÅÒÅÚ ÁÓÓÅÍÂÌÅÒ, Á Ó ÇÅÎÅÒÁÃÉÅÊ ÁÓÓÅÍÂÌÅÒÎÏÇÏ AVB>> ÉÓÈÏÄÎÉËÁ. DO> éÌÉ ÔÁË, ÎÅ ×ÁÖÎÏ, ×ÁÖÎÏ, ÞÔÏ ÎÉ × ×Ù×ÏÄÅ ËÏÍÐÉÌÑÔÏÒÁ ÐÒÉ ÅÇÏ ÚÁÐÕÓËÅ, DO> ÎÉ × ÄÏËÕÍÅÎÔÁÃÉÉ ÜÔÁ ËÏÍÁÎÄÁ ÎÅ ÐÒÉ×ÅÄÅÎÁ (É ËÔÏ ÅÇÏ ÚÎÁÅÔ ËÁËÉÅ ÅÝÅ), DO> ÞÔÏ ÎÁ ÍÏÊ ×ËÕÓ ÇÏ×ÏÒÉÔ Ï ÅÅ ÏÔ×ÒÁÔÉÔÅÌØÎÏÍ ËÁÞÅÓÔ×Å.
HÏÒÍÁÌØÎÙÊ ËÏÍÐÉÌÅÒ, ÉÓÐÏÌØÚÏ×ÁÌÓÑ ×Ï ÍÎÏÇÉÈ ÐÒÏÅËÔÁÈ.
AVB>> ÷Ï-×ÔÏÒÙÈ ÓÍÙÓÌÁ × ÜÔÏÍ ÎÉËÁËÏÇÏ, ÌÉÓÔÉÎÇÁ ÄÏÓÔÁÔÏÞÎÏ.
DO> á ËÁË ÅÇÏ ÐÏÌÕÞÉÔØ?
ðÏÓÔÁ×ÉÔØ ÓÏÏÔ×ÅÔÓ×ÕÀÝÕÀ ÇÁÌËÕ × MPLAB. ïÎÁ ËÁÖÅÔÓÑ × ÚÁËÌÁÄËÅ ÌÉÎËÅÒÁ, ÕÖÅ ÎÅ ÐÏÍÎÀ. HÕÖÎÏ ×ËÌÀÞÁÔØ map, ÔÏÇÄÁ ÇÅÎÅÒÉÔÓÑ ÌÉÓÔÉÎÇ ÉÌÉ ÎÁÏÂÏÒÏÔ. ÷ ÄÏËÕÍÅÎÔÁÃÉÉ ÎÁ ÌÉÎËÅÒ ÎÁÐÉÓÁÎÏ.
AVB>> ÷ ÌÉÎËÅÒÎÏÍ ÆÁÊÌÅ ÄÏÌÖÎÙ ÂÙÔØ ÏÂßÑ×ÌÅÎÎÙ:
AVB>> CODEPAGE NAME=eedata START=0xF00000 END=0xF000FF PROTECTED AVB>> SECTION NAME=EEDATA ROM=eedata
DO> á ÄÌÑ ËÉÌÏÂÁÊÔÎÏÇÏ EEPROM (18f24k20)?
÷ ËÁÔÁÌÏÇÅ ËÏÍÐÉÌÑÔÏÒÁ ÅÓÔØ ÐÁÐËÁ lkr Ó ÐÒÉÍÅÒÁÍÉ ÓËÒÉÐÔÏ× ÄÌÑ ×ÓÅÈ ÐÒÏÃÅÓÓÏÒÏ×. åÓÌÉ ÉÍÅÎÎÏ ÄÌÑ Ô×ÏÅÇÏ ÐÒÏÃÅÓÓÏÒÁ ÔÁÍ ÎÅÔ, ÚÎÁÞÉÔ ÎÕÖÎÁ ÂÏÌÅÅ Ó×ÅÖÁÑ ×ÅÒÓÉÑ ËÏÍÐÉÌÑÔÏÒÁ ÉÌÉ ÎÁÐÉÓÁÔØ ÒÕËÁÍÉ ÐÏ ÏÂÒÁÚÕ É ÐÏÄÏÂÉÀ.
DO> é ÏÔËÕÄÁ ×ÏÏÂÝÅ ÁÄÒÅÓ 0xF00000 ×ÚÑÌÓÑ?
éÚ ÄÏËÕÍÅÎÔÁÃÉÉ ÎÁ ËÏÍÐÉÌÑÔÏÒ.
WBR, AVB
Reply to
Alexey V Bugrov
Hello, Alexey V Bugrov! You wrote in conference fido7.ru.embedded to Dmitry Orlov on Wed, 2 Sep 2009 15:31:10 +0000 (UTC):
DO>>>> (компилировать через ассемблер) нигде не описана, хотя и DO>>>> работает.
AVB>>> Во-первых, не через ассемблер, а с генерацией ассемблерного AVB>>> исходника.
DO>> Или так, не важно, важно, что ни в выводе компилятора при его DO>> запуске, ни в документации эта команда не приведена (и кто его DO>> знает какие еще), что на мой вкус говорит о ее отвратительном DO>> качестве.
AVB> Hормальный компилер, использовался во многих проектах.
Когда я напишу что-то более осмысленное, чем махание ножкой (а это уже заработало), я обязательно сравню с HiTech. Hо я не столько про компилятор, сколько про документацию. Кстати, что можно писать 0b01010101 вместо 85 я тоже в документации не нашел, однако можно.
AVB>>> Во-вторых смысла в этом никакого, листинга достаточно.
DO>> А как его получить?
AVB> Поставить соответсвующую галку в MPLAB.
Я не пользуюсь MPLAB, я в MED пишу и make'ом (борландовским по старой памяти) собираю.
AVB> Она кажется в закладке линкера, уже не помню.
Hе понимаю почему листинг компиляции дает линкер. Мне же одного файла, а не всей программы листинг нужен.
AVB> Hужно включать map, тогда генерится листинг или наоборот. В AVB> документации на линкер написано.
Посмотрю.
AVB>>> В линкерном файле должны быть объявленны:
AVB>>> CODEPAGE NAME=eedata START=0xF00000 END=0xF000FF PROTECTED AVB>>> SECTION NAME=EEDATA ROM=eedata
DO>> А для килобайтного EEPROM (18f24k20)?
AVB> В каталоге компилятора есть папка lkr с примерами скриптов для всех AVB> процессоров. Если именно для твоего процессора там нет, значит AVB> нужна более свежая версия компилятора или написать руками по AVB> образу и подобию.
Поставил самую свежую, процессор там есть и там таки написано что и у тебя
// File: 18f24k20.lkr // Sample linker script for the PIC18F24K20 processor
LIBPATH .
FILES c018i.o FILES clib.lib FILES p18f24k20.lib
CODEPAGE NAME=vectors START=0x0 END=0x29 PROTECTED CODEPAGE NAME=page START=0x2A END=0x3FFF CODEPAGE NAME=idlocs START=0x200000 END=0x200007 PROTECTED CODEPAGE NAME=config START=0x300000 END=0x30000D PROTECTED CODEPAGE NAME=devid START=0x3FFFFE END=0x3FFFFF PROTECTED CODEPAGE NAME=eedata START=0xF00000 END=0xF000FF PROTECTED
ACCESSBANK NAME=accessram START=0x0 END=0x5F DATABANK NAME=gpr0 START=0x60 END=0xFF DATABANK NAME=gpr1 START=0x100 END=0x1FF DATABANK NAME=gpr2 START=0x200 END=0x2FF ACCESSBANK NAME=accesssfr START=0xF60 END=0xFFF PROTECTED
SECTION NAME=CONFIG ROM=config
STACK SIZE=0x100 RAM=gpr2
Чего я не понимаю, ведь там 1024 байта eeprom и должно быть 3ff. Кстати, в файле для 18f26k20 таки 3ff в этом месте, а где для просто 2620 файл я вообще не понял. Видимо таки просто баг, интересно сколько их там.
DO>> И откуда вообще адрес 0xF00000 взялся?
AVB> Из документации на компилятор.
Тоже сходу не нашел... В HiTech в такие файлы лазить не приходится, но файл, определяющий конфигурацию процессор там для всех поддерживаемых один и подробно откомментирован. Кажется и в документации описан, хотя нужды в этом при наличии комментов в файле нет.
dima
formatting link
Reply to
Dmitry Orlov
Hello, Dmitry! You wrote to Alexey V Bugrov on Wed, 2 Sep 2009 16:47:36 +0000 (UTC):
AVB>> HÏÒÍÁÌØÎÙÊ ËÏÍÐÉÌÅÒ, ÉÓÐÏÌØÚÏ×ÁÌÓÑ ×Ï ÍÎÏÇÉÈ ÐÒÏÅËÔÁÈ.
DO> ëÏÇÄÁ Ñ ÎÁÐÉÛÕ ÞÔÏ-ÔÏ ÂÏÌÅÅ ÏÓÍÙÓÌÅÎÎÏÅ, ÞÅÍ ÍÁÈÁÎÉÅ ÎÏÖËÏÊ (Á ÜÔÏ DO> ÕÖÅ ÚÁÒÁÂÏÔÁÌÏ), Ñ ÏÂÑÚÁÔÅÌØÎÏ ÓÒÁ×ÎÀ Ó HiTech. HÏ Ñ ÎÅ ÓÔÏÌØËÏ ÐÒÏ DO> ËÏÍÐÉÌÑÔÏÒ, ÓËÏÌØËÏ ÐÒÏ ÄÏËÕÍÅÎÔÁÃÉÀ. ëÓÔÁÔÉ, ÞÔÏ ÍÏÖÎÏ ÐÉÓÁÔØ DO> 0b01010101 ×ÍÅÓÔÏ 85 Ñ ÔÏÖÅ × ÄÏËÕÍÅÎÔÁÃÉÉ ÎÅ ÎÁÛÅÌ, ÏÄÎÁËÏ ÍÏÖÎÏ.
ôÁË ÜÔ É × èÁÊôÅÞ ÍÏÖÎÏ. á ×ÏÔ × éáò - ÎÅÔ :(
DO> CODEPAGE NAME=eedata START=0xF00000 END=0xF000FF
çÌÀËÉ ÓËÏÒÅÅ ×ÓÅÇÏ, 3ÆÆ ÄÏÌÖÎÏ ÂÙÔØ.
DO> þÅÇÏ Ñ ÎÅ ÐÏÎÉÍÁÀ, ×ÅÄØ ÔÁÍ 1024 ÂÁÊÔÁ eeprom É ÄÏÌÖÎÏ ÂÙÔØ 3ff. DO> ëÓÔÁÔÉ, × ÆÁÊÌÅ ÄÌÑ 18f26k20 ÔÁËÉ 3ff × ÜÔÏÍ ÍÅÓÔÅ, Á ÇÄÅ ÄÌÑ DO> ÐÒÏÓÔÏ 2620 ÆÁÊÌ Ñ ×ÏÏÂÝÅ ÎÅ ÐÏÎÑÌ. ÷ÉÄÉÍÏ ÔÁËÉ ÐÒÏÓÔÏ ÂÁÇ, DO> ÉÎÔÅÒÅÓÎÏ ÓËÏÌØËÏ ÉÈ ÔÁÍ.
õÇÕ.
With best regards, Alexander Torres. 2:461/28
formatting link
OR
formatting link

Reply to
Alexander Torres
Hello, Alexander Torres! You wrote in conference fido7.ru.embedded to Dmitry Orlov on Wed, 2 Sep 2009 17:02:42 +0000 (UTC):
AVB>>> Hормальный компилер, использовался во многих проектах.
DO>> Когда я напишу что-то более осмысленное, чем махание ножкой (а это DO>> уже заработало), я обязательно сравню с HiTech. Hо я не столько DO>> про компилятор, сколько про документацию. Кстати, что можно писать DO>> 0b01010101 вместо 85 я тоже в документации не нашел, однако можно.
AT> Так эт и в ХайТеч можно.
Hу так я взял из HiTech кусок живой программы с инициализацией железа и стал из него пробную для mcc18 делать, и увидел, что он это жрет. Жалко, что там типа bit нету и вместо RB3 =1; надо писать PORTBbits.RB3 = 1;. Как я увижу, что базовые вещи работают, начну делать уже под другой процессор (18F66J55), с USB и 2 UART, правда без EEPROM, придется ему внешний ставить. Зато поставлю сразу на мегабит и быстрый (1MHz) - 24FC1025. Сначала под UART сделаю софт, чтобы что-то уже жило, а потом уже буду с USB его разбираться. Правда самого процессора и платы с ним у меня пока нет, есть демо-борд под 18F46J50, причем там уже есть демо-программа, которая реализует mass storage и hid devices, причем это таки работает, что внушает надежду, что и то, что мне нужно заработает. Hо для начала, нужно разобраться с этим mcc, и начать переносить на него куски моей старой программы для старого, но похожего назначения устройства (проверочный стенд для источника питания). Таки хочется, чтобы он с USB работал, а не с исчезающим COM'ом и проблемными переходниками, у которых то драйвера глючат, то их под нужную версию винды нет, то сами они виснут, и вообще денег стоят.
AT> А вот в ИАР - нет :(
Это не удобно. Я люблю писать в программе (смотреть в каком-нибудь моноширинном шрифте)
PORTB = 0b11000000; /* |||||||| */ /*RB0 21 |||||||+- PFC_FAIL (output) */ /*RB1 22 ||||||+-- PFC_OK (output) */ /*RB2 23 |||||+--- PWR_FAIL (output) */ /*RB3 24 ||||+---- PWR_OK (output) */ /*RB4 25 |||+----- WARM_FAIL (output) */ /*RB5 26 ||+------ WARM_OK (output) */ /*RB6 27 |+------- TRx (output) */ /*RB7 28 +-------- TTx (input) */ /*-------------- Init timers ---------------------*/ T0CON = 0b11000000 + PS0; /* Prescaler TMR0 rate = 64 */ /* |||||||| T0PS 0 1 2 3 4 5 6 7 */ /* |||||||| 1: 2 4 8 16 32 64 128 256 */ /* 0 |||||||+- T0PS0 0 1 0 1 0 1 0 1 */ /* 1 ||||||+-- T0PS1 0 0 1 1 0 0 1 1 */ /* 2 |||||+--- T0PS2 0 0 0 0 1 1 1 1 */ /* 3 ||||+---- PSA 0 = Timer0 prescaler is assigned. */ /* 4 |||+----- T0SE 0 = Increment on low-to-high transition on T0CKI pin */ /* 5 ||+------ T0CS 0 = Internal cycle clock (CLKOUT) */ /* 6 |+------- T08BIT 1 = Timer0 is 8-bit timer/counter */ /* 7 +-------- TMR0ON 1 - Enables Timer0 */
Чтобы сразу было видно какой бит за что отвечает и если я его меняю, то это тоже автокомментируется, а когда PORTB = 0xc0; написано, то так наглядно уже не получается. Мелочь конечно, но не приятно. Правда для PIC18 и не актуально, я бы и на mcc не смотрел, если бы не надо было сделанные под него библиотеки использовать.
DO>> CODEPAGE NAME=eedata START=0xF00000 END=0xF000FF
AT> Глюки скорее всего, 3фф должно быть.
Hу да, очевидно.
DO>> Чего я не понимаю, ведь там 1024 байта eeprom и должно быть 3ff. DO>> Кстати, в файле для 18f26k20 таки 3ff в этом месте, а где для DO>> просто 2620 файл я вообще не понял. Видимо таки просто баг, DO>> интересно сколько их там.
AT> Угу.
Hе хорошее первое впечатление. Всего второй день этим компилятором занимаюсь, и уже на баги напоролся. Придется этот файл к себе в проект тащить, соответственно исправленный, потому как при очередном обновлении компилятора он перепишется и возможно, что опять с багами. И это еще не самодельный порт gnu_c'и, а коммерческий продукт на его основе. А душок этот gnu'сный витает, мягко говоря.
dima
formatting link
Reply to
Dmitry Orlov
Hello, Dmitry! You wrote to Alexey V Bugrov on Wed, 2 Sep 2009 16:47:36 +0000 (UTC):
AVB>> HÏÒÍÁÌØÎÙÊ ËÏÍÐÉÌÅÒ, ÉÓÐÏÌØÚÏ×ÁÌÓÑ ×Ï ÍÎÏÇÉÈ ÐÒÏÅËÔÁÈ.
DO> ëÏÇÄÁ Ñ ÎÁÐÉÛÕ ÞÔÏ-ÔÏ ÂÏÌÅÅ ÏÓÍÙÓÌÅÎÎÏÅ, ÞÅÍ ÍÁÈÁÎÉÅ ÎÏÖËÏÊ (Á ÜÔÏ ÕÖÅ DO> ÚÁÒÁÂÏÔÁÌÏ), Ñ ÏÂÑÚÁÔÅÌØÎÏ ÓÒÁ×ÎÀ Ó HiTech. HÏ Ñ ÎÅ ÓÔÏÌØËÏ ÐÒÏ DO> ËÏÍÐÉÌÑÔÏÒ, ÓËÏÌØËÏ ÐÒÏ ÄÏËÕÍÅÎÔÁÃÉÀ. ëÓÔÁÔÉ, ÞÔÏ ÍÏÖÎÏ ÐÉÓÁÔØ DO> 0b01010101 ×ÍÅÓÔÏ 85 Ñ ÔÏÖÅ × ÄÏËÕÍÅÎÔÁÃÉÉ ÎÅ ÎÁÛÅÌ, ÏÄÎÁËÏ ÍÏÖÎÏ.
2.7.2 Numeric Constants
MPLAB C18 supports the standard prefixes for specifying hexadecimal (0x) and octal
(0) values and adds support for specifying binary values using the 0b prefix. For
example, the value two hundred thirty seven may be denoted as the binary constant
0b11101101.
AVB>> ðÏÓÔÁ×ÉÔØ ÓÏÏÔ×ÅÔÓ×ÕÀÝÕÀ ÇÁÌËÕ × MPLAB.
DO> ñ ÎÅ ÐÏÌØÚÕÀÓØ MPLAB, Ñ × MED ÐÉÛÕ É make'ÏÍ (ÂÏÒÌÁÎÄÏ×ÓËÉÍ ÐÏ ÓÔÁÒÏÊ DO> ÐÁÍÑÔÉ) ÓÏÂÉÒÁÀ.
ñ ÔÏÖÅ ÍÅÊËÏÍ ÓÏÂÉÒÁÀ, ÎÏ ÌÉÓÔÉÎÇ ÅÓÔØ. $(link) /v /o"$@" /m"$(map)" /l"$(lpath)" "$(lscript)" $(patsubst %,$(tpath)\\%,$(objects))
AVB>> ïÎÁ ËÁÖÅÔÓÑ × ÚÁËÌÁÄËÅ ÌÉÎËÅÒÁ, ÕÖÅ ÎÅ ÐÏÍÎÀ.
DO> HÅ ÐÏÎÉÍÁÀ ÐÏÞÅÍÕ ÌÉÓÔÉÎÇ ËÏÍÐÉÌÑÃÉÉ ÄÁÅÔ ÌÉÎËÅÒ. íÎÅ ÖÅ ÏÄÎÏÇÏ ÆÁÊÌÁ, DO> Á ÎÅ ×ÓÅÊ ÐÒÏÇÒÁÍÍÙ ÌÉÓÔÉÎÇ ÎÕÖÅÎ.
ëÁËÁÑ ÒÁÚÎÉÃÁ? ðÕÓÔØ ÂÕÄÅÔ ×ÓÅÊ ÐÒÏÇÒÁÍÍÙ, ÔÁË ÍÅÎØÛÅ ÌÁÚÉÔØ ÐÏ ÒÁÚÎÙÍ ÆÁÊÌÁÍ + ÐÒÉ×ÑÚËÁ Ë ÁÂÓÏÌÀÔÎÙÍ ÁÄÒÅÓÁÍ.
AVB>> ÷ ËÁÔÁÌÏÇÅ ËÏÍÐÉÌÑÔÏÒÁ ÅÓÔØ ÐÁÐËÁ lkr Ó ÐÒÉÍÅÒÁÍÉ ÓËÒÉÐÔÏ× ÄÌÑ ×ÓÅÈ AVB>> ÐÒÏÃÅÓÓÏÒÏ×. åÓÌÉ ÉÍÅÎÎÏ ÄÌÑ Ô×ÏÅÇÏ ÐÒÏÃÅÓÓÏÒÁ ÔÁÍ ÎÅÔ, ÚÎÁÞÉÔ AVB>> ÎÕÖÎÁ ÂÏÌÅÅ Ó×ÅÖÁÑ ×ÅÒÓÉÑ ËÏÍÐÉÌÑÔÏÒÁ ÉÌÉ ÎÁÐÉÓÁÔØ ÒÕËÁÍÉ ÐÏ AVB>> ÏÂÒÁÚÕ É ÐÏÄÏÂÉÀ.
DO> ðÏÓÔÁ×ÉÌ ÓÁÍÕÀ Ó×ÅÖÕÀ, ÐÒÏÃÅÓÓÏÒ ÔÁÍ ÅÓÔØ É ÔÁÍ ÔÁËÉ ÎÁÐÉÓÁÎÏ ÞÔÏ É Õ DO> ÔÅÂÑ
ìÉÂÏ ÅÓÔØ ÅÒÁÔÁ ÎÁ ËÁÍÅÎØ, ÌÉÂÏ ÐÒÏÓÔÏ ÂÁÇ, ×ÓÑËÏÅ ÂÙ×ÁÅÔ.
DO>>> é ÏÔËÕÄÁ ×ÏÏÂÝÅ ÁÄÒÅÓ 0xF00000 ×ÚÑÌÓÑ?
AVB>> éÚ ÄÏËÕÍÅÎÔÁÃÉÉ ÎÁ ËÏÍÐÉÌÑÔÏÒ.
DO> ôÏÖÅ ÓÈÏÄÕ ÎÅ ÎÁÛÅÌ... ÷ HiTech × ÔÁËÉÅ ÆÁÊÌÙ ÌÁÚÉÔØ ÎÅ ÐÒÉÈÏÄÉÔÓÑ, ÎÏ DO> ÆÁÊÌ, ÏÐÒÅÄÅÌÑÀÝÉÊ ËÏÎÆÉÇÕÒÁÃÉÀ ÐÒÏÃÅÓÓÏÒ ÔÁÍ ÄÌÑ ×ÓÅÈ ÐÏÄÄÅÒÖÉ×ÁÅÍÙÈ DO> ÏÄÉÎ É ÐÏÄÒÏÂÎÏ ÏÔËÏÍÍÅÎÔÉÒÏ×ÁÎ. ëÁÖÅÔÓÑ É × ÄÏËÕÍÅÎÔÁÃÉÉ ÏÐÉÓÁÎ, ÈÏÔÑ DO> ÎÕÖÄÙ × ÜÔÏÍ ÐÒÉ ÎÁÌÉÞÉÉ ËÏÍÍÅÎÔÏ× × ÆÁÊÌÅ ÎÅÔ.
óÅÊÞÁÓ ÎÅ ÐÏÌÅÎÉÌÓÑ É ÐÏÓÍÏÔÒÅÌ - ÓÐÅÃÉÁÌØÎÏ ÐÒÏ eeprom ÎÉÞÅÇÏ ÏÔÄÅÌØÎÏ ÎÅ ÎÁÐÉÓÁÎÏ, ÚÁÔÏ ÅÓÔØ ÒÁÚÄÅÌ
2.4.3 ram/rom Qualifiers
ëÏÍÐÉÌÑÔÏÒÕ ÂÅÚÒÁÚÌÉÞÎÏ ÞÔÏ ÜÔÏ ÚÁ ÐÁÍÑÔØ, ÏÎ ÐÒÏÓÔÏ ÔÁÍ ÒÁÚÍÅÝÁÅÔ ÓÅËÃÉÀ Ó ÏÐÒÅÄÅÌÅÎÎÙÍÉ ÁÔÔÒÉÂÕÔÁÍÉ. ëÁÒÔÁ ÐÁÍÑÔÉ ÐÒÏÃÅÓÓÏÒÁ ÅÓÔØ × ËÁËÏÍ-ÔÏ ÄÒÕÇÏÍ ÄÏËÕÍÅÎÔÅ É ÔÁÍ ÖÅ ÂÙÌÏ ÕÐÏÍÉÎÁÎÉÅ ÐÒÏ ÅÅÐÒÏÍ.
WBR, AVB
Reply to
Alexey V Bugrov
Hello, Alexey V Bugrov! You wrote in conference fido7.ru.embedded to Dmitry Orlov on Wed, 2 Sep 2009 18:31:19 +0000 (UTC):
AVB>>> Hормальный компилер, использовался во многих проектах.
DO>> Когда я напишу что-то более осмысленное, чем махание ножкой (а это DO>> уже заработало), я обязательно сравню с HiTech. Hо я не столько про DO>> компилятор, сколько про документацию. Кстати, что можно писать DO>> 0b01010101 вместо 85 я тоже в документации не нашел, однако можно.
AVB> 2.7.2 Numeric Constants
AVB> MPLAB C18 supports the standard prefixes for specifying hexadecimal AVB> (0x) and octal
AVB> (0) values and adds support for specifying binary values using the AVB> 0b prefix. For
AVB> example, the value two hundred thirty seven may be denoted as the AVB> binary constant
AVB> 0b11101101.
Значит пропустил. Логично было бы в отличиях от стандарта, расширениях языка такое писать.
AVB>>> Поставить соответсвующую галку в MPLAB.
DO>> Я не пользуюсь MPLAB, я в MED пишу и make'ом (борландовским по DO>> старой памяти) собираю.
AVB> Я тоже мейком собираю, но листинг есть. AVB> $(link) /v /o"$@" /m"$(map)" /l"$(lpath)" "$(lscript)" $(patsubst AVB> %,$(tpath)\\%,$(objects))
AVB>>> Она кажется в закладке линкера, уже не помню.
DO>> Hе понимаю почему листинг компиляции дает линкер. Мне же одного DO>> файла, а не всей программы листинг нужен.
AVB> Какая разница? Пусть будет всей программы, так меньше лазить по AVB> разным файлам + привязка к абсолютным адресам.
Вся программа может быть большой, или ее может вовсе не быть (не собрана еще) а бывает нужен только конкретный кусочек, посмотреть, к примеру, какая из логически равноценных конструкций в лучший код компилируется.
AVB>>> В каталоге компилятора есть папка lkr с примерами скриптов для AVB>>> всех процессоров. Если именно для твоего процессора там нет, AVB>>> значит нужна более свежая версия компилятора или написать руками AVB>>> по образу и подобию.
DO>> Поставил самую свежую, процессор там есть и там таки написано что и DO>> у тебя
AVB> Либо есть ерата на камень, либо просто баг, всякое бывает.
Причем тут камень? Камень у меня давно работает. Эррата на него касается endurace этого eeprom, и я как раз использую этот килобайт для записи меняющихся данных по кругу.
DO>>>> И откуда вообще адрес 0xF00000 взялся?
AVB>>> Из документации на компилятор.
DO>> Тоже сходу не нашел... В HiTech в такие файлы лазить не приходится, DO>> но файл, определяющий конфигурацию процессор там для всех DO>> поддерживаемых один и подробно откомментирован. Кажется и в DO>> документации описан, хотя нужды в этом при наличии комментов в DO>> файле нет.
AVB> Сейчас не поленился и посмотрел - специально про eeprom ничего AVB> отдельно не написано, зато есть раздел
AVB> 2.4.3 ram/rom Qualifiers
Ага, а eeprom - это ram или rom?
AVB> Компилятору безразлично что это за память, он просто там размещает AVB> секцию с определенными аттрибутами. Карта памяти процессора есть в AVB> каком-то другом документе и там же было упоминание про еепром.
Компилятору-то безразлично, а мне - нет. В хорошей документации написано как работать с ресурсами кристалла, для которого этот компилятор сделан. В том числе и как размещать данные в eeprom и как их от туда читать. В HiTech специально оговорен способ "прозрачного", средствами языка доступа к этой памяти, доступа посредством макроса и посредством функции. Я не пользуюсь ни одним из них, а пользуюсь своей функцией, но это мой выбор. А тут вообще EEPROM молчанием обойден, и зачем-то надо в еще какие-то документы лазить, неужели так трудно все в одном месте написать, вместо совершенно бесполезного для embedded программиста формата coff файла, например.
dima
formatting link
Reply to
Dmitry Orlov
Hello Alexander.
Wed Sep 02 2009 21:02, Alexander Torres wrote to Dmitry Orlov:
DO>> ëÏÇÄÁ Ñ ÎÁÐÉÛÕ ÞÔÏ-ÔÏ ÂÏÌÅÅ ÏÓÍÙÓÌÅÎÎÏÅ, ÞÅÍ ÍÁÈÁÎÉÅ ÎÏÖËÏÊ (Á ÜÔÏ DO>> ÕÖÅ ÚÁÒÁÂÏÔÁÌÏ), Ñ ÏÂÑÚÁÔÅÌØÎÏ ÓÒÁ×ÎÀ Ó HiTech. HÏ Ñ ÎÅ ÓÔÏÌØËÏ ÐÒÏ DO>> ËÏÍÐÉÌÑÔÏÒ, ÓËÏÌØËÏ ÐÒÏ ÄÏËÕÍÅÎÔÁÃÉÀ. ëÓÔÁÔÉ, ÞÔÏ ÍÏÖÎÏ ÐÉÓÁÔØ DO>> 0b01010101 ×ÍÅÓÔÏ 85 Ñ ÔÏÖÅ × ÄÏËÕÍÅÎÔÁÃÉÉ ÎÅ ÎÁÛÅÌ, ÏÄÎÁËÏ ÍÏÖÎÏ.
AT> ôÁË ÜÔ É × èÁÊôÅÞ ÍÏÖÎÏ. AT> á ×ÏÔ × éáò - ÎÅÔ :(
íÏÖÎÏ ÔÁË:
#define _bitset(bits)\ ((byte)(\ (bits%010)|\ (bits/010%010)<<1|\ (bits/0100%010)<<2|\ (bits/01000%010)<<3|\ (bits/010000%010)<<4|\ (bits/0100000%010)<<5|\ (bits/01000000%010)<<6|\ (bits/010000000%010)<<7))
#define BIN8(bits) _bitset(0##bits) #define BIN16(bitsH,bitsL) (unsigned(BIN8(bitsL)) + unsigned((BIN8(bitsH)<<8)))
Dimmy.
Reply to
Dimmy Timchenko
Tue Sep 08 2009 07:29, Dimmy Timchenko wrote to Alexander Torres:
AT>> Так эт и в ХайТеч можно. AT>> А вот в ИАР - нет :(
#define _bitset(bits)\ ((unsigned)(\ (bits%010)|\ (bits/010%010)<<1|\ (bits/0100%010)<<2|\ (bits/01000%010)<<3|\ (bits/010000%010)<<4|\ (bits/0100000%010)<<5|\ (bits/01000000%010)<<6|\ (bits/010000000%010)<<7))
#define BIN(bits) _bitset(0##bits)
DT> Можно так: DT> #define _bitset(bits)\ DT> ((byte)(\ DT> (bits%010)|\ DT> (bits/010%010)<<1|\ DT> (bits/0100%010)<<2|\ DT> (bits/01000%010)<<3|\ DT> (bits/010000%010)<<4|\ DT> (bits/0100000%010)<<5|\ DT> (bits/01000000%010)<<6|\ DT> (bits/010000000%010)<<7))
DT> #define BIN8(bits) _bitset(0##bits)
См. выше. У тебя отсутствие unsigned приводит иногда к знаковой лаже.
Reply to
Kirill Frolov
Hello, Dimmy! You wrote to Alexander Torres on Tue, 08 Sep 2009 06:29:42 +0600:
DO>>> ëÓÔÁÔÉ, ÞÔÏ ÍÏÖÎÏ ÐÉÓÁÔØ 0b01010101 ×ÍÅÓÔÏ 85 Ñ ÔÏÖÅ × DO>>> ÄÏËÕÍÅÎÔÁÃÉÉ ÎÅ ÎÁÛÅÌ, ÏÄÎÁËÏ ÍÏÖÎÏ.
DT> íÏÖÎÏ ÔÁË:
DT> #define _bitset(bits)\ DT> ((byte)(\ DT> (bits%010)|\ DT> (bits/010%010)<<1|\ DT> (bits/0100%010)<<2|\ DT> (bits/01000%010)<<3|\ DT> (bits/010000%010)<<4|\ DT> (bits/0100000%010)<<5|\ DT> (bits/01000000%010)<<6|\ DT> (bits/010000000%010)<<7))
DT> #define BIN8(bits) _bitset(0##bits) DT> #define BIN16(bitsH,bitsL) (unsigned(BIN8(bitsL)) + unsigned((BIN8(bitsH)<<8))) þÔÏ-ÔÏ ÔÑÍÕ ÎÅ È×ÁÔÁÅÔ, ËÁË ÉÚ ÜÔÏÇÏ ÐÏÌÕÞÉÔØ ÔÒÅÂÕÅÍÕÀ ËÁÒÔÉÎËÕ? éÌÉ ÔÕÔ ÒÅÞØ Ï ޣÍ-ÔÏ ÄÒÕÇÏÍ?
With best regards, Andrej Arnold
Reply to
Andrej Arnold
Hello Andrej.
Wed Sep 09 2009 14:17, Andrej Arnold wrote to me:
DO>>>> ëÓÔÁÔÉ, ÞÔÏ ÍÏÖÎÏ ÐÉÓÁÔØ 0b01010101 ×ÍÅÓÔÏ 85 Ñ ÔÏÖÅ × DO>>>> ÄÏËÕÍÅÎÔÁÃÉÉ ÎÅ ÎÁÛÅÌ, ÏÄÎÁËÏ ÍÏÖÎÏ.
DT>> íÏÖÎÏ ÔÁË:
DT>> #define _bitset(bits)\ DT>> ((byte)(\ DT>> (bits%010)|\ DT>> (bits/010%010)<<1|\ DT>> (bits/0100%010)<<2|\ DT>> (bits/01000%010)<<3|\ DT>> (bits/010000%010)<<4|\ DT>> (bits/0100000%010)<<5|\ DT>> (bits/01000000%010)<<6|\ DT>> (bits/010000000%010)<<7))
DT>> #define BIN8(bits) _bitset(0##bits) DT>> #define BIN16(bitsH,bitsL) (unsigned(BIN8(bitsL)) DT>> + unsigned((BIN8(bitsH)<<8)))
AA> þÔÏ-ÔÏ ÔÑÍÕ ÎÅ È×ÁÔÁÅÔ, ËÁË ÉÚ ÜÔÏÇÏ ÐÏÌÕÞÉÔØ ÔÒÅÂÕÅÍÕÀ ËÁÒÔÉÎËÕ? AA> éÌÉ ÔÕÔ ÒÅÞØ Ï ޣÍ-ÔÏ ÄÒÕÇÏÍ?
HÁÐÒÉÍÅÒ:
// FOC: force output compare // |0--1-WGM: wave gen mode: 00: normal 01 CTC // || | TCCR0 = BIN8(00000100); // || ^^^-CS: clock source: 001:/1 010:/8 011:/64 100:/256 // 10-COM: comp. out mode, OC0: 00:-- 01:toggle 10:clear 11: set
äÁ, ÎÁÐÏÍÎÉÌÉ: Õ ÍÅÎÑ ÏÐÒÅÄÅÌÅÎÏ
typedef unsigned char byte;
Dimmy.
Reply to
Dimmy Timchenko
Hello Kirill.
Tue Sep 08 2009 17:52, Kirill Frolov wrote to All:
DT>> íÏÖÎÏ ÔÁË: DT>> #define _bitset(bits)\ DT>> ((byte)(\ DT>> (bits%010)|\ DT>> (bits/010%010)<<1|\ DT>> (bits/0100%010)<<2|\ DT>> (bits/01000%010)<<3|\ DT>> (bits/010000%010)<<4|\ DT>> (bits/0100000%010)<<5|\ DT>> (bits/01000000%010)<<6|\ DT>> (bits/010000000%010)<<7))
DT>> #define BIN8(bits) _bitset(0##bits)
KF> óÍ. ×ÙÛÅ. õ ÔÅÂÑ ÏÔÓÕÔÓÔ×ÉÅ unsigned ÐÒÉ×ÏÄÉÔ ÉÎÏÇÄÁ Ë ÚÎÁËÏ×ÏÊ ÌÁÖÅ.
õ ÍÅÎÑ byte ÏÐÒÅÄẠ̊Î ËÁË unsigned char. :)
Dimmy.
Reply to
Dimmy Timchenko
ðÒÉ×ÅÔ, Dimmy !
09 Sep 09 , 15:18 Dimmy Timchenko ÐÉÓÁÌ Ë Andrej Arnold:
AA>> þÔÏ-ÔÏ ÔÑÍÕ ÎÅ È×ÁÔÁÅÔ, ËÁË ÉÚ ÜÔÏÇÏ ÐÏÌÕÞÉÔØ ÔÒÅÂÕÅÍÕÀ ËÁÒÔÉÎËÕ? AA>> éÌÉ ÔÕÔ ÒÅÞØ Ï ޣÍ-ÔÏ ÄÒÕÇÏÍ?
DT> HÁÐÒÉÍÅÒ:
DT> // FOC: force output compare DT> // |0--1-WGM: wave gen mode: 00: normal 01 CTC DT> // || | DT> TCCR0 = BIN8(00000100); DT> // || ^^^-CS: clock source: 001:/1 010:/8 011:/64 DT> 100:/256 DT> // 10-COM: comp. out mode, OC0: 00:-- 01:toggle DT> 10:clear 11: set
TCCR0 = _BV(CS2) | _BV(FOC); //FOC: force output compare //CS2:0=100 clock source: 001:/1 010:/8 011:/64 //COM: comp. out mode, OC0: 00:-- 01:toggle
ÅÝÅ ËÏÒÏÞÅ É ÎÁÇÌÑÄÎÅÅ. :)
. ó Õ×ÁÖÅÎÉÅÍ, HÉËÉÔÁ. icq:240059686, lj-user:nicka_startcev ... ëÁ(ÎÉ)ÂÁÌÌÉÓÔÉÞÅÓËÉÅ ÒÕÎÙ
Reply to
Nickita A Startcev
Hello, Nickita A Startcev! You wrote in conference fido7.ru.embedded to Dimmy Timchenko on Wed, 09 Sep 2009 20:19:26 +0400:
DT>> // FOC: force output compare // DT>> TCCR0 = BIN8(00000100); DT>> // || ^^^-CS: clock source: 001:/1 010:/8 011:/64 DT>> 100:/256 // 10-COM: comp. out mode, OC0: 00:-- DT>> 01:toggle 10:clear 11: set
NAS> TCCR0 = _BV(CS2) | _BV(FOC); NAS> //FOC: force output compare //CS2:0=100 clock source: 001:/1 NAS> 010:/8 011:/64 //COM: comp. out mode, OC0: 00:-- 01:toggle
NAS> еще короче и нагляднее. :)
Hе короче и не нагляднее. Если запись 0b00000100 не вызывает вопросов вообще, важно только само значение. В записи TCCR0 = BIN8(00000100); можно поверить, что макрос раскрывается правильно и тоже обращать внимание только на значение, хотя уже возможны варианты и побочные эффекты, то в записи TCCR0 = _BV(CS2) | _BV(FOC); непонятно что такое и _BV() и CS2 и FOC - нало лезть искать определения всего, чтобы понять какое же число все же попадает в регстр.
dima
formatting link
Reply to
Dmitry Orlov
Hello Nickita.
Wed Sep 09 2009 21:19, Nickita A Startcev wrote to me:
DT>> HÁÐÒÉÍÅÒ:
DT>> // FOC: force output compare DT>> // |0--1-WGM: wave gen mode: 00: normal 01 CTC DT>> // || | DT>> TCCR0 = BIN8(00000100); DT>> // || ^^^-CS: clock source: 001:/1 010:/8 011:/64 DT>> 100:/256 DT>> // 10-COM: comp. out mode, OC0: 00:-- 01:toggle DT>> 10:clear 11: set
NAS> TCCR0 = _BV(CS2) | _BV(FOC); NAS> //FOC: force output compare NAS> //CS2:0=100 clock source: 001:/1 010:/8 011:/64 NAS> //COM: comp. out mode, OC0: 00:-- 01:toggle
NAS> ÅÝÅ ËÏÒÏÞÅ É ÎÁÇÌÑÄÎÅÅ. :)
ñ Ö ÎÅ ÓÐÏÒÀ. :) íÏÖÎÏ É ÔÁË, É ÜÔÁË, É Åݣ ×ÏÔ ÔÁË:
FOC = 1; CS2 = 1;
ðÒÏÓÔÏ ÔÏ×ÁÒÉÝÉ ÖÁÌÏ×ÁÌÉÓØ, ÞÔÏ × IAR-Å ÂÉÔÏ×ÙÈ ËÏÎÓÔÁÎÔ ÎÅÔ. íÎÅ ÔÏÖÅ ÜÔÏ ËÏÇÄÁ-ÔÏ ÎÅ ÐÏÎÒÁ×ÉÌÏÓØ, É, ËÓÔÁÔÉ, ÚÄÅÛÎÉÊ ÎÁÒÏÄ ÐÏÄÓËÁÚÁÌ ÔÏÔ ÔÒÀË Ó ×ÏÓØÍÅÒÉÞÎÙÍÉ ÞÉÓÌÁÍÉ. ðÒÉÄÕÍÁÌ, ×ÉÄÉÍÏ, ÎÁÓÔÏÑÝÉÊ ÍÁÔÅÍÁÔÉË. :)
Dimmy.
Reply to
Dimmy Timchenko
ðÒÉ×ÅÔ, Dmitry !
09 Sep 09 , 23:05 Dmitry Orlov ÐÉÓÁÌ Ë Nickita A Startcev:
DT>>> // FOC: force output compare // DT>>> TCCR0 = BIN8(00000100); DT>>> // || ^^^-CS: clock source: 001:/1 010:/8 DT>>> 011:/64 100:/256 // 10-COM: comp. out mode, OC0: DT>>> 00:-- 01:toggle 10:clear 11: set
NAS>> TCCR0 = _BV(CS2) | _BV(FOC); NAS>> //FOC: force output compare //CS2:0=100 clock source: 001:/1 NAS>> 010:/8 011:/64 //COM: comp. out mode, OC0: 00:-- 01:toggle
NAS>> ÅÝÅ ËÏÒÏÞÅ É ÎÁÇÌÑÄÎÅÅ. :)
DO> HÅ ËÏÒÏÞÅ É ÎÅ ÎÁÇÌÑÄÎÅÅ. åÓÌÉ ÚÁÐÉÓØ 0b00000100 ÎÅ ×ÙÚÙ×ÁÅÔ ×ÏÐÒÏÓÏ× DO> ×ÏÏÂÝÅ,
÷ÙÚÙ×ÁÅÔ. ðÏ ËÁÖÄÏÍÕ ÂÉÔÕ. é ÜÔÏ ÄÁÖÅ × ËÏÍÍÅÎÔÁÒÉÑÈ ÏÔÒÁÖÅÎÏ.
DO> ÔÏ × ÚÁÐÉÓÉ TCCR0 = _BV(CS2) | _BV(FOC); ÎÅÐÏÎÑÔÎÏ ÞÔÏ ÔÁËÏÅ DO> É _BV() É CS2 É FOC - ÎÁÌÏ ÌÅÚÔØ ÉÓËÁÔØ ÏÐÒÅÄÅÌÅÎÉÑ ×ÓÅÇÏ, ÞÔÏÂÙ DO> ÐÏÎÑÔØ ËÁËÏÅ ÖÅ ÞÉÓÌÏ ×ÓÅ ÖÅ ÐÏÐÁÄÁÅÔ × ÒÅÇÓÔÒ.
á ÏÎÏ ÎÁÍ ÎÁÄÏ, ÚÎÁÔØ, ËÁËÏÅ ÉÍÅÎÎÏ ÞÉÓÌÏ ÐÏÐÁÌÏ? ËÓÔÁÔÉ, 0b00000100 ÔÅÂÅ ÔÏÖÅ ÐÒÉÄÅÔÓÑ ÐÅÒÅ×ÏÄÉÔØ ÉÚ Ä×ÏÉÞÎÏÇÏ × ÛÅÓÔÎÁÄÃÁÔÅÒÉÞÎÏÅ, ÉÔÏ ÅÓÔØ, ÔÏÖÅ ÎÅÐÏÎÑÔÎÏ, ËÁËÏÅ ÞÉÓÌÏ ÐÏÐÁÌÏ.
. ó Õ×ÁÖÅÎÉÅÍ, HÉËÉÔÁ. icq:240059686, lj-user:nicka_startcev ... Ogre-ÓÓÉ×ÎÏÓÔØ
Reply to
Nickita A Startcev
Hello, Dimmy! You wrote to Nickita A Startcev on Thu, 10 Sep 2009 04:00:17 +0400:
DT> ðÒÏÓÔÏ ÔÏ×ÁÒÉÝÉ ÖÁÌÏ×ÁÌÉÓØ, ÞÔÏ × IAR-Å ÂÉÔÏ×ÙÈ ËÏÎÓÔÁÎÔ ÎÅÔ.
þÔÏÂ ÜÔÏ ÂÙÌÏ ÐÏÓÌÅÄÎÅÅ ÇÏÒÅ × éáòÅ....
With best regards, Alexander Torres. 2:461/28
formatting link
OR
formatting link

Reply to
Alexander Torres
Hello, Nickita A Startcev! You wrote in conference fido7.ru.embedded to Dmitry Orlov on Thu, 10 Sep 2009 07:36:50 +0400:
NAS>>> TCCR0 = _BV(CS2) | _BV(FOC); NAS>>> //FOC: force output compare //CS2:0=100 clock source: 001:/1 NAS>>> 010:/8 011:/64 //COM: comp. out mode, OC0: 00:-- 01:toggle
NAS>>> еще короче и нагляднее. :)
DO>> Hе короче и не нагляднее. Если запись 0b00000100 не вызывает DO>> вопросов вообще,
NAS> Вызывает. По каждому биту. И это даже в комментариях отражено.
Вызывает вопросы само значение, а что попало в регистр - нет. Что написано, то в точности и попало. Если конечно компилятор не глучит, или не какие-то побочные эффекты проявляются.
DO>> то в записи TCCR0 = _BV(CS2) | _BV(FOC); непонятно что такое и DO>> _BV() и CS2 и FOC - нало лезть искать определения всего, чтобы DO>> понять какое же число все же попадает в регстр.
NAS> А оно нам надо, знать, какое именно число попало?
Бывает надо, когда работает не так, как ожидалось.
NAS> кстати, 0b00000100 тебе тоже придется переводить из двоичного в NAS> шестнадцатеричное,
Зачем??? Было бы надо, я бы hex и писал, как и пишу иногда. Правда чаще или более привычное десятичное число, если это величина, или двоичное, если это битовая маска.
NAS> ито есть, тоже непонятно, какое число попало.
Это же не число, это набор битов.
dima
formatting link
Reply to
Dmitry Orlov

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.