Помогите вывести значение регистра в монитор порта.

b707
Offline
Зарегистрирован: 26.05.2017

Ну надо же...

Discover0708
Offline
Зарегистрирован: 20.09.2020

b707 пишет:

Discover0708 пишет:

Плохо! Прошивка закрыта 7 байтным паролем, Я надеялся, что он открыт. Его даже не стереть! либо перебор, либо в помойку.
На Habr.ru есть статья, как человек перебирал пароль с помощью отладочной платы, используя в расчете время отрицательного ответа от мк, в случае не совпадения пароля.

вы ничего не путаете? Кто-то пытался подобрать 7-мибайтный пароль? вы представляете. сколько это вариантов?

Может 7ми битный?


Может он конечно что-то не договаривает, но например motorola HC08 имеет подобную защиту в виде 8 байтного , так называемого SS пароля. ETL его подбирает, ну максисмум три минуты...
если Вам интересно вот статья  https://habr.com/ru/post/469085/

Скажите, пожалуйста, почему не работает процесс сложения в приведенном мной коде, с Вашими поправками. Я компилирую его в среде ардуино. может она не понимает некоторых обособлений?
Вы же наверное, пишите в другой среде.?

Discover0708
Offline
Зарегистрирован: 20.09.2020

andriano пишет:

Нет, речь шла именно о 7-байтном. Идея как раз в том, чтобы подбирать байт за байтом (по одному). Т.е. вариантов всего 256*7=1792.


А разве, в абсолютном понимании, не 2^(7*8)?

upd: Если байт за байтом, то да действительно 256*7=1792.

b707
Offline
Зарегистрирован: 26.05.2017

Discover0708 пишет:

Скажите, пожалуйста, почему не работает процесс сложения в приведенном мной коде,

в чем выражается, что "процесс сложения не работает"?

Например, если результат работы моего и вашего кода отличается - приведите исходные данные и результат в обоих случаях.

Discover0708
Offline
Зарегистрирован: 20.09.2020

b707 пишет:

Discover0708 пишет:

Скажите, пожалуйста, почему не работает процесс сложения в приведенном мной коде,

в чем выражается, что "процесс сложения не работает"?

Например, если результат работы моего и вашего кода отличается - приведите исходные данные и результат в обоих случаях.

Я без претензий к Вам. Просто спрашиваю.     

Вот так работал мой старый с поправкой  от sadman41: 1A,1B,0C,0D,1E,1F.
С Вашим работает вот так: 10,10,00,00,10,10.
Нет пересчета в младшем ниббле.

b707
Offline
Зарегистрирован: 26.05.2017

проверяю

uint8_t a=0, c =0, b=0;

for (c =0; c<4;c++) {
 if (c >1) a = (a++) | 0x10;
 else a = (a++) & 0x0f;
 printf("0x%02x\n",a);

} 

результат

0x01
0x02
0x13
0x14

 

покажите ваш код целиком

Discover0708
Offline
Зарегистрирован: 20.09.2020

Вот
 


uint8_t a=0x00,b=1, c=0;
bool one=true,two=false;
void setup() {
  // put your setup code here, to run once:
Serial.begin(9600);
}

void loop() {
 for(c=0;c<4;c++){
 if(a<0x10){Serial.print("0");Serial.println(a,HEX);}
 else{Serial.println(a,HEX);}
 if (c > 1) a=(a++) | 0x10; 
else a= (a++) & 0x0f;

 }
} 

 

b707
Offline
Зарегистрирован: 26.05.2017

а как а и с описаны?

Discover0708
Offline
Зарегистрирован: 20.09.2020

приложил полностью.

b707
Offline
Зарегистрирован: 26.05.2017

не вижу разницы со своим кодом.

Конкретно ваш код попробую вечером, на работе у меня ардуины нет.

 

Discover0708
Offline
Зарегистрирован: 20.09.2020

b707 пишет:

не вижу разницы со своим кодом.

Конкретно ваш код попробую вечером, на работе у меня ардуины нет.

 


Даже вот так не работает... Наверное, среда ардуины не понимает такой многозадачности..))
 

void loop() {
 for (c =0; c<4;c++) {
 if (c >1) a = (a++) | 0x10;
 else a = (a++) & 0x0f;
 Serial.println(a,HEX);
} 
} 

 

b707
Offline
Зарегистрирован: 26.05.2017

вот такой код загрузите в дуину и выложите результат.

ничего не добавляйте

void setup() {
 Serial.begin(9600);
 uint8_t a =0;
 for (uint8_t c =0; c<4;c++) {
  if (c >1) a = (a++) | 0x10;
  else a = (a++) & 0x0f;
 Serial.println(a,HEX);
} 
} 
void loop() {}

 

 

Discover0708
Offline
Зарегистрирован: 20.09.2020

Вот

10
10
0
0
10
10
0
0
10
10
0
0
10
10
0
0
10
10
0
0
10
10

 

b707
Offline
Зарегистрирован: 26.05.2017

судя по выводу, код не точно мой.

Посмотрите. я его подредактировал.

Скопируйте его один в один и запустите

Discover0708
Offline
Зарегистрирован: 20.09.2020

b707 пишет:

судя по выводу, код не точно мой.

Посмотрите. я его подредактировал.

Скопируйте его один в один и запустите


выборка была взята произвольно из посылки...

код не компилируется. поле loop пустое.
 

b707
Offline
Зарегистрирован: 26.05.2017

Discover0708 пишет:

код не компилируется. поле loop пустое.
 

исправил

Discover0708 пишет:

выборка была взята произвольно из посылки...

какой, нафик, посылки?!

Поставьте a =0; и не выдумывайте.

Когда это заработает - тогда будете к посылкам применять.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

void loop() {}

Discover0708
Offline
Зарегистрирован: 20.09.2020

b707 пишет:

Discover0708 пишет:

код не компилируется. поле loop пустое.
 

исправил

Discover0708 пишет:

выборка была взята произвольно из посылки...

какой, нафик, посылки?!

Поставьте a =0; и не выдумывайте.

Когда это заработает - тогда будете к посылкам применять.


Тихо...тихо... я имел ввиду что выборка взята не с самого первого символа из порта а произвольно с  середины, но в начале все тоже самое.

Код перезалейте, я беру его из 112 сообщения

b707
Offline
Зарегистрирован: 26.05.2017

Discover0708 пишет:

Код перезалейте, я беру его из 112 сообщения

Дискавер, судя по всему, придется вам подождать, пока я домой приду.

Discover0708
Offline
Зарегистрирован: 20.09.2020

ua6em пишет:

void loop() {}


сделано.
ответ

0
0
10
10

 

Discover0708
Offline
Зарегистрирован: 20.09.2020

b707 пишет:

Discover0708 пишет:

Код перезалейте, я беру его из 112 сообщения

Дискавер, судя по всему, придется вам подождать, пока я домой приду.


Ради БОГА! Трудитесь на здоровье.! )
Все таки не аппарат ИВЛ собираю...

sadman41
Offline
Зарегистрирован: 19.10.2016

Мы с Семеном вам три способа, промежду прочим, дали - все три рабочие. 

b707
Offline
Зарегистрирован: 26.05.2017

sadman41 пишет:

Мы с Семеном вам три способа, промежду прочим, дали - все три рабочие. 

протестую :) мой тоже рабочий. подтверждение в #106

тов Дискавер просто что-то мутит с начальными данными, потому у него и не работает.

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

не надо адманывать, я нерабочий дал.  

Discover0708
Offline
Зарегистрирован: 20.09.2020

b707 пишет:

sadman41 пишет:

Мы с Семеном вам три способа, промежду прочим, дали - все три рабочие. 

протестую :) мой тоже рабочий. подтверждение в #106

тов Дискавер просто что-то мутит с начальными данными, потому у него и не работает.


Думаю ардуина не понимает  такой крутой подачи...a=(a++) | 0x10
стопор где-то тут.
Товарищи, проверьте у кого есть возможность на ардуино-среде код.
нет тут никакого замута. У меня среда 1.8.15

sadman41
Offline
Зарегистрирован: 19.10.2016

DetSimen пишет:

не надо адманывать, я нерабочий дал.  

Ну ничего, я ж подправил.

Discover0708
Offline
Зарегистрирован: 20.09.2020

sadman41 пишет:

Мы с Семеном вам три способа, промежду прочим, дали - все три рабочие. 


Спасибо Вам огромное. Я их проанализирую на будущее, но признаться код b707 выглядит лаконичнее.
Важно понять почему не работает.

sadman41
Offline
Зарегистрирован: 19.10.2016

Discover0708 пишет:

Думаю ардуина не понимает  такой крутой подачи...a=(a++) | 0x10


Лично я избегаю инкремента и декремента в сложных выражениях. Ардуины китайские и никогда не знаешь - слева направо они считают или наоборот.
Говорят, что версии для арабов справа налево...

b707
Offline
Зарегистрирован: 26.05.2017

sadman41 пишет:
Лично я избегаю инкремента и декремента в сложных выражениях. Ардуины китайские и никогда не знаешь - слева направо они считают или наоборот. Говорят, что версии для арабов справа налево...

Гриша, если это не стеб - там же скобки :)))

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

Писать надо всё таки по человечески )))
 

void setup() {
  Serial.begin(9600);
  uint8_t a = 0;
  for (uint8_t c = 0; c < 4; c++) {
    a++;
    if (c > 1){ a = a | 0x10;}
    else { a = a & 0x0f;}
    Serial.println(a, HEX);
  }
}
void loop() {}
1
2
13
14

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

sadman41 пишет:
Говорят, что версии для арабов справа налево...
Для евреев, на самом деле. Для арабов там другое отличие - все числовые константы (включая шестнадцатеричные) только арабскими цифрами.

b707
Offline
Зарегистрирован: 26.05.2017

ua6em пишет:

Писать надо всё таки по человечески )))

необязательно. Вот так тоже работает

(Ардуино Уно, ИДЕ1.8.3)

void setup() {
 Serial.begin(9600);
 uint8_t a =0;
 for (uint8_t c =0; c<4;c++) {
  if (c >1) a = (++a) | 0x10;
  else a = (++a) & 0x0f;
 Serial.println(a,HEX);
} 
} 
void loop() {}

результат

1
2
13
14

 

странно, но похоже на постинкремент скобки не всегда действуют. В линуксе действовали. а в ардуине нет

В принципе, логично, так как запись (a++) отдает неким идиотизмом :)

 

но это еще не все. тут в коде есть еще одна ошибка, предлагаю Девелоперу самому ее найти :)

sadman41
Offline
Зарегистрирован: 19.10.2016

b707 пишет:

странно, но похоже на постинкремент скобки не всегда действуют. В линуксе действовали. а в ардуине нет

Я же грю - китайская.

b707
Offline
Зарегистрирован: 26.05.2017

sadman41 пишет:

Я же грю - китайская.

не, это похоже мой код китайский.

 

Discover0708
Offline
Зарегистрирован: 20.09.2020

b707 пишет:
но это еще не все. тут в коде есть еще одна ошибка, предлагаю Девелоперу самому ее найти :)

Я её обнаружил, когда прогнал код через монитор. при переходе от 1F к "0"  получаем (1F+01 | 10 =30), но как компактно исправить это я не придумал. Может покажете как?

Еще я изучил метод sadman41 & DetSimen. - с виду куча условий, сдвигов, но если присмотреться, то все четко и понятно. Код в одну строчку! 

r = i | ((i & 0x02) == 0x02) << 0x04;

Код проверил, работает вообще без нареканий! Еще раз Спасибо, что потратили время и привели примеры!

P.s. Я Вам не ленивая .опа. Мой код работает! просто он неуклюжий.