Jump to content
mazzi

Arduino на Atmega32A не работает Serial

Recommended Posts

Друзья, сделал плату на Atmega32A и решил запрограммировать её из оболочки Arduino. Подкинул файлики в среду разработки, прописал всё как советовали в интернетах, написал проверочную программку и подёргал ножками - всё работает. Стал писать код обмена последовательными данными с помощью Serial и оказалось, что шлёт он мне только 0x00 и 0x80 в хаотическом порядке. Продолбавшись некоторое время без толку, решил, что проблема в железе, написал проверочную программу в другой среде - всё прекрасно работает. Выходит, что неправильно работает Serial.

Теперь вопрос - где рыть, для устранения данного бага? Что нужно сделать мне, друзья? Выручайте.

Share this post


Link to post
Share on other sites

Правильно. На обычной ардуине скетч работает, на atmege32 не работает.

Share this post


Link to post
Share on other sites

Вебинар STM32G0 – новый лидер бюджетных 32-битных микроконтроллеров от STMicroelectronics

Компания Компэл приглашает вас 25 сентября принять участие в вебинаре, который посвящен новому семейству микроконтроллеров STM32G0. Вебинар рассчитан на технических специалистов и тех, кто хорошо знаком с семейством STM32. На вебинаре будут освоены современные методы тестирования производительности микроконтроллеров на примере самых бюджетных 32-битных семейств общего назначения STM32G0 и STM32F0 и проведено их подробное сравнение.

Подробнее

Posted (edited)

Это мне VPN сделал, три раза показывал, что нет доступа к URL, а потом форум мне сообщал, что "тема не может быть создана, попробуйте ещё раз через 42 секунды".

Edited by mazzi
ошибка

Share this post


Link to post
Share on other sites
                     

Литиевые батарейки Fanso в беспроводных датчиках пожарно-охранной сигнализации

Выбор подходящего элемента питания, способного обеспечивать требуемый уровень напряжения и выдавать необходимый ток на протяжении всего периода эксплуатации беспроводной пожарно-охранной системы является одной из первостепенных задач. Наиболее подходящим для этих целей элементом являются литий-тионилхлоридные элементы питания, а одним из наиболее конкурентоспособных производителей – компания Fanso, предлагающая своим клиентам продукты как универсальные, так и разработанные специально для решения конкретных задач.

Подробнее...

6 minutes ago, mazzi said:

Это мне VPN сделал

:acute:

Share this post


Link to post
Share on other sites

Join the conversation

You are posting as a guest. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

  • Similar Content

    • By Kirill Lubinets
      При работe с РЕАЛЬНЫМ последовательным интерфейсом RS485 в виртуальной машине, виртуальная машина глохнет через пару секунд.
      В чем может быть причина? Как разрешить эту проблему?
    • By Инженер!Туленков
      Добрый вечер форумчане! Создавая некий проект на Arduino и Raspberry возникла интересная ситуация.
      Были закуплены 10 Arduino Nano v3 и подключены к raspberry. По незнанию и не сталкиванию ранее с данной темой увидел что Vendor ID Product ID одинаковые на всех ардуинах и Serial (код) вовсе отсутствует у всех ардуин.
      В проекте необходимо что бы каждая ардуина была уникальная хоть в чем то.
      Далее каждая уникальная ардуина будет привязана естественно к своему COM порту символьными ссылками для использования.
      Каким образом можно придать уникальности каждой ардуине? Как изменить информацию? Возможно ли это осуществить через ch430?
      Общий процесс я представляю. Интересует конкретное ПО или примеры из опыта.
    • By awpe01
      Здравствуйте,
      да, здесь уже было про 74hc165, и поиск тому подтверждение, но у меня не получилось просто взять схему из интернета и воткнуть "лишь бы заработало", и такая элементарная (для кого то) задача вызвала кучу вопросов:
      есть блок на 16 кнопок, 74hc165 и МК (16Мгц),
      нужно последовательно получить состояние всех кнопок, при этом нужно иметь ввиду, что в предыдущем цикле могли быть считаны не все 16, а например, 13 кнопок, поэтому нужно при каждом чтении заново записывать данные в параллельные регистры. Количество управляющих сигналов надо свести к минимуму.
      1) Читаю документацию по 74hc165 от NXP - "When the parallel load (!PL) input is LOW, parallel data from the D0 to D7 inputs are loaded into the register asynchronously.", я это понимаю так, что когда на !PL низкий уровень, то что есть на входах D0-D7 то и будет на внутреннем регистре вне зависимости от других сигналов типа !CE или CP. Далее пишут "When !PL is HIGH, data enters the register serially at the DS input and shifts one place to the right (Q0 -> Q1 -> Q2, etc.) with each positive-going clock transition." т.е. когда на !PL высокий уровень, с каждым нарастающим фронтом на CP данные во внутреннем регистре будут сдвигаться на 1 позицию, при этом в первый D триггер будет записано значение из DS. Тут не ошибся?
      2) "The clock input is a gated-OR structure which allows one input to be used as an active LOW clock enable (!CE) input. The pin assignment for the CP and !CE inputs is arbitrary and can be reversed for layout convenience." - !CE и CP подключены через лог. вентиль типа ИЛИ, и несмотря на названия, их можно менять местами ?
      3) "The LOW-to-HIGH transition of input !CE should only take place while CP HIGH for predictable operation." - т.е. если 2 верно, то для того чтобы один использовать для чтения строба, на втором должен быть высокий уровень?
      4) "Either the CP or the !CE should be HIGH before the LOW-to-HIGH transition of !PL to prevent shifting the data when !PL is activated." - если на выбраном (выше) !CE будет низкий сигнал, то при переключении !PL с низкого на высокий уровень произойдёт сдвиг?
      5)(длинный ) :
      Сначала решил соединить так:
      74hc165#1 DS -> GND
      74hc165#1 Q7 -> 74hc165#2 DS
      74hc165#1 !CE -> 74hc165#2 !CE -> GND
      74hc165#1 !PL -> 74hc165#2 !PL -> MCU
      74hc165#1 CP -> 74hc165#2 CP -> MCU
      74hc165#2 Q7 -> MCU
      D0-D7 каждого к кнопкам (между кнопками и регистрами стоят max6818 (время устранения дребезга 60мс))
      название, номер пина, описание
      !PL 1 asynchronous parallel load input (active LOW)
      CP 2 clock input (LOW-to-HIGH edge-triggered)
      !Q7 7 complementary output from the last stage
      GND 8 ground (0 V)
      Q7 9 serial output from the last stage
      DS 10 serial data input
      D0 to D7 11, 12, 13, 14, 3, 4, 5, 6 parallel data inputs (also referred to as Dn)
      !CE 15 clock enable input (active LOW)
      VCC 16 positive supply voltage
      Управление 2мя сигналами - !PL, CP, данные - Q7 второго регистра. на !CE всегда низкий уровень
      Алгоритм:
      1. вначале подаём низкий уровень на !PL
      2. ждём 139нс (по документации "input transition rise and fall rate, VCC = 4.5V, Max=139ns" что кстати ограничивает частоту загрузки данных в каждый регистр до ~7Мгц, это так?), данные записываются во внутренний регистр, читаем первый из 16 бит с Q7 (на второй МС)
      3. подаём высокий уровень на !PL
      4. ждём 139нс чтобы дать время на запись Q7 первой микросхемы в DS второй
      5. начинаем в цикле (16-1 итераций) подавать на CP импульсы, здесь нужна задержка между фронтами импульса ? (МК работает на 16Мгц, можно ли здесь иставить две инструкции установки нужного бита порта в 0 и 1 подряд или нужна задержка?)
      6. после каждого импульса CP читаем бит из Q7 второй микросхемы. (нужна ли задержка ?)
      7. конец
      Ну и как бы всё нормально, так как алгоритм начинается с подачи низкого уровня на !PL то не важно что было до этого во внутренних регистрах.
      6) Однако на просторах интернета было обнаружено предложение соединить !PL и CP и управлять с помощью одного сигнала, это возможно? Какой будет алгоритм?
      Заранее благодарен.
      P.S. Несмотря на то что период max6818=60мс, читать надо на макс. возможной скорости, так чтение состояния кнопок и вывод данных на светодиоды это основная программа, а критические части имеют свои кнопки с прерываниями.
    • By Arthur
      Объясните пожалуйста, для чайников, про протокол передачи данных Universal Serial Bus - просто хочу организовать, общение компьютера с микроконтроллером.
      ну например, ввожу на компьютере число 120 и компьютер по средством USB передает микроконтроллеру это число и микроконтроллер записывает в переменную X число 120.
      это я просто для примера программу.
      соответственно из этого у меня вытекают следующие вопросы
      1) в какой программе написать программу для компьютера и общения с мк?
      2) как организовать этот USB протокол, и как он работает
      3) когда починят форум, когда я перехожу на новую строчку и нажимаю первый раз на этой строчке на кнопку "стирать" у меня внезапно, мигающий курсор перемещается на начало строчки и строчка подымается на верх. (это уже вопрос риторический, просто не удобно набирать сообщение)
      что имеется.
      1) огромное желания
      2) ноутбук acer aspire v3 771g
      3) руки, паяльник и чуточку мозгов и много деталей.
      4) микроконтроллер Atmega 8PU
×
×
  • Create New...