avr программируемое дублирование сигнала

Тема в разделе "Закажу проект", создана пользователем Vetrinus, 29 сен 2016.

  1. Vetrinus

    Vetrinus Гик

    Здравствуйте. Срочно! Готов платить за консультацию.
    Есть скетч, осуществляющий дублирование сигнала с одного порта, на другой порт. С возможностью осуществить перепрограммирование, чтобы далее с этого порта дублирование сигнала осуществлялось на другой порт. Работает все, что нужно, за исключением того, что использованы ноги PC7, PC8, к которым я не могу применять конструкции pinMode, digitalRead, digitalWrite.
    Нужно сделать все то, что уже сделано, но так, чтобы ноги PC7 и PC8 работали также, как обычные цифровые порты.
    Написанные исходники предоставлю.
    Бюджет до 5 т.р.
    Предпочтительный способ оперативной связи — skype - niscerap
    телефон - 89134681619
    Отвечу на все вопросы. Заранее спасибо.
     
  2. Tomasina

    Tomasina Сушитель лампочек Команда форума

    чип-то какой?
    Потому как ни в Atmega328p, ни в Atmega2560 нет PC7 и PC8.
     
  3. Tomasina

    Tomasina Сушитель лампочек Команда форума

    Где они?
    [​IMG]
     
  4. Vetrinus

    Vetrinus Гик

    Прошу прощения, ошибся, не ориентируюсь. Ноги PB6, PB7
     
  5. Tomasina

    Tomasina Сушитель лампочек Команда форума

    к ногам PB6 и PB7 подключается кварц. Если от него отказаться, то надо переходить на тактирование от внутреннего осциллятора (и есть подозрение что теряем совместимость с Arduino IDE, но это мое предположение).
    Вот для информации:
    http://forum.arduino.cc/index.php?topic=116248.0
    http://forum.arduino.cc/index.php?topic=60744.0
    http://joshfire-tech.tumblr.com/post/79859137091/how-to-use-pb6-and-pb7-on-an-atmega328-when-youre
    http://arduino.ru/forum/apparatnye-voprosy/ispolzovanie-pb6-pb7-atmega328p
     
  6. Vetrinus

    Vetrinus Гик

    Это значит, что мы в принципе не сможем использовать конструкции arduino ide,
    и все нужно будет писать на C?
     
  7. Tomasina

    Tomasina Сушитель лампочек Команда форума

    ну если способ, описанный joshfire прокатит, то можно ими рулить из IDE в урезанном варианте: можно их выставить в HIGH или LOW, но библиотеки их использовать не смогут.
     
  8. Onkel

    Onkel Гуру

    средствами ардуино перепрошить фьзы на тактирование от внутреннего генератора (по крайней мере малой кровью, не потратив день - другой на преодоление костылей и недокументированных фичей ) нельзя. Вот и все, что можно предоставить в виде консультации. В инете полно генераторов фьюзов и прошивальщиков фьюзов, но не уверен (точнее, уверен в обратном) - на освоение их нужно будет меньше пары - тройки экспериментальных ардуин загубить. А что должен делать модуль - только дублировать сигналы?
    Сама плата какая - на ней выведены pb6/pb7? Полное тз можете прислать?
     
  9. Vetrinus

    Vetrinus Гик

    Есть проекты платы в .lay6 Sprint layout и .PCBdoc формате альтиум дизайнера.
    Необходимости в совместимости с arduino ide нет, лишь бы девайс работал, и в бюджет уложиться. Вообще волшебно, если реально будет обойтись своими силами.
    Модуль должен дублировать сигналы, с возможностью переназначение порта - дублера.
    Полного ТЗ в текстовом виде у меня нет. Могу накидать.
     
  10. Vetrinus

    Vetrinus Гик

    Код (C++):
    void setup() {
      // set as outputs
      DDRB |= (1 << DDB6) | (1 << DDB7);
    }

    void loop() {
      // set PB6 high
      PORTB |= (1 << PORTB6);
      delay(1000);
      // set PB6 low
      PORTB &= ~(1 << PORTB6);
      delay(1000);
     
      // both high
      PORTB |= (1 << PORTB6) | (1 << PORTB7);
      delay(1000);
      // both low
      PORTB &= ~((1 << PORTB6) | (1 << PORTB7));
      delay(1000);
    }
    Да, пожалуй, мне прекрасно подойдет такой способ. Не подскажете, что бы почитать по поводу симуляции в протеусе? Выставил тактирование от внутреннего ослциллятора, но что-то явно не так со скоростью работы. Все крайне медленно происходит, относительно времени симулирования.
    И касательно приведенного выше кода... Не понимаю вообще ничего. Куда копать?
     
  11. Onkel

    Onkel Гуру

    PORTB - регистр мк, отвечающий за пины порта B. PORTB6 и PORTB7 - это просто define предопределенные , означает числа 6 и 7, где эти define определены надо смотреть.
    в setup пины B6 B7 определены как выходы. Дальше ими рулят, например,
    PORTB |= (1 << PORTB6);
    означает выставить пин 6 порта B в high
    PORTB &= ~(1 << PORTB6);
    означает выставить пин 6 порта B в low
    и т.д.
     
  12. Green

    Green Нерд

    Сделаю обычными Ардуиновскими пинами с доступом через pinMode, digitalRead, digitalWrite.
     
  13. Vetrinus

    Vetrinus Гик

    редактированием файла pins_arduino.h?
     
  14. Onkel

    Onkel Гуру

    так вы тз пришлите, что делать - то надо, а то если вам сделают digitalRead/digitalWrite - вы как минимум 24 мкс (на частоте мк 8 м) на каждом сигнале потеряете, это как минимум, а в реальности 24 мкс плюс время прокрутки петли - а это уже мс. Это значит что подав 40 кГц (к примеру) на выходе вы получите только шум. А на частоте 10 кГц почти один шум. И на 1 кГц почти один шум, если в петле будет хотя бы пара - тройка операторов. По хорошему надо делать через внешние прерывания по сигналам пинов входа, тогда у вас будет четкий повтор, частота тоже не до бесконечности, но без стохастики.
     
  15. Limoney

    Limoney Гик

    В любом случае будет задержка по сигналу. Потом как все равно нужна обработка не только программная, но и аппаратная.
     
  16. Vetrinus

    Vetrinus Гик

    Девайс ориентирован на взаимодействие с человеком, поэтому 1 мс, как и 10, как и 20, не критичны.
    Всегда думал, что составлять норм ТЗ просто. Выясняется, что даже с опытом исполнителя сложновато.
     
    Tomasina и Limoney нравится это.
  17. Limoney

    Limoney Гик

    Я даже не спорю. Само собой - зависит от задачи.
     
  18. Onkel

    Onkel Гуру

    зато во время составления тз задача уже наполовину решена. Это как правильный вопрос- уже половина ответа.
     
    Tomasina нравится это.
  19. ostrov

    ostrov Гуру

    Чем отличается PORTB6 от просто 6?
     
  20. Onkel

    Onkel Гуру

    в данном случае это просто директива препроцессору
    #define PORTB6 6