Search
Write a publication
Pull to refresh

Comments 14

Все прекрасно, маленький комментарий: «И все верно — замер делается относительно опорного внутреннего напряжения. Но ведь оно падает!». Внутренний vref это в большинстве случаев просто диод, на котором падает всегда определенное напряжение. Теория тут www.ti.com/lit/eb/slyc147a/slyc147a.pdf
UFO landed and left these words here

в том-то и дело, что в нем нет внутреннего VRef (о чем ниже коллега, вот, тоже написал). В даташите об этом прямо написано. Используйте GND или VCC и привет :)


Так что, вопрос остается открытым.

Красота!
Тыц
Прям ностальгией веет и теплотой! Как говаривал мой преподаватель по электронике: «Вечно можно смотреть на: поток воды, пламя костра, процесс творчества другого человека и перемаргивающиеся светодиоды»
Посчитал что «не относится к теме статьи напрямую»
Объясните пожалуйста смысл этих строк:
void put_str_P(PGM_P str){
    static PGM_P s;
    s=str;
    while (pgm_read_byte(s)) put_char( pgm_read_byte(s++) );
}


Почему не просто:
void put_str_P(PGM_P str){
    while (pgm_read_byte(str)) put_char( pgm_read_byte(str++) );
}

Хе :) это, судя по всему, какой-то отладочный ошметок. Спасибо.

проснулся и понял, что нет же… PGM_P — это указатель. Следовательно, приращение его внутри функции будет его менять. Указатель переприсвоен, чтобы сделать передаваемую строку reusable.


я, правда, ниже еще разок посмотрел, и вроде-бы нигде это не пригождается. Но интенция моя была, судя по всему, именно такова.

Отнюдь. Всё что происходить внутри функции остаётся внутри функции. Если конечно не трогать саму память на которую указывает указатель. А эта память уже во флеше, так что испортить её сложно. Если два раза подряд вызвать этот код:
void put_str_P(PGM_P str){
    while (pgm_read_byte(str)) put_char( pgm_read_byte(str++) );
}

то строка будет передана два раза с начала.

Хе :) это, судя по всему, какой-то отладочный ошметок. Спасибо.

Sign up to leave a comment.

Articles