i2c (slave) расширитель на ATMega
Потребовалось тут из основной задачи на ARM-e под Linux дрыгоножество неспешное, а ног под GPIO сконфигурировано всего 3 шт! Разумеется, можно пересобрать ядро соответствующим образом, но поскольку в данном вопросе пока слаб, решил поставить расширитель i2c. Когда понял, что в городе я микросхем не найду, и посмотрел цены — понял, что ATMega весьма неплохое решение в данном случае! Попутно выяснил параметры для AVRDUDE, чтобы шить через Arduino бутлоадер.
Очень сильно помог этот материал в разборках с TWI, он же «квадратная шина» i2c.
Возникла заминка — как получить доступ не только регистрам PORTB, но и к остальным, а в идеале — ко всей периферии? Если делать в лоб — сравнивать адрес, потом обратиться к нужному регистру — много кода, ненаглядно, и никакой гибкости. Подумал, поспрашивал на форумах — на местном камрады почти готовое решение дали — используем указатель, значение которого вычисляется, и уже через него читаем-пишем в нужный порт.
В общем, кому надо — пользуйтесь. Мега прикидывается 24cXX, адресация начинается с PINB, дальше — по даташиту. Кому хочется адресации по даташиту — поправьте строку
на такую:
В этом случае адреса будут соответствовать описанию от Atmel.
Ещё момент — не уверен, что будет доступна периферия в верхних адресах, например — UART.
Скриншот терминала с проверкой ниже.
Очень сильно помог этот материал в разборках с TWI, он же «квадратная шина» i2c.
Возникла заминка — как получить доступ не только регистрам PORTB, но и к остальным, а в идеале — ко всей периферии? Если делать в лоб — сравнивать адрес, потом обратиться к нужному регистру — много кода, ненаглядно, и никакой гибкости. Подумал, поспрашивал на форумах — на местном камрады почти готовое решение дали — используем указатель, значение которого вычисляется, и уже через него читаем-пишем в нужный порт.
В общем, кому надо — пользуйтесь. Мега прикидывается 24cXX, адресация начинается с PINB, дальше — по даташиту. Кому хочется адресации по даташиту — поправьте строку
#define BASEPORT PORTB-2
на такую:
#define BASEPORT PORTB-5
В этом случае адреса будут соответствовать описанию от Atmel.
Ещё момент — не уверен, что будет доступна периферия в верхних адресах, например — UART.
Скриншот терминала с проверкой ниже.

Пособие для студента (разработка на AVR, на английском, но с картинками, 26 МБ)
Цитирую: This is a textbook that I have written to support my high school students learning using the AVR for their technology projects. We have 300 students who learn to program the AVR and some do neat things.
The book is no charge, its almost 1000 pages of learning.
It starts with Bascom and does some C and C++
The complementary software I have written is also free.
And there are a lot of students projects on my website as well.
Bill
Auckland
New Zealand
www.techideas.co.nz
- +1
- 02 декабря 2012, 07:20
- uni
- dl.dropbox.com/u/5571446/Intro...
- 41
MicroVGA conio/text user interface library на Pinboard II (AVR). Демо пример. Часть 1

Аннотация
Показан демонстрационный пример работы с библиотекой MicroVGA conio/text user interface library на Pinboard II + AVR в стандартной комплектации (ATmega16 @ 16 МГц). Выполнен небольшой его обзор. Библиотека предназначена для работы в связке с периферийным модулем, с помощью которого можно напрямую выводить информацию на монитор из контроллера (через SVGA). В данном примере библиотека в качестве терминала использует программу на ПК и работа осуществляется по последовательному порту. Т.о. с её помощью, к примеру, можно реализовать удобный (дружелюбный) отладочный пользовательский интерфейс, либо организовать на её основе конфигурирование устройства (по аналогии с BIOS).
Читать дальше
Преобразуем в строку. Часть 1. Целые числа.
Задача преобразования числа в строку стоит всегда, когда нужно отобразить числовые результаты работы программы. Процессоры у нас оперируют двоичными данными, человеку-же подавай десятичные числа. Собственно задача состоит в преобразовании базы числа. Какие для этого есть способы? Целью данной статьи является описание и сравнение максимального количества способов преобразования числа в строку. Задачу, естественно, рассматриваем с точки зрения реализации на микроконтроллерах, по этому размер и скорость имеют значение. Для простоты рассматриваем только без-знаковые 32-х и 16-ти разрядные числа (со знаком не намного сложнее).
Читать дальше
Читать дальше
Интересная функция в avr-gcc 4.7
Недавно обнаружил в avr-gcc 4.7 новую встроенную функцию __builtin_avr_insert_bits.
В заголовок <avr/builtins.h>, где находятся остальные встроенные функции, эту функцию пока не включили и объявлять ее прототип придётся самостоятельно:
Эта функция делает вставку отдельных бит из параметра bits в значение val, при этом параметр map задаёт способ вставки бит. Каждые 4 бита в map отвечают за отображение одного бита:
Основное назначение этой функции — работа с несмежными линиями ввода-вывода. То есть то, что я делал тут и тут.
Достоинства:
Достать avr-gcc 4.7. собранный под Windows можно тут.
В заголовок <avr/builtins.h>, где находятся остальные встроенные функции, эту функцию пока не включили и объявлять ее прототип придётся самостоятельно:
unsigned char __builtin_avr_insert_bits (unsigned long map, unsigned char bits, unsigned char val);
Эта функция делает вставку отдельных бит из параметра bits в значение val, при этом параметр map задаёт способ вставки бит. Каждые 4 бита в map отвечают за отображение одного бита:
- Если значение тетрады 0xf, то в соответствующий выходной бит копируется значение соответствующего бита из val
- Если значение тетрады в диапазоне 0-7, то в соответствующий выходной бит копируется значение бита с номером равном этой тетраде из bits
- Для остальных значений выход не определен.
Основное назначение этой функции — работа с несмежными линиями ввода-вывода. То есть то, что я делал тут и тут.
Достоинства:
- Предельно эффективный генерируемый машинный код. Используются инструкции, которые нельзя сгенерировать с помощью стандартного Си кода, например, BST и BLD.
- Способ отображения бит хранится в целочисленной 32-х битной константе, которую можно вынести из места использования куда-нибудь в заголовок.
- Только 8-ми битные значения.
- Совершенно непереносимо — поддерживается только в одном компиляторе — avr-gcc 4.7.
Достать avr-gcc 4.7. собранный под Windows можно тут.
HD44780. Библиотека для avr-gcc
Первым (и пока единственным) навесным расширением моей отладочной платы стал LCD дисплей WH1602 (или как-то так) с контроллером HD44780. Такого рода дисплеи пользуются популярностью среди электронщиков-самодельщиков за их простоту и достаточную для большинства задач информативность.

Читать дальше

Читать дальше
- +4
- 19 апреля 2012, 16:25
- uncleeugene
- 82
- 2
Pinboard II (AVR) Demo (видео)
Смотреть в HD. Исходники для симуляции в Протеус: mysvn.ru/schoolbell/pbiidemo/
ТОЛЬКО РЕВИЗИЯ 11 (!) Т.к. там для 4 МГц я сделал сборку.
Читать дальше
Командная оболочка для AVR
Подумал я тут недавно: «а не написать ли мне от нечего делать свою командную оболочку для AVR?» И написал.

Читать дальше

Читать дальше
Еще одна реализация 1-Wire
Наконец-то и я сочинил свою программную реализацию мастера шины 1-Wire. За исходниками и комментариями добро пожаловать под кат.
Читать дальше
Читать дальше