пятница

Определяем тактовую частоту МК - Способ #101

Дано:
  • Пинборд, 
  • STM32 модуль
  • Осциллограф 

Найти: 
  • На какой частоте работает ядро контроллера
Решение:

Цепляем щуп к линии CPU POWER. Переключаем вход в режим переменного тока (AC). Выкручиваем энкодер Volts/Div до предела, чтобы было видно шум на линии:

Теперь переключаемся в режим FFT и пыримся в график в поисках пика. Вот он:

36МГц.

А разгадка в том, что МК потребляет ток не равномерно, а импульсами при переключении транзисторов внутри него. Большая часть движухи в камне происходит по тактовому сигналу. Есть конечно всякие асинхронные модули (вроде часов реального времени или сторожевого таймера), но они обычно тикают на низких частотах и с ядром их не перепутать. А вот ядро стучит на своей тактовой частоте и, если присмотреться, срет на линию питания.
Обычно с помехами от цифровых схем успешно справляется  фильтрация (блокирующие конденсаторы по питанию). И тут среднеквадратическая амплитуда пульсаций на этой частоте не более 1мВ - фильтры справляются. Шум от подключенного к пинборде сетевого модуля и от шины USB намного больше. Но тем не менее, осциллографом можно разглядеть и такую мелочь.



вторник

Клиент-серверные ролевые игры

Продолжаю играть с wiznet w5100. С сервером разобрался, теперь настало время прикинуться клиентом.


В: А как мне узнать что человек сейчас на сайте? ну всмысле онлайн
О: Все просто. Инициализируете сетевой контроллер. Следите за питанием, иначе он может сбоить. Настраиваете IP шлюза, максу подсети и другие необходимые параметры. Открываете сокет в режиме TCP клиента и подключаетесь к DNS серверу. Делаете запрос на сервер чтобы узнать IP нашего сайта. Закрываете сокет и открываете в том-же режиме но теперь подключаетесь к IP который дал вам DNS. Ждете установки соединения. Отправляете GET запрос, указав в качестве URL адрес странички нужного вам человека, относительно сервера (/id31337 например). Чтобы не сочинять GET запрос, его можно украсть у какого-нибудь браузера. Только, боже вас упаси, не указывайте в запросе, что вы поддерживаете сжатие трафика! А то пришлют какой-нибудь gzip, и что с ним потом делать? Затем читаете то, что отдает сервер. Данных может быть больше, чем у вас оперативки, поэтому обрабатывать их придется на лету. Вам предстоит найти в выдаче текст <b class="lvi"></b> Если нашли, делаете что-то типа LED_PORT->ODR |= LED_PIN; Написали? Прошивайте и запускайте.
Светодиодик загорелся? Значит человек онлайн.


Ну а светодиодик можно заменить сервомашинкой:

P.S. Исходников пока не будет. Ибо там стыд, позор и задержки на циклах. Потом выложу это как аппноту по работе с новым сетевым модулем.