Перейти к содержанию

Вопросы от начинающих по МК


Рекомендуемые сообщения

Спасибо за разъяснения. Хотелось спросить, этот код что вы представили подойдёт в CodeVisionAVR C Compiler? Он не походит на СИ в котором я писал. Я бы сказал, что он более непонятен чем понятен (для меня).

Попробовал использовать USART через генератор начального кода. Вот что получил:

#include <mega16.h>
#include <stdio.h>

...

// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: On
// USART Transmitter: On
// USART Mode: Asynchronous
// USART Baud Rate: 9600
UCSRA=0x00;
UCSRB=0x18;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x06;

while (1)
     {
     // Place your code here

     };

Теперь вопрос, можно ли тот код что вы дали вставлять для отправки и получения данных между МК.

p.s. я на начальном уровне изучения МК, как говорил умею моргать диодами, опрашивать выводы МК (0 или 1) С интерфейсами никогда не пользовался. Тот код изучив понял в общих чертах, если рассматривать каждую строку то для меня пока это как китайская азбука :)

Изменено пользователем woiow
Ссылка на комментарий
Поделиться на другие сайты

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

  • Ответов
  • Создана
  • Последний ответ

Топ авторов темы

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

Суть ведь в чем - чтение-запись в регистры и проверка состояния отдельных бит регистров.

Учение - изучение правил. Опыт - изучение исключений.

Ссылка на комментарий
Поделиться на другие сайты

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

Здравствуйте, меня убивает одна вещь, которую не могу понять.

В 12-ом пике (PIC12F510 ; http://ww1.microchip.com/downloads/en/DeviceDoc/41268D.pdf ) нету регистра TRIS, он задается командой.

Подскажите пожалуйста, ЧТО нужно написать, чтобы данный чип настроил пины на выход ? Даташит пишет какую-то хрень типа:

The instruction TRIS f, where f = 6, causes the contents of the W register to be written to the tri-state

latches of PORTB. A ‘1’ forces the pin to a high-impedance state and disables the output buffers.

В 12-ом ПИКе нету регистра PORTB, а есть GPIO (это тоже самое, только GPIO, так ?) :)

Мне не надо никакой три-стейт, просто выход...

Изменено пользователем Cavalryman
Ссылка на комментарий
Поделиться на другие сайты

Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов

 Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Из-за ограниченной разрядности команд в базовом семействе (этот контроллер оттуда) не хватает адресного пространства для двух регистров: TRIS и OPTION_REG.

ПОЭТОМУ:

для записи в эти регистры СНАЧАЛА нужно записать этот байт в АККУМУЛЯТОР командой movlw 0xXX, а затем командой tris,6 переписать содержимое аккумулятора в TRIS. Соответственно командой option содержимое аккумулятора будет переписано в регистр OPTION_REG.

Ничего сложного.

Если это напрягает, не используйте базовое семейство. Возьмите какой нибудь 12ф629/675 или 12ф683

Изменено пользователем my504

戦う前に相手のベルトの色に注目

Ссылка на комментарий
Поделиться на другие сайты

Ясно, спасибо.

Всё же, хотелось бы понять почему Протеус работает неверно, МПлаб неправильно отображает состояние регистров в дебагере. В частности, регистру GPIO присваиваются какие-то странные значения. Проект компилится без проблем.

Вод "код":

LIST   P=12F510
#include "p12F510.inc"

DelM		EQU		0x0B ; delay constant 1
DelL		EQU		0x0C ; delay constant 2
GPIO		equ		0x06 ; На всякий случай, хотя в хэдере и так все прописано		
org	0x000

start	

movlw	0x00		; load W with 0x00 make port B output (p. 45)
tris	6			; copy W tristate, port B outputs (p. 58)

BSF		GPIO, GP0		; в хэдере прописано GP0 = 0, GP1 = 1 и т.д.
call delay_slow
BCF		GPIO, GP0
call delay_slow
goto start

Ссылка на комментарий
Поделиться на другие сайты

Главное, что при пошаговом прохождении кода (из сообщения выше) регистр GPIO не реагирует. Пару раз было, что два неверных бита взвелись. Конфигурационное слово не вставил, ибо выставляю настройки в configure -> configuration bits.

Регистры общего назначения на команды отзываются, ТРИС тоже нормально реагирует.

Открыл свою же старинную программу на PIC16F887, так там все работает и Протеус симулирует. Наверняка, что-то банальное забыл. Версия МПлаб 8,4 и 8,6.

---------------------

записываю в GPIO 0xFF, получаю 00110000. прописываются только пятый и четвертый биты. Видать, надо отключать всякие периферические функции.

Изменено пользователем Cavalryman
Ссылка на комментарий
Поделиться на другие сайты

Главное, что при пошаговом прохождении кода (из сообщения выше) регистр GPIO не реагирует.

а що не барское это занятие назначать выводы как цифровые ???

Ссылка на комментарий
Поделиться на другие сайты

IMXO, спасибо. Ноги в МПлабе оживились.

Протеус все равно неверно отображал всё. Оказалось, что конфигурационное слово не копировалось из МПлаба. Надо открыть свойства чипа и скопировать в строчку CFGWORD то, что дает МПлаб.

Все заработало, еще раз спасибо.

Ссылка на комментарий
Поделиться на другие сайты

Проблема софтовая, не знаю куда писать, отдельной темы будет много, я думаю.

Объясните, пожалуйста, по AVR Studio.

Использую версию 5. Написал несколько простых проектов, воплотил в железе, всё получилось.

Теперь нужно делать проекты с взаимодействием с другими устройствами.

В сети обнаружил AVRLib, несколько модификаций, в которых много готовых библиотек для взаимодействия с различными устройствами.

Не могу понять, как использовать их вместе с AVR Studio 5. И надо ли. То ли оно уже есть в AVR Studio 5, и их только нужно как-то туда добавить и подключить к проекту с помощью #include.

Ссылка на комментарий
Поделиться на другие сайты

Библиотеки - это наборы инструкций, если они идут в виде исходников - то инклудом. Причем надо в правильном месте это сделать.

Учение - изучение правил. Опыт - изучение исключений.

Ссылка на комментарий
Поделиться на другие сайты

Библиотеки - это наборы инструкций, если они идут в виде исходников - то инклудом. Причем надо в правильном месте это сделать.

Это понятно. Я имею в виду совместим ли пакет AVRLib с AVR Studio 5?

Ссылка на комментарий
Поделиться на другие сайты

Что-бы это понять, нужно понять что с чем необходимо совместить и так ли это необходимо.

Не цитируите полностью предыдущее сообщение!!!

Ссылка на комментарий
Поделиться на другие сайты

Для этого нужно четко понимать как устроены библиотеки, под какой компилятор рассчитаны. Может получится так что ты используешь не тот компилятор и некоторые вещи в библиотеке он просто не поймет посчитав ошибкой.

Учение - изучение правил. Опыт - изучение исключений.

Ссылка на комментарий
Поделиться на другие сайты

Для этого нужно четко понимать как устроены библиотеки, под какой компилятор рассчитаны. Может получится так что ты используешь не тот компилятор и некоторые вещи в библиотеке он просто не поймет посчитав ошибкой.

Так и происходит. Вот я и запутался :) На чем нужно писать, чтобы эти AVRLib или им подобные подключить? Я в программировании микроконтроллеров новичок, поэтому особо не привязан к оболочке/компилятору, и могу перейти на другой (хотя, AVR Studio 5 очень удобна, да и привычна уже после программирования для Windows). А связать МК мне надо с экраном на контроллере HD44780. В примерах в интернете пишут просто lcd_init(), lcd_gotoxy(0,0), lcd_write('abc')... Вот и мне так же хочется не запариваться над протоколами, чтоб всё было просто и удобно.

Ссылка на комментарий
Поделиться на другие сайты

Так открой библиотеку, там написано в коментарии сверху для какого компилятора она предназначена. AVR Studio 5 это не компилятор, а только оболочка - можно использовать любой компилятор. А вообще, она тоже довольно глючная. Я так и не понял каким образом во встроенном симуляторе подавать импульсы на выводы контроллера - игнорирует эту функцию и все. Студия 4-я не запоминает настройки эмулятора ... черти-что. Да и 5-я наверно тоже.

Учение - изучение правил. Опыт - изучение исключений.

Ссылка на комментарий
Поделиться на другие сайты

Чтож, понятно.

Рабочую библиотеку обнаружил здесь: http://robot-develop.org/archives/162 Проверил на реальном железе, заработало сразу. Правда, \n не работает, пишется только в одну строку на двухстрочном дисплее. Буду разбираться.

Всем спасибо за помощь.

Изменено пользователем holy_0dmin
Ссылка на комментарий
Поделиться на другие сайты

Добрый всем день,

интересует следующий вопрос, есть необходимость продлить на пару секунд питание МК при пропадании питания схемы. Отвязал через диод Шоттки электролит. Пока поставил 1000мкф. Но, когда-то встречал мысль, что электролит большой емкости в питании МК будет плохо влиять на его работу. Так ли это? Какую емкость допускается ставить, или это не критично?

Ссылка на комментарий
Поделиться на другие сайты

Я бы не сказал, что проблем совсем нет. Дело в том, что на МК нормируется время нарастания напряжения питания при использовании внутренней схемы сброса. Иначе требуется ставить внешний супервизор питания.

戦う前に相手のベルトの色に注目

Ссылка на комментарий
Поделиться на другие сайты

Дело в том, что на МК нормируется время нарастания..

------------------------------------------------------

И вовсе не нормируется! Внутренний сброс (по детектору напряжения)

для того и сделан, чтобы не нормировать. А вот без него, действительно,

схема сброс-разрешение оживает, например на 1Вольте и формирует задержку,

например 10мС и, в зависимости от скорости нарастания, питание за это время

может не успеть подняться до минимально-необходимого для ядра.

Вывод - если нет прямых противопоказаний - использовать внутренний Brown-out Detector.

Ссылка на комментарий
Поделиться на другие сайты

BOR далеко не всегда доступен к использованию. Он в слипе изрядно кушает, потому при батарейном питании его отключают.

戦う前に相手のベルトの色に注目

Ссылка на комментарий
Поделиться на другие сайты

что то прием идет не так как надо по UARTу. Использую Atmega8515, отлаживаю на STK500.

задача: мк принимает данные и в двоичном коде показывает их на восьми светодиодах. Данные посылаю через програмку “Terminal v1.9b”. число вроде отображает, но на PB4 всегда лог.1, то есть

посыл “1″ должен показать 00000001 но показывает 10010001

посыл “2″ должен показать 00000010 но показывает 10010010 и так далее..

обработчик прерывания простейший:

PriemZavershen:

in r16,UDR

out PortB,r16

reti

Изменено пользователем slavik.ksu
Ссылка на комментарий
Поделиться на другие сайты

На самом деле должно показывать так:

посыл “1″ должен показать 00110001

посыл “2″ должен показать 00110010

Потому, что это ASCII код символа '1', '2' и т.д.

Пока ты жив, надежда есть.

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы публикуете как гость. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...