Форум Микро-Чип
Поиск и заказ электронных компонентов
 

Вернуться   Форум Микро-Чип > Вопросы начинающих

Вопросы начинающих Прежде чем задать вопрос, стоит воспользоваться поиском

Ответ
 
Опции темы Опции просмотра
Старый 04.10.2008, 00:06   #26
vitalka
Super Moderator
 
Аватар для vitalka
 
Регистрация: 19.03.2007
Адрес: Львов
Возраст: 45
Сообщений: 3,334
Вес репутации: 2341/106
vitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond repute
По умолчанию Ответ: Итак, результат. Поправьте, если бред...

Цитата:
Сообщение от majorPAE Посмотреть сообщение
Ну когда это для ROM, то вроде понятно. Забитая строка будет лежать по определенному адресу. А вот указатель на строку из RAM будет разным. Какой смысл в этом квалификаторе? Причем, и в доке по НТ так же объявлять требуют...
как уже писали выше, в НТ const это и есть rom
а тут так:
Код:
void func(const unsigned char k)
{
    unsigned char m;
    
    m = k;   
    m++;     <-- разрешено
    k++;      <-- не разрешено, компилятор будет ругаться
}

void main (void)
{
    unsigned char i;

    i = 10;
    func (i);
}
vitalka вне форума   Ответить с цитированием
Старый 04.10.2008, 00:13   #27
majorPAE
Super Moderator
 
Аватар для majorPAE
 
Регистрация: 26.02.2007
Возраст: 58
Сообщений: 2,221
Вес репутации: 2214/94
majorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond repute
Отправить сообщение для majorPAE с помощью ICQ Отправить сообщение для majorPAE с помощью Skype™
По умолчанию Ответ: Итак, результат. Поправьте, если бред...

Т.е. имеется ввиду, что не будет модификации указателя в процессе выполнения функции? Че то я опять запутываюсь...
Вот сама работающая функция:
Код:
void putstr(const unsigned char *s, unsigned char X, unsigned char Y)
{
     SetXY(X,Y);
    while(*s) putchar(*s++);                // Points to one ASCII to be written one at a time.
}    //    end putstr
Она практически аналогична библиотечной putsUSART... И противоречит тому примеру, что ты привел. Или для указателей другие "правила игры"?
__________________
ЗАКОH ТРУДHОСТЕЙ БИЛЛИHГСА: Большинство тpyдностей пpоисходит оттого, что мы слишком быстpо говоpим ДА и недостаточно быстpо - НЕТ.(с)
"Очередной шаг вперед, как правило, результат хорошего пинка в зад!"(С)
majorPAE вне форума   Ответить с цитированием
Старый 04.10.2008, 00:23   #28
vitalka
Super Moderator
 
Аватар для vitalka
 
Регистрация: 19.03.2007
Адрес: Львов
Возраст: 45
Сообщений: 3,334
Вес репутации: 2341/106
vitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond repute
По умолчанию Ответ: Итак, результат. Поправьте, если бред...

Цитата:
Сообщение от majorPAE Посмотреть сообщение
Т.е. имеется ввиду, что не будет модификации указателя в процессе выполнения функции? Че то я опять запутываюсь...
Вот сама работающая функция:
Код:
void putstr(const unsigned char *s, unsigned char X, unsigned char Y)
{
     SetXY(X,Y);
    while(*s) putchar(*s++);                // Points to one ASCII to be written one at a time.
}    //    end putstr
Она практически аналогична библиотечной putsUSART... И противоречит тому примеру, что ты привел. Или для указателей другие "правила игры"?
может несколько ненаглядно я привел
вот более правильный пример:
Код:
void func (const unsigned char * m)
{
    (*m)++;   <-- не разрешено, компилятор будет ругаться
}

void main (void)
{
    unsigned char i;
    i = 10;
    func (&i);
}
т.е. такая себе защита от несанкционированного изменения
и исходная і (main) не портится
а сам указатель менять можно
vitalka вне форума   Ответить с цитированием
Старый 04.10.2008, 00:27   #29
majorPAE
Super Moderator
 
Аватар для majorPAE
 
Регистрация: 26.02.2007
Возраст: 58
Сообщений: 2,221
Вес репутации: 2214/94
majorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond repute
Отправить сообщение для majorPAE с помощью ICQ Отправить сообщение для majorPAE с помощью Skype™
По умолчанию Ответ: Итак, результат. Поправьте, если бред...

Если не утомил еще, то попутный вопрос есть.
ЕСли догадался, то мучаю микрочиповский USB HID на 18F4550.
Там при описании дескрипторов используется следующая конструкция:
Код:
rom struct{byte bLength;byte bDscType;word string[12];}sd003={
sizeof(sd003),DSC_STR,
'S','e','r','N','0','0','0','0','0','0','0','1'};
В данном случае, серийный номер. Для чего он описывается именно так, не знаешь? Ведь, по сути, это та же самая строка в памяти, только в Unicod. Есть желание иметь возможность модифицировать ее в процессе работы программы, вот только как, ничего не придумывается...
__________________
ЗАКОH ТРУДHОСТЕЙ БИЛЛИHГСА: Большинство тpyдностей пpоисходит оттого, что мы слишком быстpо говоpим ДА и недостаточно быстpо - НЕТ.(с)
"Очередной шаг вперед, как правило, результат хорошего пинка в зад!"(С)
majorPAE вне форума   Ответить с цитированием
Старый 04.10.2008, 00:32   #30
IceS
Super Moderator
 
Регистрация: 01.03.2007
Адрес: St. Petersburg
Возраст: 41
Сообщений: 3,246
Вес репутации: 3684/118
IceS has a reputation beyond reputeIceS has a reputation beyond reputeIceS has a reputation beyond reputeIceS has a reputation beyond reputeIceS has a reputation beyond reputeIceS has a reputation beyond reputeIceS has a reputation beyond reputeIceS has a reputation beyond reputeIceS has a reputation beyond reputeIceS has a reputation beyond reputeIceS has a reputation beyond repute
Отправить сообщение для IceS с помощью ICQ
По умолчанию Ответ: Итак, результат. Поправьте, если бред...

Цитата:
Сообщение от majorPAE Посмотреть сообщение
Есть желание иметь возможность модифицировать ее в процессе работы программы, вот только как, ничего не придумывается...
Хранить в EEPROM не пойдет?
IceS вне форума   Ответить с цитированием
Старый 04.10.2008, 00:40   #31
majorPAE
Super Moderator
 
Аватар для majorPAE
 
Регистрация: 26.02.2007
Возраст: 58
Сообщений: 2,221
Вес репутации: 2214/94
majorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond repute
Отправить сообщение для majorPAE с помощью ICQ Отправить сообщение для majorPAE с помощью Skype™
Thumbs up Ответ: Итак, результат. Поправьте, если бред...

Цитата:
Сообщение от IceS Посмотреть сообщение
Хранить в EEPROM не пойдет?
Это вааще идеальный вариант был бы , хотя в 18-х EEPROM от FLESH-а ИМХО только ресурсом записи отличается. А как я к ней обращаться буду? Или ты имеешь ввиду создать копию структуры в EEPROM?
Опять же, получается нужно копию такой структуры в RAM создавать...
__________________
ЗАКОH ТРУДHОСТЕЙ БИЛЛИHГСА: Большинство тpyдностей пpоисходит оттого, что мы слишком быстpо говоpим ДА и недостаточно быстpо - НЕТ.(с)
"Очередной шаг вперед, как правило, результат хорошего пинка в зад!"(С)
majorPAE вне форума   Ответить с цитированием
Старый 04.10.2008, 00:41   #32
vitalka
Super Moderator
 
Аватар для vitalka
 
Регистрация: 19.03.2007
Адрес: Львов
Возраст: 45
Сообщений: 3,334
Вес репутации: 2341/106
vitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond repute
По умолчанию Ответ: Итак, результат. Поправьте, если бред...

Цитата:
Сообщение от IceS Посмотреть сообщение
Хранить в EEPROM не пойдет?
+1

Цитата:
Сообщение от majorPAE Посмотреть сообщение
Если не утомил еще, то попутный вопрос есть.
ЕСли догадался, то мучаю микрочиповский USB HID на 18F4550.
Там при описании дескрипторов используется следующая конструкция:
Код:
rom struct{byte bLength;byte bDscType;word string[12];}sd003={
sizeof(sd003),DSC_STR,
'S','e','r','N','0','0','0','0','0','0','0','1'};
В данном случае, серийный номер. Для чего он описывается именно так, не знаешь? Ведь, по сути, это та же самая строка в памяти, только в Unicod. Есть желание иметь возможность модифицировать ее в процессе работы программы, вот только как, ничего не придумывается...
по идее, по-другому не разместится в памяти по 2 байта на букву
vitalka вне форума   Ответить с цитированием
Старый 04.10.2008, 00:59   #33
vitalka
Super Moderator
 
Аватар для vitalka
 
Регистрация: 19.03.2007
Адрес: Львов
Возраст: 45
Сообщений: 3,334
Вес репутации: 2341/106
vitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond repute
По умолчанию Ответ: Итак, результат. Поправьте, если бред...

Цитата:
Сообщение от majorPAE Посмотреть сообщение
Это вааще идеальный вариант был бы , хотя в 18-х EEPROM от FLESH-а ИМХО только ресурсом записи отличается. А как я к ней обращаться буду? Или ты имеешь ввиду создать копию структуры в EEPROM?
Опять же, получается нужно копию такой структуры в RAM создавать...
с обращением без переделки структуры, имхо, тяжеловато будет
наверное, в ram переписывать придется
vitalka вне форума   Ответить с цитированием
Старый 04.10.2008, 01:09   #34
IceS
Super Moderator
 
Регистрация: 01.03.2007
Адрес: St. Petersburg
Возраст: 41
Сообщений: 3,246
Вес репутации: 3684/118
IceS has a reputation beyond reputeIceS has a reputation beyond reputeIceS has a reputation beyond reputeIceS has a reputation beyond reputeIceS has a reputation beyond reputeIceS has a reputation beyond reputeIceS has a reputation beyond reputeIceS has a reputation beyond reputeIceS has a reputation beyond reputeIceS has a reputation beyond reputeIceS has a reputation beyond repute
Отправить сообщение для IceS с помощью ICQ
По умолчанию Ответ: Итак, результат. Поправьте, если бред...

Цитата:
Сообщение от vitalka Посмотреть сообщение
с обращением без переделки структуры, имхо, тяжеловато будет
наверное, в ram переписывать придется
А зачем в РАМ переписывать? или я что-то не понимаю или одно из двух .
Прямо из ЕЕПРОМа читать и отправлять куда надо, ну а если нужно будет то можно легко в ЕЕПРОме поменять.
IceS вне форума   Ответить с цитированием
Старый 04.10.2008, 01:10   #35
majorPAE
Super Moderator
 
Аватар для majorPAE
 
Регистрация: 26.02.2007
Возраст: 58
Сообщений: 2,221
Вес репутации: 2214/94
majorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond repute
Отправить сообщение для majorPAE с помощью ICQ Отправить сообщение для majorPAE с помощью Skype™
По умолчанию Ответ: Итак, результат. Поправьте, если бред...

Цитата:
Сообщение от IceS Посмотреть сообщение
А зачем в РАМ переписывать? или я что-то не понимаю или одно из двух .
Прямо из ЕЕПРОМа читать и отправлять куда надо, ну а если нужно будет то можно легко в ЕЕПРОме поменять.
Ты смотрел USB HID и как там предаются дескрипторы?
__________________
ЗАКОH ТРУДHОСТЕЙ БИЛЛИHГСА: Большинство тpyдностей пpоисходит оттого, что мы слишком быстpо говоpим ДА и недостаточно быстpо - НЕТ.(с)
"Очередной шаг вперед, как правило, результат хорошего пинка в зад!"(С)
majorPAE вне форума   Ответить с цитированием
Старый 04.10.2008, 01:49   #36
IceS
Super Moderator
 
Регистрация: 01.03.2007
Адрес: St. Petersburg
Возраст: 41
Сообщений: 3,246
Вес репутации: 3684/118
IceS has a reputation beyond reputeIceS has a reputation beyond reputeIceS has a reputation beyond reputeIceS has a reputation beyond reputeIceS has a reputation beyond reputeIceS has a reputation beyond reputeIceS has a reputation beyond reputeIceS has a reputation beyond reputeIceS has a reputation beyond reputeIceS has a reputation beyond reputeIceS has a reputation beyond repute
Отправить сообщение для IceS с помощью ICQ
По умолчанию Ответ: Итак, результат. Поправьте, если бред...

Цитата:
Сообщение от majorPAE Посмотреть сообщение
Ты смотрел USB HID и как там предаются дескрипторы?
Нет, но я так понимаю что вы исходник копаете, дык все можно переделать на свой вкус "или нет?" (С)
IceS вне форума   Ответить с цитированием
Старый 04.10.2008, 07:14   #37
majorPAE
Super Moderator
 
Аватар для majorPAE
 
Регистрация: 26.02.2007
Возраст: 58
Сообщений: 2,221
Вес репутации: 2214/94
majorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond repute
Отправить сообщение для majorPAE с помощью ICQ Отправить сообщение для majorPAE с помощью Skype™
По умолчанию Ответ: Итак, результат. Поправьте, если бред...

Цитата:
Сообщение от IceS Посмотреть сообщение
Нет, но я так понимаю что вы исходник копаете, дык все можно переделать на свой вкус "или нет?" (С)
"В принципе, сделать можно все! Но трудности на пути реализации зачастую превышают наши возможности..."(С)
А если по делу, то почему-то сделано именно так. Но, пока, не очень понятно, почему...
__________________
ЗАКОH ТРУДHОСТЕЙ БИЛЛИHГСА: Большинство тpyдностей пpоисходит оттого, что мы слишком быстpо говоpим ДА и недостаточно быстpо - НЕТ.(с)
"Очередной шаг вперед, как правило, результат хорошего пинка в зад!"(С)
majorPAE вне форума   Ответить с цитированием
Старый 01.12.2008, 11:11   #38
Romantic
Senior Member
 
Аватар для Romantic
 
Регистрация: 13.07.2007
Адрес: Ленинград
Возраст: 35
Сообщений: 2,096
Вес репутации: 3340/102
Romantic has a reputation beyond reputeRomantic has a reputation beyond reputeRomantic has a reputation beyond reputeRomantic has a reputation beyond reputeRomantic has a reputation beyond reputeRomantic has a reputation beyond reputeRomantic has a reputation beyond reputeRomantic has a reputation beyond reputeRomantic has a reputation beyond reputeRomantic has a reputation beyond reputeRomantic has a reputation beyond repute
По умолчанию Ответ: Итак, результат. Поправьте, если бред...

Цитата:
Сообщение от majorPAE Посмотреть сообщение
Там при описании дескрипторов используется следующая конструкция:
Код:
rom struct{byte bLength;byte bDscType;word string[12];}sd003={
sizeof(sd003),DSC_STR,
'S','e','r','N','0','0','0','0','0','0','0','1'};
В данном случае, серийный номер. Для чего он описывается именно так, не знаешь? Ведь, по сути, это та же самая строка в памяти, только в Unicod. Есть желание иметь возможность модифицировать ее в процессе работы программы, вот только как, ничего не придумывается...
Такая запись, на мой взгляд, применяется для экономии оперативы. Как я понимаю, USB-драйвер жрёт прилично ресурсов камня. Вот и засовываются все константные данные в программную память. При желании это можно хранить где угодно, даже особых переделок не понадобится. С EEPROM, как советовали товарищи, работать можно и на лету, запись/чтение выполняются довольно быстро. Да и в памяти программ можно редактировать данные.
Romantic вне форума   Ответить с цитированием
Ответ

Метки
float2ascii, int2ascii, mcc18, rom, sprintf, числов в строку


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
проблемка с PIC16F628A bereg_ok Продукция MICROCHIP 72 07.09.2007 11:00


Часовой пояс GMT +3, время: 16:53.


Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd. Перевод: zCarot