по-моему в расширении файла. Среде arduino нужно, чтобы у основного файла библиотеки было расширение .cpp
А, ну и вместо uart_writebyte надо было uart_sendbyte, но это ты бы и сам нашел :-).
Нет.
Да.
Нужна , только руки кривые, самому не осилить
по-моему в расширении файла. Среде arduino нужно, чтобы у основного файла библиотеки было расширение .cpp
А, ну и вместо uart_writebyte надо было uart_sendbyte, но это ты бы и сам нашел :-).
эта библиотека обладает таким свойством - у нее нет буфера. Если байт принялся, его можно считать. Но если во-время не считал, то следующий пропадет.
Передача тоже без буфера - если контроллер уже отправил предыдущий байт, то функция отправки завершится сразу. Если прошлый еще не отправился, функция будет ждать, пока не отправится прошлый байт и только потом завершится.
Я только хотел спросить про буфер
Данные все равно через буфер FTDI проходят, почему он потеряется?
P.S.
Посмотрел встроенную библитотеку Serial , они прерывание используют и буфер в оперативке контроллера
Последний раз редактировалось Chip; 09.04.2011 в 17:40.
ftdi дергает ногой, mega аппаратно распознает эти данные. Но поскольку никакого контроля готовности приема мегой нет, ftdi тупо шлет данные, не дожидаясь, пока мега будет готова принимать данные.
Штатная библиотека вешается на прерывание, которое вызывается в момент прихода символа из uart, помещает этот байт в буфер.
В случае простого приложения, готового непрерывно пытаться читать данные из порта, получается выгоднее использовать такую простую библиотеку. Она занимает буквально байт 40 flash, думаю.
Чип, я таки попробовал использовать правильную модель обращения к портам из среды arduino.
В приложенном файле архив скетча и библиотеки ардуино.
При использовании учесть:
1. include'идь нужно только #include <ArduinoPins.h> хотя при добавлении библиотеки по умолчанию прописывается туча includ'ов. Лишние удалить. Еще можно инклудить pinlist.h для работы со списком пинов и latch.h для работы со сдвиговыми регистрами.
2. Не забывать в начале прописывать
using namespace IO;
3. Ноги имеют название D0 - D13 и A0 - A5.
4. Не забывать ставить двоеточие, а не точку при обращении к функции, к примеру D1::Set(); но не D1.Set();
5. Если хотите дать ноге свое название, то можно написать что-то вроде
typedef D8 LedPin;
и потом писать
LedPin::SetDirWrite();
LedPin::Set();
И самое главное - эти библиотеки дают быстрейший код из возможный и занимающий минимум места!
К примеру, D1::Set() выполняется два такта (одна команда контроллера).
Последний раз редактировалось SBorovkov; 10.04.2011 в 02:51.
Спасибо!
Последний раз редактировалось Chip; 10.04.2011 в 02:23.
Так и должно быть, там была ардуина и я ее тупо вырезал. А части схемы на самом деле соединены - смотри на лейблы mosi, latch, sck
На самом деле можно сделать существенно более простую схему на двух мегах, к примеру 16-х, 8515 или подобных. Схема будет однослойной, на ней будет до десяти перемычек, из микросхем будет ft232rl, две меги и uln'ки. А количество каналов можно увеличить до 60 (20 полноцветных).
Эту тему просматривают: 4 (пользователей: 0 , гостей: 4)