Длительность в таймере watchdog зависит от питания и температуры, поэтому частота определяется через интервал значений.
С данным скетчем получилось заменить кварц с 16 на 8 МГц (как описано в посте 9) и вывести правильный результат (fcpu=16, freq=8) в сериал монитор, но для заливки нового скетча кварц на 16 МГц нужно возвращать обратно.
Вариант с FIRST_PIN и LAST_PIN позволяет выбрать нужный диапазон для тестирования. Например пины 0 и 1 при этом тестировании всегда заняты, так как работают на сериал-монитор, поэтому их можно исключить из этого диапазона. А для Mega2560 диапазон наоборот можно расширить на все пины.
Всё не предусмотришь, но скетч позволяет подстроить его под нужные проверки.
dimax, подскажи, пожалуйста - для atmega8 выдаёт сигнатуру 406463, ожидал что-то похожее на 1E9307
Посмотрел в даташит на мегу328 -там есть раздел "Reading the Signature Row from Software " А в даташите на мегу 8 такого раздела нет. Похоже мега8 не поддерживает режим само-чтения сигнатуры, и считанные байтики -просто дамп первых адресов памяти.. (
Посмотрел в даташит на мегу328 -там есть раздел "Reading the Signature Row from Software " А в даташите на мегу 8 такого раздела нет. Похоже мега8 не поддерживает режим само-чтения сигнатуры, и считанные байтики -просто дамп первых адресов памяти.. (
Тоже обратил внимание на неправильные показания Mega2560, но пока не дошли руки до того, чтобы разобраться. Скорее всего другими командами нужно выставлять опорное напряжение (в Меге их два) и считывать температуру (если там есть датчик).
Хотя я и сделал вывод названия процессора, но пока так и не разобрался как Ардуина определяет какой процессор в ней: считывает какой-то код чипа или название просто записывается при прошивке. Это важно при организации ответвлений в скетче при разных процессорах.
Если есть программный код (или информация) на эти темы, то они будут с благодарностью добавлены в следующие версии скетча.
Хотя я и сделал вывод названия процессора, но пока так и не разобрался как Ардуина определяет какой процессор в ней: считывает какой-то код чипа или название просто записывается при прошивке.
Да никак не определяет, берёт выбранный пользователем МК из boards.txt при компиляции. Можете прикрутить настоящий детект чипа -по сигнатуре.
Доброе время. Скетчик прикольный, спасибо за труд по его написанию. Не пойму только почему у меня на платах фейлы стоят в одинаковых местах, это баг или фича?
Test of short circuit on GND or VCC: Pin: 0 Low: Fail High: Ok Pull Up: Ok
Pin: 1 Low: Ok High: Fail Pull Up: Fail
Pin: 2 Low: Ok High: Ok Pull Up: Ok
Pin: 3 Low: Ok High: Ok Pull Up: Ok
Pin: 4 Low: Ok High: Ok Pull Up: Ok
Pin: 5 Low: Ok High: Ok Pull Up: Ok
Pin: 6 Low: Ok High: Ok Pull Up: Ok
Pin: 7 Low: Ok High: Ok Pull Up: Ok
Pin: 8 Low: Ok High: Ok Pull Up: Ok
Pin: 9 Low: Ok High: Ok Pull Up: Ok
Pin: 10 Low: Ok High: Ok Pull Up: Ok
Pin: 11 Low: Ok High: Ok Pull Up: Ok
Pin: 12 Low: Ok High: Ok Pull Up: Ok Pin: 13 Low: Ok High: Ok Pull Up: Fail
Pin: 14 Low: Ok High: Ok Pull Up: Ok
Pin: 15 Low: Ok High: Ok Pull Up: Ok
Pin: 16 Low: Ok High: Ok Pull Up: Ok
Pin: 17 Low: Ok High: Ok Pull Up: Ok
Pin: 18 Low: Ok High: Ok Pull Up: Ok
Pin: 19 Low: Ok High: Ok Pull Up: Ok
Доброе время. Скетчик прикольный, спасибо за труд по его написанию. Не пойму только почему у меня на платах фейлы стоят в одинаковых местах, это баг или фича?
Test of short circuit on GND or VCC:
Pin: 0 Low: Fail High: Ok Pull Up: Ok
Pin: 1 Low: Ok High: Fail Pull Up: Fail
Pin: 13 Low: Ok High: Ok Pull Up: Fail
Пины 0 и 1 относятся к Serial Port, через который Ардуина соединяется с компьютером. На пине 13 находится светодиод (на пинах 0 и 1 кстати тоже).
Test of short circuit on GND or VCC:
Pin: 0 Low: Fail High: Ok Pull Up: Ok
Pin: 1 Low: Ok High: Fail Pull Up: Fail
Pin: 2 Low: Ok High: Ok Pull Up: Ok
Pin: 3 Low: Ok High: Ok Pull Up: Ok
Pin: 4 Low: Ok High: Ok Pull Up: Ok
Pin: 5 Low: Ok High: Ok Pull Up: Ok
Pin: 6 Low: Ok High: Ok Pull Up: Ok
Pin: 7 Low: Ok High: Ok Pull Up: Ok
Pin: 8 Low: Ok High: Ok Pull Up: Ok
Pin: 9 Low: Ok High: Ok Pull Up: Ok
Pin: 10 Low: Ok High: Ok Pull Up: Ok
Pin: 11 Low: Ok High: Ok Pull Up: Ok
Pin: 12 Low: Ok High: Ok Pull Up: Ok
Pin: 13 Low: Ok High: Ok Pull Up: Ok
Pin: 14 Low: Ok High: Ok Pull Up: Ok
Pin: 15 Low: Ok High: Ok Pull Up: Ok
Pin: 16 Low: Ok High: Ok Pull Up: Ok
Pin: 17 Low: Ok High: Ok Pull Up: Ok
Pin: 18 Low: Ok High: Ok Pull Up: Ok
Pin: 19 Low: Ok High: Ok Pull Up: Ok
Ну можно видеть, что если трехзначная температура - то перевести ее к соответствию, не напрягаясь тем, что за зверь тестируется. Имхо. Ну хотя бы для начала.
Нашёл кучку сигнатур AVR-контроллеров: http://www.gammon.com.au/forum/?id=11633
Появилась возможность разделять код для разных контроллеров (теперь Mega2560 правильно напряжение питания показывает).
Версия 1.07
В скетче заложено измерение напряжения питания и внутренней температуры ATmega32U4 (Леонардо) и ATtiny85, но проверить пока не могу из-за их отсутствия.
Не верная температура. Больше на температуру по Фаренгейту похоже. В комнате как раз 23 градуса
SysInfo for Arduino version 1.07
F_CPU = 16000000
Frequency = 16 MHz
CPU_IDE = ATmega32U4
Flash Memory = 32767 bytes
Free RAM memory = 1638 bytes
Signature = 1E 95 87
Fuses (Low/High/Ext/Lock) = FF D8 CB EF
Processor = ATmega32U4
Flash memory size = 32 kB
VCC = 4650 mV
Internal Temperature = -10.1 C
Test of short circuit on GND or VCC:
Pin: 0 Low: Ok High: Ok Pull Up: Ok
Pin: 1 Low: Ok High: Ok Pull Up: Ok
Pin: 2 Low: Ok High: Ok Pull Up: Ok
Pin: 3 Low: Ok High: Ok Pull Up: Ok
Pin: 4 Low: Ok High: Ok Pull Up: Ok
Pin: 5 Low: Ok High: Ok Pull Up: Ok
Pin: 6 Low: Ok High: Ok Pull Up: Ok
Pin: 7 Low: Ok High: Ok Pull Up: Ok
Pin: 8 Low: Ok High: Ok Pull Up: Ok
Pin: 9 Low: Ok High: Ok Pull Up: Ok
Pin: 10 Low: Ok High: Ok Pull Up: Ok
Pin: 11 Low: Ok High: Ok Pull Up: Ok
Pin: 12 Low: Ok High: Ok Pull Up: Ok
Pin: 13 Low: Ok High: Ok Pull Up: Ok
Pin: 14 Low: Ok High: Ok Pull Up: Ok
Pin: 15 Low: Ok High: Ok Pull Up: Ok
Pin: 16 Low: Ok High: Ok Pull Up: Ok
Pin: 17 Low: Ok High: Ok Pull Up: Ok
Pin: 18 Low: Ok High: Ok Pull Up: Ok
Pin: 19 Low: Ok High: Ok Pull Up: Ok
Не верная температура. Больше на температуру по Фаренгейту похоже. В комнате как раз 23 градуса
В даташите ATmega32u4 нет формулы для температурного датчика, поэтому в скетче применяется формула для ATmega328p (возможно для ATmega32u4 она не подходит).
Из статьи следует, что от полученной датчиком температуры нужно только отнять 273. Для более точного измерения к полученной температуре добавляют/отнимают температуру смещения, которая у каждого чипа своя.
SysInfo for Arduino version 1.07
F_CPU = 16000000
Frequency = 16 MHz
CPU_IDE = ATmega328P
Flash Memory = 32767 bytes
Free RAM memory = 1085 bytes
MCU ID = 57 36 34 31 30 38 FF 0B 27 04
Signature = 1E 95 0F
Fuses (Low/High/Ext/Lock) = FF DA FD FF
Processor = ATmega328P
Flash memory size = 32 kB
VCC = 5046 mV
Internal Temperature = 36.6 C
Test of short circuit on GND or VCC:
Pin: 0 Low: Fail High: Ok Pull Up: Ok
Pin: 1 Low: Ok High: Fail Pull Up: Fail
Pin: 2 Low: Ok High: Ok Pull Up: Ok
Pin: 3 Low: Ok High: Ok Pull Up: Ok
Pin: 4 Low: Ok High: Ok Pull Up: Ok
Pin: 5 Low: Ok High: Ok Pull Up: Ok
Pin: 6 Low: Ok High: Ok Pull Up: Ok
Pin: 7 Low: Ok High: Ok Pull Up: Ok
Pin: 8 Low: Ok High: Ok Pull Up: Ok
Pin: 9 Low: Ok High: Ok Pull Up: Ok
Pin: 10 Low: Ok High: Ok Pull Up: Ok
Pin: 11 Low: Ok High: Ok Pull Up: Ok
Pin: 12 Low: Ok High: Ok Pull Up: Ok
Pin: 13 Low: Ok High: Ok Pull Up: Ok
Pin: 14 Low: Ok High: Ok Pull Up: Ok
Pin: 15 Low: Ok High: Ok Pull Up: Ok
Pin: 16 Low: Ok High: Ok Pull Up: Ok
Pin: 17 Low: Ok High: Ok Pull Up: Ok
Pin: 18 Low: Ok High: Ok Pull Up: Ok
Pin: 19 Low: Ok High: Ok Pull Up: Ok
Micro, температура ушла в минуса:
SysInfo for Arduino version 1.07
F_CPU = 16000000
Frequency = 16 MHz
CPU_IDE = ATmega32U4
Flash Memory = 32767 bytes
Free RAM memory = 1631 bytes
MCU ID = 59 34 39 32 39 35 15 0D 07 11
Signature = 1E 95 87
Fuses (Low/High/Ext/Lock) = FF D8 FB FF
Processor = ATmega32U4
Flash memory size = 32 kB
VCC = 4957 mV
Internal Temperature = -5.2 C
Test of short circuit on GND or VCC:
Pin: 0 Low: Ok High: Ok Pull Up: Ok
Pin: 1 Low: Ok High: Ok Pull Up: Ok
Pin: 2 Low: Ok High: Ok Pull Up: Ok
Pin: 3 Low: Ok High: Ok Pull Up: Ok
Pin: 4 Low: Ok High: Ok Pull Up: Ok
Pin: 5 Low: Ok High: Ok Pull Up: Ok
Pin: 6 Low: Ok High: Ok Pull Up: Ok
Pin: 7 Low: Ok High: Ok Pull Up: Ok
Pin: 8 Low: Ok High: Ok Pull Up: Ok
Pin: 9 Low: Ok High: Ok Pull Up: Ok
Pin: 10 Low: Ok High: Ok Pull Up: Ok
Pin: 11 Low: Ok High: Ok Pull Up: Ok
Pin: 12 Low: Ok High: Ok Pull Up: Ok
Pin: 13 Low: Ok High: Ok Pull Up: Ok
Pin: 14 Low: Ok High: Ok Pull Up: Ok
Pin: 15 Low: Ok High: Ok Pull Up: Ok
Pin: 16 Low: Ok High: Ok Pull Up: Ok
Pin: 17 Low: Ok High: Ok Pull Up: Ok
Pin: 18 Low: Ok High: Ok Pull Up: Ok
Pin: 19 Low: Ok High: Ok Pull Up: Ok
В setup() стоит добавить код, рекомендуемый для Leonardo: while (!Serial) { ; }
MCU ID документирован для ATMega328PB, но функция чтения работает и на других, только неизвестно насколько корректно. На различных 328-х ID были разные.
void ID() {
// Note: Unique MCU ID specified ATMega328PB and may not exist or correct on other MCU's.
// Interrupts must be disabled before boot_signature_byte_get will be called to avoid code execution break
uint8_t i, sByte;
Serial.print(F("MCU ID = "));
noInterrupts();
for (i = 0x0E ; (0x0E + 10) > i; i++) {
sByte = boot_signature_byte_get(i);
if (sByte < 16) Serial.print("0");
Serial.print(sByte, HEX);
Serial.print((char) 0x20);
}
interrupts();
Serial.println();
}
P.S. Кстати, по ссылке, что выше постами, скетчем в статье температура на Micro отдается похожей на правду - 32C.
Я тут потуплю, конечно, и попрошу таки ответить. Может, кто для arduino DUE скетч для чтения/записи всех её портов выложит. Многие люди, купившие такую плату, перед тем, как подтвердить её получение, смогут своевременно произвести проверку покупки с помощью такого скетча. Заодно станет меньше отзывов о товаре, подобных "всё отлично. Получил, но пока не проверил. На вид всё хорошо.".
P.S.: Желающие устроить дедовщину и страждущие на нищих, новичках, студентах, и им подобных категориях людей баблишко поднять - лесом идите, - и вам спокойнее, и карму не испортите :)
Я тут потуплю, конечно, и попрошу таки ответить. Может, кто для arduino DUE скетч для чтения/записи всех её портов выложит. Многие люди, купившие такую плату, перед тем, как подтвердить её получение, смогут своевременно произвести проверку покупки с помощью такого скетча. Заодно станет меньше отзывов о товаре, подобных "всё отлично. Получил, но пока не проверил. На вид всё хорошо.".
P.S.: Желающие устроить дедовщину и страждущие на нищих, новичках, студентах, и им подобных категориях людей баблишко поднять - лесом идите, - и вам спокойнее, и карму не испортите :)
Так что по факту, дядя, твоя задумка не только наивная (напишите мне код, хаха) - но еще и бестолковая
При всём уважении к вашим знаниям, предложу впредь читать пост полностью, до последнего знака препинания, а не только то, что хочется.
Возможно, с формулировкой что-то не так у меня, можно и подкорректировать было.
Смысл не понятен? - получил покупатель плату BMS 5ch, а часть ячеек аккумуляторов ещё месяца 1.5-2 в пути будут. Как проверить BMS, как вернуть свои через спор, если BMS неисправна? Никак.
Зачем ждать кого-то, возьмите да сами напишите скетч. А потом сюда выложите, людям польза будет.
Есть у Антона Павловича изречение, вложенное им в уста его персонажа, Дмитрия Ионовича Старцева: "Есть люди, не умеющие писать романы, и есть люди, не умеющие скрыть этого.".
Естественно выложу, когда будет такой, своими знаниями всегда стараюсь делиться с интересующимися, зачастую на безвозмездной основе. Специалист и сам часто быстрее разберется, иногда просто надо, как говаривал @Starichok снять "... с тормозов инерции мышления...", а новичок, или просто желающий повторить тот, или иной проект на arduino, в написание кода не полезет, новичку и на других этапах граблей хватит.
Итого, резюмирую. Кошак классный на аве, люблю этих хищников. Ваш вариант кода, безусловно, до интересующихся постараюсь за вашим авторством принести на различные тематические ресурсы.
P.S.: Или я неправильно вас имел неосторожность уразуметь?
Так что по факту, дядя, твоя задумка не только наивная (напишите мне код, хаха) - но еще и бестолковая
При всём уважении к вашим знаниям, предложу впредь читать пост полностью, до последнего знака препинания, а не только то, что хочется.
Возможно, с формулировкой что-то не так у меня, можно и подкорректировать было.
Смысл не понятен? - получил покупатель плату BMS 5ch, а часть ячеек аккумуляторов ещё месяца 1.5-2 в пути будут. Как проверить BMS, как вернуть свои через спор, если BMS неисправна? Никак.
Так вот, программка по ссылке занимается проверкой именно GPIO, но никак не портов.
Опять же, кто мешает воспользоваться этой программкой для Arduino Due?
Ну и, наконец, в микроконтроллере кроме GPIO есть еще масса интересных и полезных вещей:
- память оперативная,
- flash-память,
- EEPROM,
- аналогово-цифровые и цифро-аналоговые преобразователи,
- таймеры,
- контроллер прерываний,
- контроллер ПДП,
- масса аппаратных интерфейсов: UART, I2C, SPI, CAN...
...
да даже по поводу GPIO - у меня вот есть контроллер, который на одном выводе в качестве логического нуля вместо 0.2 В выдает 1.3 В. Для КМОП логики это, вроде, безразлично, для ТТЛ - под вопросом, а для запирания транзистора - явно недостаточно. Так что эта "простейшая программка" даже GPIO полностью проверить не сможет.
Поэтому подтверждаю: идея наивная и бестолковая.
Нет, тщательно проверить микроконтроллер или плату Ардуино - вполне возможно, но невозможно сделать это лишь с использование внутренних ресурсов, - необходим достаточно дорогостоящий испытательный стенд.
GPIO проверить можно - нужно просто позамыкать их друг на друга + пара резисторов конденсаторов + пара месяцев на разработку (вот тут наш халявщик и пролетает). И протоколы так же можно проверить, и таймеры друг с другом сравнить и с полученным от компа сигналом, и память забить разными значениями можно. Только это еще минимум полгода.
дружеский совет - смените область применения своих потугов - экстрасенс вы никудышный в отношении меня оказались.
andriano пишет:
Сэр понимает разницу между терминами port и GPIO?
Так вот, программка по ссылке занимается проверкой именно GPIO, но никак не портов.
Сэров не встречал, сам из народа. Я разницу понимаю, с формулировками иногда бывает затык.
В общем-то нет так нет, умолять не собирался, нужды в таком коде не испытываю. Так-то народ на ресурсе неплохой, много знающих, правда, бывает у некоторых представителей стремление поделить всех на "все равны, но некоторые равнее других", с причислением себя любимых к последним и некоторым всё мерещится, что хлеб у них кто-то всё время пытается отобрать.
Итог: желающие потрындеть - вэлкам! пусть и в этой теме среди флуда и показательных Я-каний сложно станет найти полезную информацию :)
... Сэр понимает разницу между терминами port и GPIO? ...
Как индийские программисты назовут в их мануалах так и будет. Открываем мануал AVR читаем I/O-Ports ...All AVR ports have true Read-Modify-Write functionality... Открываем STM32 мануал : GPIOs (general-purpose inputs/outputs)... Each of the GPIO pins can be configured by software as output (push-pull or open-drain), as input (with or without pull-up or pull-down) or as peripheral alternate function.
Ну в чем разница? Ноги процессора. Функционал почти одинаков. Названия разные.
... Сэр понимает разницу между терминами port и GPIO? ...
Как индийские программисты назовут в их мануалах так и будет. Открываем мануал AVR читаем
1.
Цитата:
I/O-Ports ...All AVR ports have true Read-Modify-Write functionality...
Открываем STM32 мануал :
2.
Цитата:
GPIOs (general-purpose inputs/outputs)... Each of the GPIO pins can be configured by software as output (push-pull or open-drain), as input (with or without pull-up or pull-down) or as peripheral alternate function.
Ну в чем разница? Ноги процессора. Функционал почти одинаков. Названия разные.
А ничего, что в первом случае речь идет о портах (т.е. логических устройствах, находящихся в адресном пространстве портов ввода-вывода процессора), а во втором - о пинах (аппаратных выводах микросхемы, которые могут служить электрическими входами или выходами)?
Порт может управлять несколькими пинами, а для управления одним пином в порту может быть предусмотрено несколько битов. Кроме того, порты служат для управления не только GPIO, но также таймерами, специализированными интерфейсами и прочими периферийными устройствами.
Идем дальше, цитата AVR : Each port pin consists of three register bits: DDxn, PORTxn, and PINxn. As shown in the Register Description, the DDxn bits are accessed at the DDRx I/O address, the PORTxn bits at the PORTx I/O address, and the PINxn bits at the PINx I/O address.
Достаточно было Each port pin consists of three register bits... и для STM : Each of the GPIO pins can be configured by software.
Так где разница? И там и там пины, которые конфигурятся регистрами. Только одни называют этот конгломерат регистров и железных ног портом , а другие входами-выходами общего назначения.
Назовите хоть один порт, который управляет таймерами?
Я даже скетч такой писал, правда назначение было другим -расчёт точности собаки.
И где этот код можно посмотреть?
Но удобнее всего ткнуть осциллом в кварц и измерить.
Интереснее если Ардуина сама получит всю информацию о себе.
Может ещё какие-нибудь недокументированные возможности есть?
arduinec, вот . Измеряет таймером реальную длительность "секунды" вотчдога.
Если выводить значение tic -то это будет очень примерная частота в герцах. Зато не привязано ни к чему :)
Других интересных возможностей для самодиагностики не припомню..
С помощью таймера watchdog удалось получить реальную частоту кварца. Спасибо dimax!
Версия 1.03
Длительность в таймере watchdog зависит от питания и температуры, поэтому частота определяется через интервал значений.
С данным скетчем получилось заменить кварц с 16 на 8 МГц (как описано в посте 9) и вывести правильный результат (fcpu=16, freq=8) в сериал монитор, но для заливки нового скетча кварц на 16 МГц нужно возвращать обратно.
Добавил вывод CPU.
Версия 1.04
Добавил вывод памяти.
Версия 1.05
Классная штука, не на чем сейчас проверить, но потом погоняю на платах которые есть у меня.
К стати по пинам, у тебя используется
Но вроде как есть определенные переменные файлы с ними лежат в hardware\arduino\avr\variants
Опять же проверить не могу но думаю если они работают корректно можно добваить в счетчь "кроссплатность" :)
Вариант с FIRST_PIN и LAST_PIN позволяет выбрать нужный диапазон для тестирования. Например пины 0 и 1 при этом тестировании всегда заняты, так как работают на сериал-монитор, поэтому их можно исключить из этого диапазона. А для Mega2560 диапазон наоборот можно расширить на все пины.
Всё не предусмотришь, но скетч позволяет подстроить его под нужные проверки.
Для этого есть штатные дуиновские функции.
dimax, подскажи, пожалуйста - для atmega8 выдаёт сигнатуру 406463, ожидал что-то похожее на 1E9307
спасибо.
Добавил вывод с внутреннего датчика температуры (http://playground.arduino.cc/Main/InternalTemperatureSensor).
Версия 1.06
dimax, подскажи, пожалуйста - для atmega8 выдаёт сигнатуру 406463, ожидал что-то похожее на 1E9307
Посмотрел в даташит на мегу328 -там есть раздел "Reading the Signature Row from Software " А в даташите на мегу 8 такого раздела нет. Похоже мега8 не поддерживает режим само-чтения сигнатуры, и считанные байтики -просто дамп первых адресов памяти.. (
Посмотрел в даташит на мегу328 -там есть раздел "Reading the Signature Row from Software " А в даташите на мегу 8 такого раздела нет. Похоже мега8 не поддерживает режим само-чтения сигнатуры, и считанные байтики -просто дамп первых адресов памяти.. (
ок. спасибо.
что-то на 2560 косячит.
На одной плате:
На другой плате:
что-то на 2560 косячит.
Тоже обратил внимание на неправильные показания Mega2560, но пока не дошли руки до того, чтобы разобраться. Скорее всего другими командами нужно выставлять опорное напряжение (в Меге их два) и считывать температуру (если там есть датчик).
Хотя я и сделал вывод названия процессора, но пока так и не разобрался как Ардуина определяет какой процессор в ней: считывает какой-то код чипа или название просто записывается при прошивке. Это важно при организации ответвлений в скетче при разных процессорах.
Если есть программный код (или информация) на эти темы, то они будут с благодарностью добавлены в следующие версии скетча.
Хотя я и сделал вывод названия процессора, но пока так и не разобрался как Ардуина определяет какой процессор в ней: считывает какой-то код чипа или название просто записывается при прошивке.
Да никак не определяет, берёт выбранный пользователем МК из boards.txt при компиляции. Можете прикрутить настоящий детект чипа -по сигнатуре.
Доброе время. Скетчик прикольный, спасибо за труд по его написанию. Не пойму только почему у меня на платах фейлы стоят в одинаковых местах, это баг или фича?
SysInfo for Arduino version 1.06
F_CPU = 16000000
Frequency = 16 MHz
CPU = ATmega328P
Flash Memory = 32767 bytes
Free RAM memory = 1558 bytes
VCC = 5091 mV
Signatura = 1E95F
Fuses (L/H/ext) = FFDAFD
Internal Temperature = 19.4 C
Test of short circuit on GND or VCC:
Pin: 0 Low: Fail High: Ok Pull Up: Ok
Pin: 1 Low: Ok High: Fail Pull Up: Fail
Pin: 2 Low: Ok High: Ok Pull Up: Ok
Pin: 3 Low: Ok High: Ok Pull Up: Ok
Pin: 4 Low: Ok High: Ok Pull Up: Ok
Pin: 5 Low: Ok High: Ok Pull Up: Ok
Pin: 6 Low: Ok High: Ok Pull Up: Ok
Pin: 7 Low: Ok High: Ok Pull Up: Ok
Pin: 8 Low: Ok High: Ok Pull Up: Ok
Pin: 9 Low: Ok High: Ok Pull Up: Ok
Pin: 10 Low: Ok High: Ok Pull Up: Ok
Pin: 11 Low: Ok High: Ok Pull Up: Ok
Pin: 12 Low: Ok High: Ok Pull Up: Ok
Pin: 13 Low: Ok High: Ok Pull Up: Fail
Pin: 14 Low: Ok High: Ok Pull Up: Ok
Pin: 15 Low: Ok High: Ok Pull Up: Ok
Pin: 16 Low: Ok High: Ok Pull Up: Ok
Pin: 17 Low: Ok High: Ok Pull Up: Ok
Pin: 18 Low: Ok High: Ok Pull Up: Ok
Pin: 19 Low: Ok High: Ok Pull Up: Ok
Доброе время. Скетчик прикольный, спасибо за труд по его написанию. Не пойму только почему у меня на платах фейлы стоят в одинаковых местах, это баг или фича?
Test of short circuit on GND or VCC:
Pin: 0 Low: Fail High: Ok Pull Up: Ok
Pin: 1 Low: Ok High: Fail Pull Up: Fail
Pin: 13 Low: Ok High: Ok Pull Up: Fail
Пины 0 и 1 относятся к Serial Port, через который Ардуина соединяется с компьютером. На пине 13 находится светодиод (на пинах 0 и 1 кстати тоже).
И тогда вывод в уарт будет всегда читабельным.
ок. и, как это туда воткнуть, если мы можем узнать скорость порта только после прошивки, а для прошивки нужно знать скорость порта.
это какая-то рекурсия.
Клапауций никогда не писал реентерабельный код?
реентерабельный код?
шо?
Arduino Mega показывает не верную температуру:
SysInfo for Arduino version 1.06
F_CPU = 16000000
Frequency = 16 MHz
CPU = ATmega2560
Flash Memory = 262143 bytes
Free RAM memory = 7701 bytes
VCC = 1100 mV - ?
Signatura = 1E981
Fuses (L/H/ext) = FFD8FD
Internal Temperature = -265.8 C
Test of short circuit on GND or VCC:
Pin: 0 Low: Fail High: Ok Pull Up: Ok
Pin: 1 Low: Ok High: Fail Pull Up: Fail
Pin: 2 Low: Ok High: Ok Pull Up: Ok
Pin: 3 Low: Ok High: Ok Pull Up: Ok
Pin: 4 Low: Ok High: Ok Pull Up: Ok
Pin: 5 Low: Ok High: Ok Pull Up: Ok
Pin: 6 Low: Ok High: Ok Pull Up: Ok
Pin: 7 Low: Ok High: Ok Pull Up: Ok
Pin: 8 Low: Ok High: Ok Pull Up: Ok
Pin: 9 Low: Ok High: Ok Pull Up: Ok
Pin: 10 Low: Ok High: Ok Pull Up: Ok
Pin: 11 Low: Ok High: Ok Pull Up: Ok
Pin: 12 Low: Ok High: Ok Pull Up: Ok
Pin: 13 Low: Ok High: Ok Pull Up: Ok
Pin: 14 Low: Ok High: Ok Pull Up: Ok
Pin: 15 Low: Ok High: Ok Pull Up: Ok
Pin: 16 Low: Ok High: Ok Pull Up: Ok
Pin: 17 Low: Ok High: Ok Pull Up: Ok
Pin: 18 Low: Ok High: Ok Pull Up: Ok
Pin: 19 Low: Ok High: Ok Pull Up: Ok
реентерабельный код?
шо?
Открою АМЕРИКУ
Arduino Mega показывает не верную температуру:
См. пост 63 данной темы.
что-то на 2560 косячит.
На одной плате:
На другой плате:
Да здесь скорее всего Mega2560 возвращает внутреннюю температуру в градусах Кельвина, а скетч считает, что это градусы Цельсия.
Можно по результатам функции CPU() определить чип и приводить показания внутреннего термометра к привычному виду.
Ну можно видеть, что если трехзначная температура - то перевести ее к соответствию, не напрягаясь тем, что за зверь тестируется. Имхо. Ну хотя бы для начала.
Хотя на кельвины не похоже... вот тут перевод онлайн: https://www.translatorscafe.com/unit-converter/ru/temperature/1-2/
-265.8К = 538С
Нашёл кучку сигнатур AVR-контроллеров: http://www.gammon.com.au/forum/?id=11633
Появилась возможность разделять код для разных контроллеров (теперь Mega2560 правильно напряжение питания показывает).
Версия 1.07
В скетче заложено измерение напряжения питания и внутренней температуры ATmega32U4 (Леонардо) и ATtiny85, но проверить пока не могу из-за их отсутствия.
Arduino Pro Micro
Не верная температура. Больше на температуру по Фаренгейту похоже. В комнате как раз 23 градуса
И еще одно замечание...
На платах Leonardo в т.ч. Arduino Pro Micro скетч ни чего не выводит.
Нужно добавить задержку в Setup() после инициализации serial порта.
Возможно это особенность всех ATmega32U4
Arduino Pro Micro
Спасибо за информацию!
Не верная температура. Больше на температуру по Фаренгейту похоже. В комнате как раз 23 градуса
В даташите ATmega32u4 нет формулы для температурного датчика, поэтому в скетче применяется формула для ATmega328p (возможно для ATmega32u4 она не подходит).
http://www.narkidae.com/research/atmega-core-temperature-sensor/
Микра у меня есть, при случае проверю.
http://www.narkidae.com/research/atmega-core-temperature-sensor/
Из статьи следует, что от полученной датчиком температуры нужно только отнять 273. Для более точного измерения к полученной температуре добавляют/отнимают температуру смещения, которая у каждого чипа своя.
Nano, здоровая, температура 36,6:
Micro, температура ушла в минуса:
В setup() стоит добавить код, рекомендуемый для Leonardo: while (!Serial) { ; }
P.S. Кстати, по ссылке, что выше постами, скетчем в статье температура на Micro отдается похожей на правду - 32C.
Последняя версия в 168-ю не влазит.. в мониторе краказяберы (
Я тут потуплю, конечно, и попрошу таки ответить. Может, кто для arduino DUE скетч для чтения/записи всех её портов выложит. Многие люди, купившие такую плату, перед тем, как подтвердить её получение, смогут своевременно произвести проверку покупки с помощью такого скетча. Заодно станет меньше отзывов о товаре, подобных "всё отлично. Получил, но пока не проверил. На вид всё хорошо.".
P.S.: Желающие устроить дедовщину и страждущие на нищих, новичках, студентах, и им подобных категориях людей баблишко поднять - лесом идите, - и вам спокойнее, и карму не испортите :)
Я тут потуплю, конечно, и попрошу таки ответить. Может, кто для arduino DUE скетч для чтения/записи всех её портов выложит. Многие люди, купившие такую плату, перед тем, как подтвердить её получение, смогут своевременно произвести проверку покупки с помощью такого скетча. Заодно станет меньше отзывов о товаре, подобных "всё отлично. Получил, но пока не проверил. На вид всё хорошо.".
P.S.: Желающие устроить дедовщину и страждущие на нищих, новичках, студентах, и им подобных категориях людей баблишко поднять - лесом идите, - и вам спокойнее, и карму не испортите :)
А "блинк "из примеров чем вам не подходит?
Может, кто для arduino DUE скетч для чтения/записи всех её портов выложит.
Запишешь единицу в порт - а что дальше? Внешне это никак не видно. Как проверять-то будешь? К каждому пину свой светодиод припаивать?
Еще интереснее с чтением. Что читать то будем с пустых пинов?
Так что по факту, дядя, твоя задумка не только наивная (напишите мне код, хаха) - но еще и бестолковая
Возможно, с формулировкой что-то не так у меня, можно и подкорректировать было.
Смысл не понятен? - получил покупатель плату BMS 5ch, а часть ячеек аккумуляторов ещё месяца 1.5-2 в пути будут. Как проверить BMS, как вернуть свои через спор, если BMS неисправна? Никак.
В случае с платой arduino нет же нужды ждать компоненты необходимые для проверки работоспособности всех её портов, можно провести хотя-бы простой их опрос. Чьи-то амбиции, (или что там ещё обычно) не помешали появиться на этом форуме такому коду: http://arduino.ru/forum/apparatnye-voprosy/szheg-arduino-nano-est-smysl-chinit#comment-22427
Зачем ждать кого-то, возьмите да сами напишите скетч. А потом сюда выложите, людям польза будет.
Есть у Антона Павловича изречение, вложенное им в уста его персонажа, Дмитрия Ионовича Старцева: "Есть люди, не умеющие писать романы, и есть люди, не умеющие скрыть этого.".
Естественно выложу, когда будет такой, своими знаниями всегда стараюсь делиться с интересующимися, зачастую на безвозмездной основе. Специалист и сам часто быстрее разберется, иногда просто надо, как говаривал @Starichok снять "... с тормозов инерции мышления...", а новичок, или просто желающий повторить тот, или иной проект на arduino, в написание кода не полезет, новичку и на других этапах граблей хватит.
Итого, резюмирую. Кошак классный на аве, люблю этих хищников. Ваш вариант кода, безусловно, до интересующихся постараюсь за вашим авторством принести на различные тематические ресурсы.
P.S.: Или я неправильно вас имел неосторожность уразуметь?
Это всё отмазки и отговорки. Так и скажите, что не хотите реализовать этот полезный проект и поделиться с сообществом.
Возможно, с формулировкой что-то не так у меня, можно и подкорректировать было.
Смысл не понятен? - получил покупатель плату BMS 5ch, а часть ячеек аккумуляторов ещё месяца 1.5-2 в пути будут. Как проверить BMS, как вернуть свои через спор, если BMS неисправна? Никак.
В случае с платой arduino нет же нужды ждать компоненты необходимые для проверки работоспособности всех её портов, можно провести хотя-бы простой их опрос. Чьи-то амбиции, (или что там ещё обычно) не помешали появиться на этом форуме такому коду: http://arduino.ru/forum/apparatnye-voprosy/szheg-arduino-nano-est-smysl-chinit#comment-22427
Сэр понимает разницу между терминами port и GPIO?
Так вот, программка по ссылке занимается проверкой именно GPIO, но никак не портов.
Опять же, кто мешает воспользоваться этой программкой для Arduino Due?
Ну и, наконец, в микроконтроллере кроме GPIO есть еще масса интересных и полезных вещей:
- память оперативная,
- flash-память,
- EEPROM,
- аналогово-цифровые и цифро-аналоговые преобразователи,
- таймеры,
- контроллер прерываний,
- контроллер ПДП,
- масса аппаратных интерфейсов: UART, I2C, SPI, CAN...
...
да даже по поводу GPIO - у меня вот есть контроллер, который на одном выводе в качестве логического нуля вместо 0.2 В выдает 1.3 В. Для КМОП логики это, вроде, безразлично, для ТТЛ - под вопросом, а для запирания транзистора - явно недостаточно. Так что эта "простейшая программка" даже GPIO полностью проверить не сможет.
Поэтому подтверждаю: идея наивная и бестолковая.
Нет, тщательно проверить микроконтроллер или плату Ардуино - вполне возможно, но невозможно сделать это лишь с использование внутренних ресурсов, - необходим достаточно дорогостоящий испытательный стенд.
GPIO проверить можно - нужно просто позамыкать их друг на друга + пара резисторов конденсаторов + пара месяцев на разработку (вот тут наш халявщик и пролетает). И протоколы так же можно проверить, и таймеры друг с другом сравнить и с полученным от компа сигналом, и память забить разными значениями можно. Только это еще минимум полгода.
(вот тут наш халявщик и пролетает).
дружеский совет - смените область применения своих потугов - экстрасенс вы никудышный в отношении меня оказались.
Сэр понимает разницу между терминами port и GPIO?
Так вот, программка по ссылке занимается проверкой именно GPIO, но никак не портов.
Сэров не встречал, сам из народа. Я разницу понимаю, с формулировками иногда бывает затык.
В общем-то нет так нет, умолять не собирался, нужды в таком коде не испытываю. Так-то народ на ресурсе неплохой, много знающих, правда, бывает у некоторых представителей стремление поделить всех на "все равны, но некоторые равнее других", с причислением себя любимых к последним и некоторым всё мерещится, что хлеб у них кто-то всё время пытается отобрать.
Итог: желающие потрындеть - вэлкам! пусть и в этой теме среди флуда и показательных Я-каний сложно станет найти полезную информацию :)
(вот тут наш халявщик и пролетает).
дружеский совет - смените область применения своих потугов - экстрасенс вы никудышный в отношении меня оказались.
Да? Замечательно! Жду коммерческого предложения.
Сэр понимает разницу между терминами port и GPIO?
А не один ли фиг? Что PB0, что GPIO0? Чисто терминология.
Кирпич и паровоз - тоже разница чисто терминологическая (в смысле разные термины).
У некоторых малоногих, где io порт всего один, его именуют GPIO, у других присваивают буковки. А вот разницы абсолютно никакой.
Нет никакой разницы между логическим устройством и физическим?
... Сэр понимает разницу между терминами port и GPIO? ...
Как индийские программисты назовут в их мануалах так и будет. Открываем мануал AVR читаем I/O-Ports ...All AVR ports have true Read-Modify-Write functionality... Открываем STM32 мануал : GPIOs (general-purpose inputs/outputs)... Each of the GPIO pins can be configured by software as output (push-pull or open-drain), as input (with or without pull-up or pull-down) or as peripheral alternate function.
Ну в чем разница? Ноги процессора. Функционал почти одинаков. Названия разные.
... Сэр понимает разницу между терминами port и GPIO? ...
Как индийские программисты назовут в их мануалах так и будет. Открываем мануал AVR читаем
1.
Открываем STM32 мануал :
2.
Ну в чем разница? Ноги процессора. Функционал почти одинаков. Названия разные.
Порт может управлять несколькими пинами, а для управления одним пином в порту может быть предусмотрено несколько битов. Кроме того, порты служат для управления не только GPIO, но также таймерами, специализированными интерфейсами и прочими периферийными устройствами.
Идем дальше, цитата AVR : Each port pin consists of three register bits: DDxn, PORTxn, and PINxn. As shown in the Register Description, the DDxn bits are accessed at the DDRx I/O address, the PORTxn bits at the PORTx I/O address, and the PINxn bits at the PINx I/O address.
Достаточно было Each port pin consists of three register bits... и для STM : Each of the GPIO pins can be configured by software.
Так где разница? И там и там пины, которые конфигурятся регистрами. Только одни называют этот конгломерат регистров и железных ног портом , а другие входами-выходами общего назначения.
Назовите хоть один порт, который управляет таймерами?
Назовите хоть один порт, который управляет таймерами?