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

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

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

Ответ
 
Опции темы Опции просмотра
Старый 03.11.2018, 11:39   #126
DimaS
Senior Member
 
Регистрация: 05.04.2008
Адрес: Israel
Возраст: 47
Сообщений: 1,788
Вес репутации: 2423/86
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
Возраст: 33
Сообщений: 2,297
Вес репутации: 4352/94
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
Возраст: 47
Сообщений: 1,788
Вес репутации: 2423/86
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
Возраст: 33
Сообщений: 2,297
Вес репутации: 4352/94
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
Возраст: 47
Сообщений: 1,788
Вес репутации: 2423/86
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
Сообщений: 184
Вес репутации: 1617/38
siarzhuk has a brilliant futuresiarzhuk has a brilliant futuresiarzhuk has a brilliant futuresiarzhuk has a brilliant futuresiarzhuk has a brilliant futuresiarzhuk has a brilliant futuresiarzhuk has a brilliant futuresiarzhuk has a brilliant futuresiarzhuk has a brilliant futuresiarzhuk has a brilliant futuresiarzhuk has a brilliant future
По умолчанию 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
Возраст: 47
Сообщений: 1,788
Вес репутации: 2423/86
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, время: 00:16.


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