Прошу разъяснений

Тема в разделе "Arduino & Shields", создана пользователем Overdrive, 3 июн 2017.

  1. Overdrive

    Overdrive Нуб

  2. Unixon

    Unixon Оракул Модератор

    Мелкая 3-ногая керамика под двумя емкостями под надписью "DIGITAL (PWM)".
     
  3. Overdrive

    Overdrive Нуб

    Ок, думал про нее. спасибо
    А если я попрошу его частоту определить?;).
     
  4. Overdrive

    Overdrive Нуб

    На нем что-то похожее на "Аj" намалевано
     
  5. Unixon

    Unixon Оракул Модератор

    Что угодно может быть.
     
  6. Overdrive

    Overdrive Нуб

    Т.е. и 8 и 12 и 16 МГц? Я правильно понимаю? Не игнорируйте)) Ответьте, пожалуйста))
     
  7. Залить написаный на ассемблере blink и по часам определить частоту мигания. Частоту резонатора вычислить.
     
  8. Overdrive

    Overdrive Нуб

    О! Как! А для точности мне сколько морганий отсчитать 100? 1000000? Да и в конечном итоге что? 100 морганий за 200 сек, к примеру. 0.5 чего и к чему?
     
  9. rkit

    rkit Гуру

    16мГц используется в Уно.
     
  10. Можно залить написанный на ассемблере 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 можно уточнить.
     
  11. Overdrive

    Overdrive Нуб

    в этом видео показано как разогнать до 20Мгц, но сама по себе замена кварца не решает проблемы. Отсюда имеем, что китайцы могли впаять всё, что угодно.
     
  12. rkit

    rkit Гуру

    Ну имейте, если заняться больше нечем.
     
  13. Overdrive

    Overdrive Нуб

    "Примерно" 1 раз в секунду, я полагаю, что "можно иметь" при 15МГц и при 17МГц. Это во-первых. А во-вторых, от питающего напряжения по USB частота разве не будет зависеть (4.9В-5.1В)?
     
  14. Overdrive

    Overdrive Нуб

    Ответ засчитан как "лишь бы ляпнуть"
     
  15. Overdrive

    Overdrive Нуб

    Мда... китайцы умеют всё же нагадить...
    Arduino_UNO_R3_CH340.jpg Arduino_UNO_R3_CH340.jpg
     
  16. Если нужна большая точность - считайте, сколько раз мигнет за минуту, две.
    Отличить 12 и 16 МГц не должно быть проблемой. Говоря о неточности я имел ввиду только то, что не учитывал время выполнения кода вне цикла задержки. Оно мало. Сколько раз мигает за минуту?
     
  17. Overdrive

    Overdrive Нуб

    60 миганий за 2мин 01сек
    хотя... стоп. это по стандартному блинку
     
  18. Overdrive

    Overdrive Нуб

    По Вашему варианту 60 морганий за 1 m 01s

    Впрочем, 1 секунда не целая в обоих случаях
     
  19. Т.е. все-таки 16 МГц. Задержка 0x186A00 * 5 = 1,600,000 * 5 = 8,000,000 тактов. При 16 Мгц - полсекунды диод светится, полсекунды нет. Пять - число тактов, нужных для выполнения цикла задержки (если быть точным, последний проход выполняется за четыре такта). Так что все нормально.
     
  20. Overdrive

    Overdrive Нуб

    Спасибо!