sfw
nsfw

Результаты поиска по запросу "в байте 8 бит"

Отличный комментарий!

Килобомбит
1 ХОББИТ,хоб,бит,байт,фильмы.

8 бит

8 бейсбольных бит равны 1 бейсбольному байту
,гиф анимация,гифки - ПРИКОЛЬНЫЕ gif анимашки,Pixel Art,Пиксель Арт, Пиксель-Арт,8 bit,Игры
Ф'©'081 %» 23:48
.||| ^
<-	Чат
Почему написано 4 Р за 1 МБайт, а на самом деле 40 Р за 40 КБайт? Может быть я что-то не понимаю?
^Н^^^Хочу'разобраться
23:05
МБайт - это милли байт
Александра, 23:08
Благодарю вас за обращение, всего доброго, до свидания! □
Александра, 23:12
Порекомендуете

Отличный комментарий!

Международной системой СИ. Сколько много открытий можно найти, если посещать школьные занятия

Пытаюсь получить сингал который передаётся от arduino на PC по UART (USB)

Пытаюсь получить а получаю какую-то адскую ёбань. Я прошерстил ни одну статью по тому что и как передаётся в UARTе, но то что у меня, это непостижимо моим умом.
Кто шарит за передачу данных или сталкивался с этим, прошу помогите, я осциллограф вообще первый раз использую.
Осциллограф подключён следующим образом. CH1 между землёй и зелёным пином , CH2 между землёй и белым пином USB. 
Receptacle (F) Розетка
Plug (M) Вилка,реактор помоги,электроника,песочница,пидоры помогите,реактор помоги
Само usb идёт от компьютера (в заднюю панель) к arduino due (programming port), в середине есть вот такая распайка, что бы можно было приконектиться щупами. Скорость передачи стоит 9600bod.

Должно быть вот так .
Вот осциллограмма получаемая с Атакома АСК-2035 (взял его что бы исключить вариант, в котором usb осциллограф - портит). 
Передаю я здесь... ничего. Просто цикл в котором ничего не происходит. Но как видим некие сигналы передаются.
Вот осциллограмма с USB осциллографа Hantek6022BE. (параметры взял те же что и на атакоме, для наглядности. но опять таки что это за такие сигналы я никак не могу понять. Где тут вычленить байт вообще не ясно.
Тут я поменял параметры отображения и вывожу байт (от 0 до 255) с каждым выводом увеличивая его.
поставил такие временные промежутки что бы сравнить с одним человеком из статьи по работе с UART у него это выглядело так 
У
Сигнал 11АРТ на экране осциллографа. Виден старт бит данные и стоповый бит Спасибо
@01НА1_Тза картинку,реактор помоги,электроника,песочница,пидоры помогите,реактор помоги
Если выставить 500us то картина будет выглядеть вот так. Где тут мой байт, чёрт знает. 
Я также пробовал подключиться к ntive port arduino due и там картина выглядела следующим образом. По моим расчётам тут показан интервал (от края до края) в 1ms и за это время должно передаться примерно 10 бит. Опять таки вопрос, где тут 10 бит? 
При этом всё передаётся на компьютер и serialPort в arduinoIDE сообщает что всё выводится. 
Я совсем не пойму в чём дело.

ОСдев №10: основной загрузчик, часть 3. GDT.

Подготовительный этап закончен, можно приступать к интересному. Кроме собственно загрузки файлов наша программа должна подготовить для ОС рабочую среду. Это значит: переключить процессор в 32/64-битный режим, настроить таблицу прерываний и создать базовую GDT. Сегодня разберёмся с последним пунктом.
GDT - сокращение от Global Descriptor Table, глобальной таблицы дескрипторов. Что это такое? По сути - набор записей одинакового формата, описывающих области памяти и разрешения, которые они имеют. Упрощённо это выглядит так:
//область 0
адрес области
размер области
параметры доступа
флаги
//область 1
адрес области
размер области
параметры доступа
флаги
...
В 32/64-битном режиме дескрипторные таблицы используются вместо старой схемы адресации сегмент:смещение. Зачем? Сегмент:смещение - небезопасная технология, которая позволяет переписать любой участок памяти. Надо ли говорить, что при неосторожном обращении это легко может закончиться бедой? Дескрипторная таблица даёт возможность ограничить запись или выполнение кода в отдельных областях RAM. Дескрипторные таблицы появились как часть аппаратной защиты памяти вместе с 286 процессором.
Как это работает? После выхода из 16-битного режима процессор больше не принимает адреса в формате сегмент:смещение. Если попытаетесь так сделать - получите исключение GPT (General Protection Fault). Вместо этого в сегментном регистре процессор ожидает получить смещение дескриптора внутри ДТ. При этом для операций над этим сегментом будут действовать правила, указанные в дескрипторе. Например, попытка обратиться к памяти за пределами сегмента или запись в защищённый от записи сегмент будут вызывать исключения (кстати, про обработку исключений поговорим позже, пока давайте примем, что это фатальная ошибка, которая приведёт к остановке программы).
Кроме глобальной таблицы дескрипторов существуют ещё локальные (ЛДТ), TSS и таблицы дескрипторов прерываний (IDT). Для того, чтобы наша ОС могла начать работу, обязательно наличие только двух таблиц: GDT и IDT. Давайте теперь взглянем на GDT поподробнее. Скажу сразу, зрелище будет не очень приятное. Но начнём с лёгкого. Так как GDT - часть аппаратной схемы защиты памяти, у неё есть свой регистр: GDTR. Это 48-битный регистр, 4 байта которого предназначены для смещения GDT, а 2 - для её размера. Таким образом, GDT не может быть больше 65536 байтов в размере. Размер записи в GDT - 8 байтов, значит,< таблица может иметь максимум 8192 дескриптора. Зная всё это, хорошим тоном было бы сразу зарезервировать 64К под GDT, но в моей архитектуре ОС создаёт свои таблицы, так что сейчас я обойдусь минимумом. Минимум в данном случае - 3 дескриптора. Нулевой, сегмент кода и сегмент данных. Зачем отдельно выделять нулевой дескриптор? Дело в том, что обращение к нему в GDT приводит к, вы угадали, исключению. Это тоже своего рода мера предосторожности.
А теперь время взглянуть на структуру дескриптора. И тут, увы, наследие тяжёлого прошлого во всей красе. Ради обратной совместимости в кодом для старых процессоров дескриптор GDT превратили в кашу.
Первые два байта - это первые 16 битов границы сегмента.
Следующие три байта - первые 24 бита основания сегмента.
Следующий байт - параметры доступа. Рассмотрим ниже.
Следующий байт совмещает в себе биты 16-19 границы и флаги. Об этом тоже подробнее ниже.
Ну и последний байт - биты 24-31 основания.
Неудобно? Не то слово. Когда будем писать ядро - обязательно замутим процедуру для комфортной работы с этим месивом. К счастью, сейчас у нас статичная структура всего из трёх сегментов, так что заполнить можно и вручную. Создадим и подключим модуль GDT.inc. Как это сделать, мы рассматривали в прошлый раз. И добавим в него вот такую таблицу:

Это и есть наша GDT, ничего ужасного. Значения в нулевом дескрипторе для нас не важны, а вот остальные давайте рассмотрим подробнее. У нас есть два дескриптора: один - для кода, другой - для данных. Оба начинаются с 0 и занимают FFFFF*4Kib = 4Gib. Фактически это значит, что, начав работать, ОС сможет использовать всю память по своему усмотрению. Давайте теперь разберём параметры доступа и флаги.
Бит 1 - флаг чтения/записи. Его значение различается для сегментов кода и данных.
Для сегментов кода установленный флаг означает, что чтение разрешено.
Запись в сегменты кода запрещена всегда.
Для сегментов данных установленный флаг означает, что разрешена запись. Чтение из сегментов данных
Таким образом, значение параметров доступа 10010010b даёт нам вот что: это сегмент данных, запись в него разрешена, сегмент растёт вверх, уровень привилегий - ring0. А теперь флаги. Биты 0-3 здесь заняты границей сегмента, не обращаем на них внимания.
Бит 4 зарезервирован и должен быть равен 0.
Бит 5 указывает на 64-битный сегмент. Так как мы пока переходим в 32-битный, должен быть равен 0.
Бит 6 указывает на 32-битный сегмент. Наш выбор, устанавливаем в 1.
Бит 7 - гранулярность. Если равен 0, то значение границы сегмента используется как
Окей, теперь у нас есть GDT. Но как указать системе, что её нужно использовать? Процессор ведь не дурак, сам искать не станет. Всё просто, джентльмены из IBM в кои-то веки о нас позаботились. При помощи специальной ассемблерной команды lgdt (load GDT) мы можем передать в регистр GDTR линейный адрес таблицы и её размер. Для этого добавим перед GDT такую структуру:
60ТК_р1:г:
dы 00171п	;Размер таблицы - 1 (23 байта).
dd 00000000И	;Абсолютный адрес таблицы.,программирование,geek,Прикольные гаджеты. Научный, инженерный и  айтишный юмор,OSDev,Операционная система,ассемблер,разработка,длиннопост
Размер таблицы мы уже знаем, а вот адрес придётся посчитать, так что пока оставим 0 и напишем процедуру инициализации GDT:
init_GDT ргос
init_GDT endp
push eax pushfd
xor eax,eax
mov ax,offset GDT
add eax,00000500h
mov dword ptr [GDTR_ptr+2],eax
cli
lgdt pword ptr GDTR_ptr sti
popfd pop eax ret,программирование,geek,Прикольные гаджеты. Научный, инженерный и  айтишный юмор,OSDev,Операционная система,ассемблер
На случай, если тут не всё очевидно, поясню. Мы помещаем в EAX смещение GDT относительно сегмента, а потом добавляем адрес сегмента*16. Это и есть линейный адрес, сохраняем его в структуре. После этого отключаем прерывания, передаём структуру процессору командой lgdt и включаем прерывания обратно. По идее прерывания можно не трогать, так как в 16-битном режиме GDT не используется, но я перестраховщик.
Собственно, на этом всё. Добавьте вызов init_GDT в конец загрузчика перед cli и дело в шляпе. Сегодня без картинки, но вот вам котик.
Чистая дискета: https://drive.google.com/file/d/1Bold4ds8oEruHQ7fJZKHglVo7A2Vc5MR/view?
Предыдущие части:
Здесь мы собираем самые интересные картинки, арты, комиксы, мемасики по теме в байте 8 бит (+1000 постов - в байте 8 бит)