Комментарии 14
Все прекрасно, маленький комментарий: «И все верно — замер делается относительно опорного внутреннего напряжения. Но ведь оно падает!». Внутренний vref это в большинстве случаев просто диод, на котором падает всегда определенное напряжение. Теория тут www.ti.com/lit/eb/slyc147a/slyc147a.pdf
0
Очень красиво и романтично)
+1
Красота!
Тыц
Прям ностальгией веет и теплотой! Как говаривал мой преподаватель по электронике: «Вечно можно смотреть на: поток воды, пламя костра, процесс творчества другого человека и перемаргивающиеся светодиоды»
+1
Объясните пожалуйста смысл этих строк:
Почему не просто:
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++) );
}
0
Хе :) это, судя по всему, какой-то отладочный ошметок. Спасибо.
0
проснулся и понял, что нет же… PGM_P — это указатель. Следовательно, приращение его внутри функции будет его менять. Указатель переприсвоен, чтобы сделать передаваемую строку reusable.
я, правда, ниже еще разок посмотрел, и вроде-бы нигде это не пригождается. Но интенция моя была, судя по всему, именно такова.
0
Отнюдь. Всё что происходить внутри функции остаётся внутри функции. Если конечно не трогать саму память на которую указывает указатель. А эта память уже во флеше, так что испортить её сложно. Если два раза подряд вызвать этот код:
то строка будет передана два раза с начала.
void put_str_P(PGM_P str){
while (pgm_read_byte(str)) put_char( pgm_read_byte(str++) );
}
то строка будет передана два раза с начала.
0
Хе :) это, судя по всему, какой-то отладочный ошметок. Спасибо.
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Я подарю тебе маленькую вселенную