ICMP запросы (Ping) на uIP

Стек uIP умеет только отвечать на ICMP запросы (если его пингуют, к примеру), но не умеет их отправлять. Исправим это.

Составляем IP заголовок

#define ICMPBUF ((struct uip_icmpip_hdr *)&uip_buf[UIP_LLH_LEN])   ICMPBUF->vhl = 0x45; ICMPBUF->tos = 0; uint16_t len = sizeof(struct uip_icmpip_hdr); // длина будет равна заголовку ip + icmp ICMPBUF->len[0] = len >> 8; ICMPBUF->len[1] = […]

USART/RS485 Bootloader для AVR

Понадобилось мне прошивать ATmega88, которая находится в труднодоступном месте, куда с ISP программатором залезть не получится, но от нее идет шина RS485, по которой атмега общается с компом, вот через нее и можно перепрошивать.

Как вы уже догадались, для этого мы будем использовать Bootloader (бутлоадер). Объяснять что это такое я не буду, инфу о нем […]

Прием команд с пульта дистанционного управления

Обновлено 21.01.14. Исходники переписаны под AVR Studio 6 (с тулчейном)

В этой статье я расскажу, как принимать команды с пульта (ПДУ) с кодировкой RC5. Подробное описание протокола не имеет смысла так как этого в интернете предостаточно.

Схема:

Микроконтроллер Atmega8 (тактирование 1 МГц от внутреннего генератора), ИК-приемник TSOP1736 подключен к входу захвата ICP, на порту D […]

Работа с шиной 1-wire. Подключение термодатчика DS18B20 к AVR

Обновлено 21.01.14. Исходники переписаны под AVR Studio 6 (с тулчейном)

Сразу хочу сообщить, что в этой статье я не буду описывать принцип работы шины (описание временных слотов и т.д.). Статья будет типа «Быстрый старт». Конкретно: я выложу свою библиотеку для работы с 1-wire, опишу как ею пользоваться, как подключить устройства к шине, как производить поиск […]

Замена стандартной функции _delay_ms()

Если вы программируете микроконтроллеры, тогда, наверно, уже знаете предназначение функции _delay_ms(). Она делает задержку на указаное количество милисекунд.  С моей точки зрения, у нее есть 3 минуса: она не работает с отключенной оптимизацией, во время ее выполнения текущая функция ничего не делает, кроме тупления в одном месте и если часто возникают прерывания, то время задержки […]