Arhat.h, Замена типовых функций "одной командой".

Клапауций 232
Offline
Зарегистрирован: 05.04.2016

<sensored>

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Пока не разобрался, но, похоже, какие-то глюки с pinOut() для пина 14 (т.е. A0, но обращение как к 14) для 328. Завтра посмотрю подробнее.

Всех с праздником!

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Обновитесь с гитхаба. Нумерация аналоговых пинов должна продолжать основные. Там был косяк - восстановления старой версии по ошибке. Сейчас уже убрано.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Повторно скачал архив, но там - один в один, что и раньше.

Посмотрел пинаут, заменил:

 

#define OREG14    PORTB
#define OREG15    PORTB

#define BSET14    SET_MASK_6
#define BCLR14    CLR_MASK_6

#define BSET15    SET_MASK_7
#define BCLR15    CLR_MASK_7

#define BSET16    SET_MASK_6
#define BCLR16    CLR_MASK_6

#define BSET17    SET_MASK_0
#define BCLR17    CLR_MASK_0

#define BSET18    SET_MASK_1
#define BCLR18    CLR_MASK_1

#define BSET19    SET_MASK_2
#define BCLR19    CLR_MASK_2

 

на:

 

#define OREG14    PORTC
#define OREG15    PORTC

#define BSET14    SET_MASK_0
#define BCLR14    CLR_MASK_0

#define BSET15    SET_MASK_1
#define BCLR15    CLR_MASK_1

#define BSET16    SET_MASK_2
#define BCLR16    CLR_MASK_2

#define BSET17    SET_MASK_3
#define BCLR17    CLR_MASK_3

#define BSET18    SET_MASK_4
#define BCLR18    CLR_MASK_4

#define BSET19    SET_MASK_5
#define BCLR19    CLR_MASK_5
 

Кстати, обнаружил в файле и такие строчки:

#define OREG22    PORTC
#define BSET22    SET_MASK_5  
#define BCLR22    CLR_MASK_5

 

Мне кажется, они лишние.

 

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Вот, надо чтобы кто-то сделал и до конца проверил этот файл распиновки для 48p, 88p, 168p, 328p .. я его правил несколько раз, кое-что проверял со своей УНО 328p, и уже получил несколько разных замечаний по его распиновке .. или для разных моделей Ардуино плат (ПРО, МИНИ, НАНО, УНО) надо делать свой такой отдельный файл или как? Может кто-нибудь показать ГДЕ взять корректные распальцовки этих плат и чем они отличаются друг от друга? Часто процессор один и тот же .. а "пожелания" разнятся .. могу предположить, что из-за разной распальцовки самих плат. Но у меня есть только УНО .. моя НАНО до меня так и не дошла, вернуть бабки не "успел" (протормозил тогда по незнанию как эти споры обостряются) .. закупать что-то для развития этого файла - только на "пожертвования" .. их приток последнее время сдулся, хотя на гитхабе вижу примерно по 25 посещений в сутки. Видимо "кризис". :)

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Лично я, не долго думая, брал информацию отсюда: http://arduino.ru/forum/obshchii/pin-mapping-sootvetstvie-vyvodov-i-registrov

У меня сошлось.

После отладки залью в Pro Mini - проверю на ней.

В принципе, есть также Nano и Mega. На последней, я так понимаю, проверять не нужно, а на Nano могу при случае проверить.

Но, судя по рисункам, у всех трех: Uno, Nano, Pro Muni распиновка совпадает.

Да, и еще: судя по тем же рисункам и таблицам, A6 и A7, присутствующие в Nano и Pro Mini, на порты не проецируются, поэтому в файлах являются лишними строчки не только с суффиксами "22", но также "20" и "21".

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Наконец-то дошли ручки и разобрался. На самом деле описание 328p я делал по даташиту, имея какую-то картинку для УНО перед глазами .. их полно в Сети. Нумерация пинов 14,15,16 - сделана на ноги, которые у дунек как-бы "не подключены" .. это XTAL1, XTAL2 и RESET .. они заняты. Теоретически даташит вроде как не запрещает их управление из программ и поэтому они у меня попали в файл.

А поскольку нумерация аналоговых ножек по идее должна продолжать обстальные, то аналоги и были выведены на 18..22.

В общем поправил гитхаб таким образом: основные ножки завершаются номером 13, каковой и есть последний у дунек. 14..19 - номера аналоговых входов, подчистил. Номера 20,21,22 - теперь относятся к "расширенной части": XTAL1, XTAL2 и RESET соответственно. Вдруг кто-то их таки юзает каким-то боком ..

P.S. можно было ничего не менять, а просто пользоваться макроопределениями номеров ножек .. ничего бы не поменялось.

P.P.S На какие порты и каких регистров подключены выводы A6,A7 я так и не понял .. в даташите на 328p ничего нет по этому поводу.. или я не нашел.

Yarik.Yar
Offline
Зарегистрирован: 07.09.2014

A6 и A7 можно использовать только как ADC6 и ADC7 (в ADMUXе)

ЕвгенийП
ЕвгенийП аватар
Онлайн
Зарегистрирован: 25.05.2015

Arhat109-2 пишет:

P.P.S На какие порты и каких регистров подключены выводы A6,A7 я так и не понял .. в даташите на 328p ничего нет по этому поводу.. или я не нашел.

Или не нашёл. На стр. 252 чёрным по белому написано "ADC pins ADC7 and ADC6 do not have digital input buffers". Т.е. работать цифровыми они не умеют и ни к какому цифровому порту не подключены. Они чисто аналоговые. mux - 110 и 111 соответсвенно.

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Yarik.Yar, Спасибо. То есть я правильно решил что никаких дополнительных описаний в виде AnalogA6, они не требуют. Меня этот вопрос тогда беспокоил.

Отредактировано Yarik.Yar, 19.05.2016, 17:54: Давайте-ка без обзывательств.

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Спасибо что отредактировали.

По здравому размышлению и после последних срачей, я таки принял решение покинуть местное сообщество. Дальнейшего развития этой библиотеки далее не будет, скажем не планируется.

По причинам: не вижу смысла что-либо делать в имеющихся условиях "де факто" (помощи не дождался ни разу; при 20-25 ежедневных посещениях гитхаба поимел тут кучу поливаний меня грязью .. нафиг оно мне? Ну и ребенок уже вполне программирует сам и не нуждается в развитии библиотеки, а мне оно уже не интересно.

Так что, если что-то где-то надо подправить - пишите на мыло. Но, врядли буду делать, ибо есть иные задачи...

Всем, До свидания.

Yarik.Yar
Offline
Зарегистрирован: 07.09.2014

До свидания, удачи!

Logik
Offline
Зарегистрирован: 05.08.2014

Пака, пака...

_mikka
Offline
Зарегистрирован: 01.11.2015

Досвидания, спасибо!

_mikka
Offline
Зарегистрирован: 01.11.2015

Народ, помогите, не могу откомпилировать пример:

Compiling 'MAGIC_light' for 'Arduino Mini w/ ATmega328'
MAGIC_light.ino:In function 'void loop()'
arhat.h:563:44: error: 'adc_read' was not declared in this scope
MAGIC_light.ino:in expansion of macro 'analogRead'
Error compiling

Сам код:

#define _ARHAT_ 

#include <C:\Program Files (x86)\Arduino\libraries\ARHAT_H-master\arhat.h>


#define blinkWait    150

void blink13(uint8_t wait)                // моргалка встроенным светодиодом
{
  digitalWrite(pinLed, HIGH);
  delay(wait);
  digitalWrite(pinLed, LOW);
  delay(wait);
}

void setup()
{

  /* add setup code here */
    adcOn();                                // включаем АЦП (ADC)
    pinMode(pinLed, OUTPUT);                // 13 ножка "на выход"
    pwmSet(pin5);                          // 44 ножка - управление яркостью

}

void loop()
{

  /* add main program code here */
    uint16_t      readedVoltage;

    readedVoltage = analogRead(Analog0);    // читаем напряжение на регуляторе [0..1023]
    analogWrite(pin5, readedVoltage/4 );   // уменьшаем его до диапазона [0..255] и устанавливаем как яркость.
    blink13(150);                           // контрольная моргалка "код работает".

}

 

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Файл arhat.h, строка 563 должна выглядеть так:

#define analogRead(p)           (adcRead(p))

надо бы поправить.

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Попробовал подчистить "свою" тему в рамках эксперимента .. блин, "не так всё пгосто оказывается"!

Yarik.Yar
Offline
Зарегистрирован: 07.09.2014

Ага, по посту за раз удалять..