03.03.2013, 18:28 | #11 |
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9823 |
С чтением портов разобрался, нашел ошибку
Ошибку исправил и проверил следующим кодом PHP код:
можно таким же образом зациклить в любом месте кода, но не забудьте предусмотреть выход из этого цикла PHP код:
|
04.03.2013, 06:51 | #12 |
Junior Member
Регистрация: 24.11.2012
Адрес: Новосибирск
Сообщений: 14
Вес репутации: 0 |
Ввиду безупречной работы библиотеки,
появился соблазн переписать строчку: attachInterrupt(0, RPM, FALLING); в свете nanopins.h . Как это сделать правильно и улучшит ли оно срабатывание прерывания? Последний раз редактировалось fot; 12.03.2013 в 08:51. |
04.03.2013, 09:43 | #13 |
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9823 |
В шапке темы всегда актуальная ссылка на библиотеку
Выкладываю пример кода прерывания от внешнего входа D2 PHP код:
//EICRA |= (1<<ISC01); // FALLING – вызов прерывания при изменении уровня напряжения с высокого (HIGH) на низкое (LOW) //EICRA |=(1<<ISC00)|(1<<ISC01) // RISING – вызов прерывания при изменении уровня напряжения с низкого (LOW) на высокое(HIGH) // EICRA |= (1<<ISC00); // прерывание вызывается при изменении значения на входе; |
04.03.2013, 12:34 | #14 |
Junior Member
Регистрация: 24.11.2012
Адрес: Новосибирск
Сообщений: 14
Вес репутации: 0 |
ВСЁ ! Наконец полетело !
PID-контроллер ведет себя лучше, чем до ускорения. Прерывание ISR(INT0_vect) срабатывает без пропусков. { Start... ...End} - выполняется. Ощущение, что работает лучше и увереннее. Есть резерв - заменить analogRead (А2) и (А3) и analogWrite(5) PWM. Большущее Спасибо, Admin, за профессионализм и отзывчивость. Библиотека - класс! Последний раз редактировалось fot; 12.03.2013 в 08:52. |
04.03.2013, 12:45 | #15 |
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9823 |
analogWrite() нет смысла менять, так как эту функцию хардверная. analogWrite() только нофигурирует и стартует, а сам процесс выполняется в фоновом режиме и не грузит сам проц
С analogRead попробую, что нибудь придумать, но скорее всего придется Class использовать |
04.03.2013, 14:42 | #16 |
Junior Member
Регистрация: 24.11.2012
Адрес: Новосибирск
Сообщений: 14
Вес репутации: 0 |
Обнаружил в библиотеке прописанные NOP-ы.
Вопрос: Какие ограничения накладывает работа с прерываниями на использование NOP-ов в основном цикле. Мешают ли они вызову прерываний? Последний раз редактировалось fot; 12.03.2013 в 08:52. |
04.03.2013, 15:13 | #17 |
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9823 |
Nop можно использовать везде, без ограничений, тем более эта комманда написана на чистом ассемблере
Добавил функции A0_Read, A1_Read, ... A7_Read Разницу в скорости с функцией AnalogRead() ровно в два раза A0_Read преобразовывает за 50мкс, а AnalogRead(0) за 100мкс На скорость оцифровки оказывает влияние сам АЦП, он медленный Можно конечно еще увеличить скорость тактирования АЦП, но тогда ухудшится качество оцифровки. Сейчас частота на границе между качеством и тактированием. Разница в размере скетча не значительная при использовании AnalogRead(0) объем 538 байт, а при использовании A0_Read 508 байт Скетч который я использовал для сравнения скорости работы PHP код:
PHP код:
|
04.03.2013, 16:29 | #18 |
Junior Member
Регистрация: 24.11.2012
Адрес: Новосибирск
Сообщений: 14
Вес репутации: 0 |
Не нарадуюсь стабильной работе PID контроллера.
До использования библиотеки nanopins.h, на стабильность вращения двигателя влияла даже скорость обмена последовательного порта и нельзя было выключить его. Подумывал даже перейти на STM32. Но теперь отключил последовательный порт, а мотору - всё равно - очень стабильно держит обороты при разной нагрузке. Атмегу - не узнать! Замечательная библиотека... Завтра буду analogRead-ом заниматься. Последний раз редактировалось fot; 12.03.2013 в 09:09. |
04.03.2013, 19:15 | #19 |
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9823 |
Добавил к библиотеке функцию SmallUart
Я использую эту функцию во многих проектах При использовании функции SmallUart, учитывайте тот факт, что буфферизируется только 1 байт данных, принятый с Serial порта Тестовый код для проверки чтения и записи в UART PHP код:
|
04.03.2013, 20:20 | #20 |
Senior Member
Регистрация: 20.01.2013
Адрес: Уфа
Сообщений: 444
Вес репутации: 799 |
Чем могу - сделал цветочки- файл keywords, но требует проверки в первом блоке где start-end и в последнем где UART, так как еще неважно понимаю деятельность этих разделов библиотеки. Еще сделать примеры - описание и будет полноценная библиотечка
|
Здесь присутствуют: 39 (пользователей: 0 , гостей: 39) | |
|
|