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

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

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

Ответ
 
Опции темы Опции просмотра
Старый 03.11.2018, 11:39   #126
DimaS
Senior Member
 
Регистрация: 05.04.2008
Адрес: Israel
Возраст: 46
Сообщений: 1,676
Вес репутации: 2423/83
DimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond repute
По умолчанию Re: Нужен опыт по началу программированию на С.

Цитата:
Сообщение от besogon Посмотреть сообщение
DimaS
у Вашего друга есть возможность использовать gcc для работы с avr?

Спрошу.


Но меня больше интересует ответ на мою проблему, с перестановкой байт и свопом FF<>00, чем его проблема с маской.


Я, видимо, зря задал два разных вопроса подряд, и они у многих перемешались между собой.
DimaS вне форума   Ответить с цитированием
Старый 03.11.2018, 12:34   #127
besogon
Senior Member
 
Регистрация: 12.07.2012
Возраст: 32
Сообщений: 2,167
Вес репутации: 4017/88
besogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond repute
По умолчанию Re: Нужен опыт по началу программированию на С.

DimaS
у меня есть gcc - я могу собрать и проверить, что не так с кодом, который у Вас.
besogon вне форума   Ответить с цитированием
Старый 03.11.2018, 12:47   #128
DimaS
Senior Member
 
Регистрация: 05.04.2008
Адрес: Israel
Возраст: 46
Сообщений: 1,676
Вес репутации: 2423/83
DimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond repute
По умолчанию Re: Нужен опыт по началу программированию на С.

Цитата:
Сообщение от besogon Посмотреть сообщение
DimaS
у меня есть gcc - я могу собрать и проверить, что не так с кодом, который у Вас.

Было б интереснее в ВизуалСтудио, на С# или С++.
DimaS вне форума   Ответить с цитированием
Старый 03.11.2018, 12:57   #129
besogon
Senior Member
 
Регистрация: 12.07.2012
Возраст: 32
Сообщений: 2,167
Вес репутации: 4017/88
besogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond repute
По умолчанию Re: Нужен опыт по началу программированию на С.

DimaS
gcc компилирует коды на С++.

ВизуалСтудио - увы, я не работал с решениями microsoft и не готов разгребать связанные с ними проблемы: не вижу перспектив использования подобных знаний.
besogon вне форума   Ответить с цитированием
Старый 03.11.2018, 14:40   #130
DimaS
Senior Member
 
Регистрация: 05.04.2008
Адрес: Israel
Возраст: 46
Сообщений: 1,676
Вес репутации: 2423/83
DimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond repute
По умолчанию Re: Нужен опыт по началу программированию на С.

Цитата:
Сообщение от besogon Посмотреть сообщение
DimaS
gcc компилирует коды на С++.

ВизуалСтудио - увы, я не работал с решениями microsoft и не готов разгребать связанные с ними проблемы: не вижу перспектив использования подобных знаний.

Ну можно не Вижуал (я тоже с ним не работаю, а то бы сам давно попробовал), а любой другой компилятор, кроме Билдера, можно и GCC.


Вопрос только - а что там смотреть? Глюки возникают очень интересным образом - совершенно не регулярно.
Я для проверки кроме того что написано выше, делал и обратную симметричную операцию, и сравнивал исходный файл с результирующим.
Глюки начинались с где-то сотни байт от начала, по одному не правильному байту, и шли с не одинаковыми интервалами - могло через 15-18 байт, могло через 40, а могло и через 1000.

На блок данных в 12-14 килобайт, было 15-20 глюков.


Когда для перестановки байт в слове, и для свопа ff<>00 сделали два отдельных цикла - глюки исчезли.
Т.е. решение есть, но не понятна причина.
DimaS вне форума   Ответить с цитированием
Старый 03.11.2018, 17:52   #131
siarzhuk
Senior Member
 
Аватар для siarzhuk
 
Регистрация: 08.11.2014
Возраст: 49
Сообщений: 167
Вес репутации: 1161/31
siarzhuk has much to be proud ofsiarzhuk has much to be proud ofsiarzhuk has much to be proud ofsiarzhuk has much to be proud ofsiarzhuk has much to be proud ofsiarzhuk has much to be proud ofsiarzhuk has much to be proud ofsiarzhuk has much to be proud ofsiarzhuk has much to be proud of
По умолчанию Re: Нужен опыт по началу программированию на С.

Цитата:
Сообщение от DimaS Посмотреть сообщение
Вопрос только - а что там смотреть?
В отладчике есть возможность ставить точки прерывания на запись данных по адресу с возбуждением по условию? Если да - то пустите на вход алгоритма константную последовательность байтов и настройте прерывание на несовпадение записываемых дaнных с этой последовательностью - возможно удастся "схватить за руку" непосредственно в момент порчи данных.

Я бы сказал по симптомам - либо другой поток по не своим данным постреливает, либо SwapPattern индекс за пределами исходного массива выдаёт и рядом лежащая с массивом переменная иногда меняется независимо от рассматриваемого алгоритма. Или асинхронный приём данных "наступает на хвост" ещё обрабатываемому предыдущему пакету - а так сократили первый цикл - он и успевает "перепрятать" данные в другой половине.


PS: Ну и с вашего позволения встряну со своим вариантом - уж очень люблю по-военному прямолинейные свитчи.

Код:
for (i = 0; i < 8; i++)
    switch (unsigned __int8 b = inword[0].bt[SwapPattern[i]]) {
    case 0x00:
    case 0xFF:
       b = ~b;
       // no break;
    default:
       inword[1].bt[i] = b; 
       break;
    }
siarzhuk вне форума   Ответить с цитированием
Старый 03.11.2018, 21:56   #132
DimaS
Senior Member
 
Регистрация: 05.04.2008
Адрес: Israel
Возраст: 46
Сообщений: 1,676
Вес репутации: 2423/83
DimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond repute
По умолчанию Re: Нужен опыт по началу программированию на С.

Цитата:
Сообщение от siarzhuk Посмотреть сообщение
Я бы сказал по симптомам - либо другой поток по не своим данным постреливает, либо SwapPattern индекс за пределами исходного массива выдаёт и рядом лежащая с массивом переменная иногда меняется независимо от рассматриваемого алгоритма.

Других потоков в программе нет, цикл идет от 0 до 7, массив SwapPattern - 8 элементов, откуда там взяться выходу за массив?
Ипочему оно прекрасно работает при двух отдельных циклах - один для свопа байт, второй для свопа ff<>00 ?

Цитата:




Или асинхронный приём данных "наступает на хвост" ещё обрабатываемому предыдущему пакету - а так сократили первый цикл - он и успевает "перепрятать" данные в другой половине.
Там нет асинхронного приема, данные берутся из относительно большого (три сотен килобайт) массива в памяти и в него-же и складываются.
DimaS вне форума   Ответить с цитированием
Ответ


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

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Электропривод NSS Источники питания и силовая электроника 32 29.01.2012 14:17
MAX232 и USART, отсутствует сигнал на выходе. EviL_LaugH Общетехнические вопросы 15 31.01.2011 00:40
Проблема с прерыванием PIC 16F877A . chiraevevgenii Вопросы начинающих 8 13.01.2011 20:13
проблемка с PIC16F628A bereg_ok Продукция MICROCHIP 72 07.09.2007 11:00


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


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