Вопрос, вероятно, нубский, только начинаю вылезать из скорлупы IDE. С регистрами портов более менее все понятно, но пока не могу понять как считать состояние аналогового пина. В PINx, насколько понимаю состояние битов пинов в цифровом виде. Подскажите пожалуйста или дайте ссылку с примером или объяснением.
Для получение аналогового сигнала используется АЦП (ADC). К примеру - http://www.doneathome.ru/archives/472, http://easyelectronics.ru/avr-uchebnyj-kurs-ispolzovanie-acp.html и т.д. далее ищите avr ADC (АЦП).
Спасибо, то что надо. Не думал однако, что считать в аналоговом виде настолько сложнее. И что, получается, если на МК нет порта А, то и АЦП нет?
Не сразу понял, о чем речь. Наверно Вы говорите о примере по 1 ссылке, там описание работы ATmega32, у Вас скорее всего ардуина. У ардуин АЦП на других портах. Почему дал эти ссылки, там подробно расписано о принципах работы с АЦП. Разумеется, регистры могут незначительно отличатся в зависимости от самих чипах. Поэтому придется читать такие pdf - http://www.atmel.com/images/atmel-8...pa-168a-168pa-328-328p_datasheet_complete.pdf. Или искать в сети описание для конкретного чипа, к примеру ATmega328 - http://avrprog.blogspot.com/2013/03/blog-post_13.html, вот пример работы http://avrprog.blogspot.com/2013/04/adcc.html. Порты АЦП в ардуинах. Ардуины на базе ATmega168/328 - https://www.arduino.cc/en/Hacking/PinMapping168. ATmega2560 на K и F - https://www.arduino.cc/en/Hacking/PinMapping2560. ATmega 32U4 на F - https://www.arduino.cc/en/Hacking/PinMapping32u4. UPD. Это будет лишь по началу. Между чипами, очень много общего. К примеру I2C один в один на перечисленных чипах ардуины (только пины разные). UART лишь небольшие изменения связанные с тем, что где-то больше, где-то меньше и т.д.
Любое знакомство с AVR, да и STM, лучше начинать с поиска даташита на конкретный чип. Просто вбиваем в поиск название чипа. Многие вопросы просто отпадут сами собой. Как показал Megakoteyka.
Код (Text): int Volts = 0; // Вольтметр void setup() { } void loop() { Volts = analogRead_C(2); // РВ4 в ATtiny13 } аналог Код (Text): unsigned int analogRead_C(byte channel){ ADMUX = channel; // ADC pin ADCSRA |= 1<<ADEN; ADCSRA |= 1<<ADSC; while(!(ADCSRA & (1<<ADIF))); ADCSRA |= 1<<ADIF; byte low = ADCL; byte high = ADCH; ADCSRA &= ~(1 << ADEN); // отключаем АЦП, для уменьшения энергопотребления return (high << 8) | low; } (с)перто
Так, с этим разобрались. Теперь не получается добавить Tiny 13 в IDE. Делаю как показано здесь, не видит. Пробовал переписать в другие папки и подпапки, не помогает. Папки, подскажите что сделать? Помогите оторваться. ) Да, IDE 1.6.5. upd: удалось установить надстройку по инструкции отсюда, но там нет 13, начинается с 45. Существует ли поддержка 13 в природе?
По ссылке сходи там вкусно имхо! http://arduino.ru/forum/programmirovanie/attiny13a-101-primenenie#comment-27645 Плюс тут вкусно написано: Краткое пособие по микроконтроллерам AVR. Часть 1.
Вот с версией IDE и могут быть проблемы. В версии 1.5 они поменяли формат файла boards с описанием плат и МК. В результате образовалась некоторая несовместимость. Для примера. Тут: http://code.google.com/p/arduino-tiny/ выложены два разных пакета поддержки AtTiny для версий IDE до 1.5 и после. Но там нет поддержки AtTiny13. Наверное, надо поискать что-то аналогичное на ресурсах, посвященных AtTiny13, т.е. версию для IDE 1.5 и более поздних. Или по аналогии с тем, как оно сделано в пакетах по ссылке, сформировать добавку с учетом требований новой версии IDE.
Да, опередили, ее я и поставил о чем дописал выше. На 13 найти пока не могу. Зайду с другого боку, AVR Studio поддерживает функции IDE? Может быть есть библиотека для начала?
Всем спасибо, все получилось. Единственное что пока не понял, пины А0 и А1 не работают должным образом, но с А2 и А3 все ок. Собрал простую тестовую схему по такому типу, потенциометр будучи подключенным в А2 или А3 прекрасно руководит лампочкой, но через А0 работает как тумблер, то есть в определенном положении выставляет либо HIGH либо LOW без промежутков. В А1 вообще никак не реагирует на происходящее. Не пойму почему такая разница.
Сделал первую нехитрую поделку на базе Tiny13 - бегущий огонёк при помощи 74HC595. Дебют, так сказать, аппаратного отрыва от Ардуины. Правда пока что прошиваю через Мегу, ибо программатор пока не спаял, да и вообще не вижу чем он удобнее. Жду небольшую партию Tiny85, там на 8Кб разгуляться можно. ) Думаю идея применять малипусек везде, где хватит их возможностей, правильная.
AVR Studio - это другая IDE. Если нужны функции библиотеки Wiring - подключайте ее файлы в проект вручную.