Когда-то купил от ROBOTDYN плату Robotdyn uno на CH340/ATmega328PA. Абсолютно легко читаем кварц 12МГц на СН340, но для АТмеги я так явно кварца не вижу. Прошу помощи в опознании, если таковой имеется. https://ru.aliexpress.com/item/UNO-...ompatible-for-Arduino-UNO-R3/32523366108.html
Залить написаный на ассемблере blink и по часам определить частоту мигания. Частоту резонатора вычислить.
О! Как! А для точности мне сколько морганий отсчитать 100? 1000000? Да и в конечном итоге что? 100 морганий за 200 сек, к примеру. 0.5 чего и к чему?
Можно залить написанный на ассемблере blink и по часам определить частоту мигания: Код (C++): #define LED 13 void setup() { pinMode (LED, OUTPUT); digitalWrite(LED, LOW); cli(); } void loop() { asm volatile ( "ldi r24, (1 << 5)\n\t" "LOOP:\n\t" "ldi r20, 0x00\n\t" "ldi r21, 0x6A\n\t" "ldi r22, 0x18\n\t" "in r23, %[PB]\n\t" "eor r23, r24\n\t" "out %[PB], r23\n\t" "PAUSE:\n\t" "subi r20, 0x01\n\t" "sbci r21, 0x00\n\t" "sbci r22, 0x00\n\t" "brcc PAUSE\n\t" "jmp LOOP\n\t" : : [PB] "I" (_SFR_IO_ADDR(PORTB)) : "r20", "r21", "r22", "r23", "r24" ); } При 16 МГц будет примерно 1 раз в секунду. Если есть желание, константу задержки 0x186A00 можно уточнить.
в этом видео показано как разогнать до 20Мгц, но сама по себе замена кварца не решает проблемы. Отсюда имеем, что китайцы могли впаять всё, что угодно.
"Примерно" 1 раз в секунду, я полагаю, что "можно иметь" при 15МГц и при 17МГц. Это во-первых. А во-вторых, от питающего напряжения по USB частота разве не будет зависеть (4.9В-5.1В)?
Если нужна большая точность - считайте, сколько раз мигнет за минуту, две. Отличить 12 и 16 МГц не должно быть проблемой. Говоря о неточности я имел ввиду только то, что не учитывал время выполнения кода вне цикла задержки. Оно мало. Сколько раз мигает за минуту?
Т.е. все-таки 16 МГц. Задержка 0x186A00 * 5 = 1,600,000 * 5 = 8,000,000 тактов. При 16 Мгц - полсекунды диод светится, полсекунды нет. Пять - число тактов, нужных для выполнения цикла задержки (если быть точным, последний проход выполняется за четыре такта). Так что все нормально.