Котуинко

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить
Модератор
Аватара пользователя
Сообщения: 19101
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

Сообщение Starichok51 »

я про все локи уже давно прочитал в даташите.
все твои дополнительные таблицы не являются аппаратными. все равно переходы на обработчики прерываний будут делаться из основной аппаратной таблицы.
я вот что подумал, что при переходе из загрузчика в приложение сначала перемещенную таблицу нужно вернуть на свое место с нулевого адреса, а уж потом сделать переход на нулевой адрес.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Реклама
Друг Кота
Аватара пользователя
Сообщения: 15789
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

Вопрос как опознается блокировка.
Т. Е. Какой базовый принцип.
Ведь запрета на обращение к простым подпрограммами из "чужой области" блокировка не ставит.
Иначе были бы блокированы и подпрограммы с вызывающим CALL/JMP ADR а в даташитах про то ни слова.
Посему запрет блокировки касается только фиксированных ячеек области векторов прерываний.
В других ячейках контроль адреса не проводится.
Предположим, что при установленной защите в ячейке с вектором стоит адрес передачи управления в свою же область адресного пространства. Для системы защиты это разрешенный переход (и начало обработки прерывания)... А уже там стоит вторая переадресация "в запретную зону". Вот такой вариант в принципе вполне возможен.
Проверку и без бутлоадера можно попробовать сделать... Чисто из " спортивна интересу"...
:roll:
Реклама
Друг Кота
Аватара пользователя
Сообщения: 15789
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

Прикупил жирну адуринку...
mega2560 pro... Вроде бы и неплохая базовая платка -относительно малогабаритная...
Только вот пригляделся -
а на всего этого монстра с количеством под 70 линий
ВСЕГО ТРИ КОНТАКТА "ОБЩИЙ"(GND)!!!
https://img.radiokot.ru/files/20529/3eugnlk41u.jpg
Как-то уж совсем неудобственно, особо при заявленном выходном токе стабилизаторов до 800мА...
Для сигналов и силовых обратный проводок один (максимум два) на всю платку...
ПЕЧАЛЬКА однако...
:(
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18787
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

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

Мой уютный бложик... заходите!
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Друг Кота
Аватара пользователя
Сообщения: 15789
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

Так не факт, что на платке общий слой...
Силовые и сигнальные что от источника питания, что от нагрузок/источников сигнала и все в один контакть...
хотя бы еще парочку поставили... Силовые то можно и через "общий +" затянуть. Мне больше интерес был для подключения параллельного ОЗУ (23я серия похоже таки из области фантастики по местным условиям).
Ну да и на том... сойдет... Все равно пока "на отлежку" в кащеев сундук.
:sleep:
Реклама
Это не хвост, это антенна
Аватара пользователя
Сообщения: 1394
Зарегистрирован: Чт авг 21, 2014 11:11:48
Откуда: краснодарский край

Сообщение главный колбасист »

А вот посмотрите,какая шняга интересная.
https://forum.cxem.net/index.php?/topic ... nt=3938993
Можно же перенести прошивку (дизассемблировать,т.к исходника не дал) на другой МК ?
например мега8 ? их у меня полно,а тини44 нет.
Контактная информация:
Реклама
Друг Кота
Аватара пользователя
Сообщения: 15789
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

При наличии документации на те RW1990 можно под любой МК программу сделать...
Да и в сети полно всяких самоделок на разных АВРкахи адуринах...
:roll:
Кстати... Для программирования далласов можно использовать аппаратную начинку DS2480...
"...
Supports 12V EPROM Programming and
Stiff 5V Pullup for Crypto iButton, Sensors
and EEPROM
..."
DS2480b_new.pdf
(409.69 КБ) 71 скачивание
8)
Последний раз редактировалось BOB51 Вс апр 07, 2024 08:52:00, всего редактировалось 1 раз.
Друг Кота
Аватара пользователя
Сообщения: 4651
Зарегистрирован: Ср сен 30, 2020 16:51:47
Откуда: РФ

Сообщение electroget »

Доброго времени суток.

Накропал вот такой код для Ардуины:

#include <EEPROM.h>

int address = 0; // Переменная для хранения адреса
byte value1 = B00001111; // Переменная для хранения значения 1
byte value2 = B10101010; // Переменная для хранения значения 2

void setup() {
Serial.begin(115200);

EEPROM.put(address, value1); // Записать значение value1 в ячейку с адресом 0

address += 1; // Корректируем адрес

EEPROM.put(address, value2); // Записать значение value2 в ячейку с адресом 1

// Обнуляем переменные
address = 0;
byte value1 = 0;
byte value2 = 0;

// Получаем данные из EEPROM
EEPROM.get(address, value1);
address += 1; // Корректируем адрес
EEPROM.get(address, value2);
Serial.println( value1, BIN); // Вывести полученное значение 1
Serial.println( value2, BIN); // Вывести полученное значение 2
}
void loop() {}

В результате выполнения кода:
Монитор СОМ порта выдаёт:

07:40:53.677 -> 1111
07:40:53.677 -> 10101010

Почему вместо положенного байта 00001111 монитор показывает 1111?
Друг Кота
Аватара пользователя
Сообщения: 15789
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

Так что положили, то и получили.
Значения переменных как были так и остались
Относительно "пропавших лидирующих нулей" - это особенности вывода на печать (функции обработчика перекодировки опции BIN, HEX в print) - аналогия гашения старших незначащих нулей на разнообразных индикаторах.
Для контроля можете выставить HEX - хотя и там "лидирующий нуль" может не воспроизводиться если формат отличается от 0xNN.
8)
Друг Кота
Аватара пользователя
Сообщения: 4651
Зарегистрирован: Ср сен 30, 2020 16:51:47
Откуда: РФ

Сообщение electroget »

[uquote="BOB51",url="/forum/viewtopic.php?p=4565027#p4565027"]Относительно "пропавших лидирующих нулей" - это особенности вывода на печать[/uquote]
Так это что, это он всегда будет и справа и слева в байте нули обрезать как ему вздумается?
Но тогда ещё вопрос. Реальный код будет чтение из массива и запись байт в порты (У Ардуины 2560 можно байты сразу целиком в порты выводить) Я собираюсь потом этот прочитанный байт 00001111 в порт выводить, он мне его в порт как выведет? Где окажется младший бит если нулей нет?
Поставщик валерьянки для Кота
Сообщения: 1974
Зарегистрирован: Сб май 05, 2012 20:24:52
Откуда: KN34PC, Болгария

Сообщение veso74 »

Нет проблем, он отправится туда, где ему место по весу битов.
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 4651
Зарегистрирован: Ср сен 30, 2020 16:51:47
Откуда: РФ

Сообщение electroget »

Вот код при чтении байт из массива:

#include <avr/io.h>
#include <EEPROM.h>

byte EEMEM dataArray_addr[16];
void setup() {
Serial.begin(115200);

// объявляем массив
byte dataArray[16] = {B00000001, B00000010, B00000100, B00001000,
B00010000, B00100000, B01000000, B10000000,
B01111111, B10111111, B11011111, B11101111,
B11110111, B11111011, B11111101, B11111110};
//
EEPROM.put((byte)&dataArray_addr, dataArray);
// объявляем откуда будем читать
byte dataArray_read[16];
// читаем точно так же, как писали
EEPROM.get((byte)&dataArray_addr, dataArray_read);
EEPROM[0] += 1;
// проверяем данные
Serial.println(dataArray_read[0], BIN);
Serial.println(dataArray_read[1], BIN);
Serial.println(dataArray_read[2], BIN);
Serial.println(dataArray_read[3], BIN);
Serial.println(dataArray_read[4], BIN);
Serial.println(dataArray_read[5], BIN);
Serial.println(dataArray_read[6], BIN);
Serial.println(dataArray_read[7], BIN);
Serial.println(dataArray_read[8]), BIN;
Serial.println(dataArray_read[9]), BIN;
Serial.println(dataArray_read[10], BIN);
Serial.println(dataArray_read[11], BIN);
Serial.println(dataArray_read[12], BIN);
Serial.println(dataArray_read[13], BIN);
Serial.println(dataArray_read[14], BIN);
Serial.println(dataArray_read[15], BIN);
}
void loop() {}

Здесь монитор СОМ порта показывает дичь вообще полную:

09:04:58.892 -> 1
09:04:58.892 -> 10
09:04:58.892 -> 100
09:04:58.892 -> 1000
09:04:58.892 -> 10000
09:04:58.892 -> 100000
09:04:58.892 -> 1000000
09:04:58.892 -> 10000000
09:04:58.892 -> 127
09:04:58.892 -> 191
09:04:58.892 -> 11011111
09:04:58.892 -> 11101111
09:04:58.892 -> 11110111
09:04:58.892 -> 11111011
09:04:58.892 -> 11111101
09:04:58.892 -> 11111110

Откуда взялись значения 127 и 191?
Я ни разу не программист, но дело и не в программировании вовсе, я просто не понимаю как он всё это интерпретирует при выводе данных.
Поставщик валерьянки для Кота
Сообщения: 1974
Зарегистрирован: Сб май 05, 2012 20:24:52
Откуда: KN34PC, Болгария

Сообщение veso74 »

При печать старшие биты, равные 0, не отображаются.
СпойлерМожете организовать собственный "правильной" печать. Код немного длинный, но все для теста.
Напр.:

Код: Выделить всё

  value1 = EEPROM.get(address, value1);

  Serial.print("0b");
  
  if (value1 < 128)
    Serial.print('0');
    
  if (value1 < 64)
    Serial.print('0');
    
  if (value1 < 32)
    Serial.print('0');
    
  if (value1 < 16)
    Serial.print('0');
    
  if (value1 < 8)
    Serial.print('0');
    
  if (value1 < 4)
    Serial.print('0');
    
  if (value1 < 2)
    Serial.print('0');
    
  if (value1 < 1)
    Serial.print('0');

  Serial.println(value1, BIN);
---
[uquote="electroget",url="/forum/viewtopic.php?p=4565045#p4565045"]...
Откуда взялись значения 127 и 191?[/uquote]
Перепутали две строки выше. Поместите BIN в скобки.
Последний раз редактировалось veso74 Вс апр 07, 2024 09:15:26, всего редактировалось 2 раза.
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 4651
Зарегистрирован: Ср сен 30, 2020 16:51:47
Откуда: РФ

Сообщение electroget »

veso74,
Да, понял, спасибо, исправил.
Поставщик валерьянки для Кота
Сообщения: 1974
Зарегистрирован: Сб май 05, 2012 20:24:52
Откуда: KN34PC, Болгария

Сообщение veso74 »

Не пишите много раз в EEPROM, там ресурс совсем не большой (100 000 раз, на самом деле в напр. ~10 раз больше). EEPROM быстро создаст проблемы. Напр. сохранять только статические настройки, изменения при выключения/вкл. и т. д.
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 15789
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

electroget
Вывод в порт у любой ардуинки возможен. Разница между мега 2560 и мегой 328 только в наличии "полных портов" на 8 бит.
И то... если в 328й использовать только как порт PD - будет вариант 8-битного вывода (но забываем про Rx/Tx, прервыания и перепрошивку через бутлоадер). Да еще можно без внешнего кварца PB использовать - но то уже не "классическая" нанка/про-мини, а некий самодел под специализированной "платформой".
Для простейших тренировок можете воспользоваться симулятором
статья
http://sheepdogguides.com/arduino/aht9simsimm.htm
сайт с симулятором
https://www.sites.google.com/site/unoardusim/
8)
Совет - прячьте код под спойлер - иначе занимает много места и отвлекает внимание от вопроса.
Для тестов лучше библиотеки не использовать (та же EEPROM) - добавляют трудностей на начальном этапе освоения.
Достаточно обычного массива в ОЗУ.
avr/io.h и так "по умолчанию" в ардуиноIDE подключен.
:tea:
Поставщик валерьянки для Кота
Сообщения: 1974
Зарегистрирован: Сб май 05, 2012 20:24:52
Откуда: KN34PC, Болгария

Сообщение veso74 »

https://wokwi.com/projects/new/arduino-mega
и Ваш код смоделирован там. Дело за 5 секунд.

Изображение

Но это все равно симулятор - есть несоответствия напр. по определенным действиям/операциям/алгоритмам.
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 4651
Зарегистрирован: Ср сен 30, 2020 16:51:47
Откуда: РФ

Сообщение electroget »

[uquote="veso74",url="/forum/viewtopic.php?p=4565054#p4565054"]Не пишите много раз в EEPROM, там ресурс совсем не большой[/uquote]
Благодарю за совет, но это пока всё тестовые наработки, если дело когда-нибудь дойдёт до реальной схемы, то eeprom конечно же будет внешний, на чипе 25LC08 например.

Добавлено after 1 minute 10 seconds:
BOB51,
Понял, спасибо.

Добавлено after 4 minutes 41 second:
veso74,
Пока не вижу необходимости пользоваться симулятором. У меня есть живая плата и живой Ардуино IDE, так оно как-то привычнее людям старой школы.
Поставщик валерьянки для Кота
Сообщения: 1974
Зарегистрирован: Сб май 05, 2012 20:24:52
Откуда: KN34PC, Болгария

Сообщение veso74 »

Я тоже, по-старому :). Моделирование в симуляроре только как идея, напр. думать о наших делах для хобби в местах, где включение железа невозможно, на работе например :).
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 4651
Зарегистрирован: Ср сен 30, 2020 16:51:47
Откуда: РФ

Сообщение electroget »

veso74,
Я этим всем занимаюсь только в любительском плане и только дома, по выходным в основном. Живое железо имеет то преимущество, что нет сомнений в полученном или не полученном результате. А для неспециалиста (а я не специалист в программировании микроконтроллеров) это очень важно.
Ответить

Вернуться в «Разные вопросы по МК»