Официальный сайт компании Arduino по адресу arduino.cc
Дискриминация по типу ардуино.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Пнд, 19/05/2014 - 18:33
Есть задача реализовать шим на дуине. Cкачал библу PWM.h.
Пишу скетч, компиллирую для нано - все проходит нормально. Компиллирую для леонардо - ругается на строку:
pwmWrite(5, sensorValue / 4);
Че за дискриминация?
Библу скачивал здесь: https://code.google.com/p/arduino-pwm-frequency-library/downloads/list
Так исправте ошибку и будет вам щастье
Если Вы про analogWrite, так для леонардо не ругается.
Мне интересно, почему один и тот скетч под нано компилится нормально, а под леонардо чуть ли не матом кроет?
МК разные. Таймеры разные. У Леонардо больше PWM выходов.
Самое тупое, посмотреть, что говорит компилятор и исправить ошибку, Вам уже про это сказали.
так в чём проблема - есть желание впихнуть невпихуемое и что бы невпихуемое не крыло тебя матом?
так в чём проблема - есть желание впихнуть невпихуемое и что бы невпихуемое не крыло тебя матом?
дадада, я кузнец, я кую, я не могу не куя!
так в чём проблема - есть желание впихнуть невпихуемое и что бы невпихуемое не крыло тебя матом?
То, что есть какая-то ошибка, это и так понятно, как понятно и то, что будет щастье если его исправить. Так же понятно что ругается на несоответствие типов. Просто не понятно, почему с нано оно впихуемо, а с леонардо невпихуемо?
У Леонардо другие таймеры и в PWM.h нет определения для __AVR_ATmega32U4__, думаю дело в этом
дадада, я кузнец, я кую, я не могу не куя!
http://pleer.com/tracks/4199303G5tC
А если так:
pwmWrite(((uint8_t)5, (uint8_t)(sensorValue / 4));
Без изменений!
берём гаечный ключ(зачёркнуто)... текстовый редактор, открываем файлег PWM.h и шо мы там видим?
мистические руны:
что произойдёт, если пробовать библиотеку с этими строками компилить для МК ATmega328 и ATmega32u4?
знаю одно - впихнуть невпихуемое не получится.
что произойдёт, если пробовать библиотеку с этими строками компилить для МК ATmega328 и ATmega32u4?
попробовал этот вариант сразу после сообщения
У Леонардо другие таймеры и в PWM.h нет определения для __AVR_ATmega32U4__, думаю дело в этом
Так ругается и на библу.
Так правильно ругается - ф-ция pwmWrite реализована в ATimerDefs.cpp и BTimerDefs.cpp и обернута в дефайн платы. Т.о. для 32u4 код ф-ции pmwWrite не будет подгружен и компилятор будет ругаться.
попробовал этот вариант сразу после сообщения
какой "вариант"?
ты видишь, что AVR_ATmega32U4 отсутсвует в библиотеке или нет?
какой "вариант"?
попробовал скомпилировать для дуины с процем ATmega328, с ней компилится. попробовал для ATmega32U4 не компилится.
попробовал скомпилировать для дуины с процем ATmega328, с ней компилится. попробовал для ATmega32U4 не компилится.
я не буду обзываться плохими словами и попытаюсь пояснить, по возможности, вежливо.
в тексте библиотеки видишь ATmega32U4?
чего? не видно? - с какого хрена библитека должна работать с ATmega32U4?
плохими не надо... Просто Ты спросил что произойдет, я ответил что произошло!
- Ты в баню?
- Нет, я в баню
- Аааа, я думал ты в баню
Кто за попкорном сгоняет? Кончается уже
Кто за попкорном сгоняет? Кончается уже
взял бы объяснил ТП, что не дуину компилить нужно, а мосг, если чего непонятно.
Как я ему могу объяснить, если он отвечает не на все вопросы, а только на те, что хочет отвечать.
Как я ему могу объяснить, если он отвечает не на все вопросы, а только на те, что хочет отвечать.
Подождите, а на какой вопрос я не ответил?
Я задал вопрос, почему "там" компилится, а "нетам" нет. Первый ответ - гениальный!
Это универсальный ответ на 90% вопросов, задаваемых здесь.
Второй пост дает ответ на вопрос, но не решает его.
Далше идет флуд про кузнецов и пихание непихуемого. Ну тут мой косяк, не спросил влоб "а можно ли подправить эту библу, чтоб заработало с леонардо?".
Дальше предложение:
А если так:
pwmWrite(((uint8_t)5, (uint8_t)(sensorValue / 4));
Низкий поклон(без всякого сарказма, хоть что-то предложил!)!
И еще, по поводу пихания непихуемого... Недавно купил экранчик, а библу под него найти не смог. Перепробовал несколько библитек с разных сайтов - нивпихуется ни куя. Начал ковать дальше... Матрица управлялась процем ILI9163. Полез в библу - нету его там. Начал изучать и пробовать разные варианты. В итоге с горем пополам впихнул невпихуемое. Но, радости от этого мало, т.к. после того как впихнул на дуине места ни куя не осталось. Начал ковать дальше, выкинул из библы экрана и шрифта все лишнее и впихнул невпихуемое так, что освободилось места почти на 10 кБ. Это я к тому, что не лезу на форум, пока не удостоверюсь, что сам не справлюсь!
По поводу ТП и кузнецов... Хотелось бы взглянуть в глаза того, кто никогда не ошибался, не задавал глупых вопросов и родившегося с лично запрограммированным МК в руках....
Теперь, Уважаемые форумчане! Помогите разобраться. Можно ли эту библу перешаманить под леонардо?
а я вот непойму. вам не хватает шимов в леонардо что вы библиотеку прикручиваете?
Нет! Хватает!
Встречный, возможно глупый вопрос: В чем разница в работе команд "analogWrite" и "pwmWrite" через библиотеку PWM.h?
незнаю какая частота шима в библиотеке PWM, если одинаковая разницы нет.
ну разве что микроконтроллер более загружен, так как программный шим обычно многовато ресурсов кушает
Нужна частота порядка 25-30 кГц.
Программный - это через "analogWrite"?
Кстати, с библиотекой PWM.h частоту шим задаешь в скетче строкой:
Тима, слабо прочитать вот это? http://arduino.ru/Hardware/ArduinoBoardLeonardo
Там русским по белому написано, сколько у Леонардо ШИМ выходов (аппаратных) и какой командой можно вывести ШИМ на эти ноги. Если потыкаться по ссылкам на указанной мной страничке, можно почитать и про ШИМ и фиг с ним.
PS На какие вопросы Вы не ответили я не буду терять своё время, чтобы бы Вам это доказать, ищите сами, мне придумывать ни к чему, я с Вами не знаком, чтобы на Вас наезжать.
Я это все уже прочитал и не раз. Мне нужно 3 выхода ШИМ. С количеством и нумерацией выходов вопросов нет! По ссылке написано "Частота ШИМ сигнала приблизительно 490 Hz." Мне этого мало! Поэтому и извращаюсь с библиотекой!
По поводу вопросов без ответа, переспросил не для того, чтобы Вы мне что-то доказали. Может мой ответ на вопрос прояснит ситуацию?!
Можно сделать аппаратный ШИМ примерно 32КГц. Пожалуйста, поищите по форуму, я уже несколько раз объяснял как это сделать. Если найдете и будет непонятно, а также покажете скетч, то я готов помочь, объяснить и проверить на своей лошадке (см.ниже).
3 выхода с ШИМ - легко, особенно на Леонардо (у меня он тоже есть, моя первая рабочая лошадка).
Ок! буду лазеть дальше. Если что - отпишусь!
Нашел, вот здесь мой первоисточник: http://arduino.ru/forum/proekty/arduinoide-i-atmega16-korrektiruem-yadro?page=1#comment-47102
Я посмотрел, теоретически что для Leonardo, что для ATmega16 одинаково таймер 1, потому можно добавить строку:
и получить на таймере 1 частоту ШИМ примерно 31КГц
Соответственно, на первом таймере у Леонардо выходы на 9 и 10 пинах. Можете пробовать.
PS функцию tone не используйте, а то таймер перепрограммируется и частота ШИМ вернется на штатную.
Вопрос тоже меня этот заинтересовал, решил вот попробовать платформу ARDUINO pro micro(ATmega32u4)(Базовая Leonardo), так вот тоже начал на грабли наступать, в моих проектах используется библиотека PWM.h, для реализации ШИМ с большей частотой, нежели 497гц, Таймеры-1 и 2, выводы для UNO; pro Mini; NANO; на ATmega328p; таймер-0(5-6выводы, частота 976Гц (Менять_ее_нельзя)); ТАЙМЕР-1(9-10выводы, частота по умолчанию 497Гц); ТАЙМЕР-2(3-11выводы, 11 - не_используется в либе PWM; частота 497Гц), то есть для таймеров ТАЙМЕР-1 и 2 можно задавать произвольную частоту через либу PWM.h
Как выше было сказано, в этой либе нет поддержки ATmega32u4, так вот вопрос, может уже в природе есть правленая либа (от автора) или кто-то уже для себя правил, буду за любую информацию признателен, или ссылку на либу.