2 417 сообщений в этой теме

Alex    556
В 21.04.2018 в 10:46, Aleksandr1111 сказал:

Потом решил попробовать сначала PORTA.F0 = 1, затем TRISA.F0 = 0 , тогда всё получилось, как надо, и датчик заработал. Но вопрос, насколько правильно так делать?

1. Совершенно не понятно, зачем писать в порт единицу, при настройке порта на выход, если эта самая единица осуществляется за счёт внешнего сопротивления ? Не проще, для установки лог. 1, просто настроить порт на вход, а лог. 1 осуществится "сам по себе", за счёт pull-up сопротивления ?
2. Запись значения (любого) в порт не гарантирует вывод этого значения после изменения направления порта. В порт выведется то значение, которое реально было внешне на входе до изменения направления. Это касается только МК, не имеющих спец. защёлки (LATx).

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
my504    355
6 часов назад, Alex сказал:

1. Совершенно не понятно, зачем писать в порт единицу

Для обмена не требуется. Рекомендуется для паразитного питания.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
10 часов назад, Alex сказал:

если эта самая единица осуществляется за счёт внешнего сопротивления ? Не проще, для установки лог. 1, просто настроить порт на вход, а лог. 1 осуществится "сам по себе", за счёт pull-up сопротивления ?
2. Запись значения (любого) в порт не гарантирует вывод этого значения после изменения направления порта. В порт выведется то значение, которое реально было внешне на входе до изменения направления. Это касается только МК, не имеющих спец. защёлки (LATx).

1. Да, вообще-то верно, спасибо за подсказку, надо попробовать так.

2.А здесь у меня (МК PIC16f628a) получается почему-то наоборот: сначала, когда вывод настроен на вход, на линии "1" за счет подтягивающего, затем перевожу на выход, и тут появляется "0".

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Alex    556
46 минут назад, Aleksandr1111 сказал:

сначала, когда вывод настроен на вход, на линии "1" за счет подтягивающего, затем перевожу на выход, и тут появляется "0".

Странно... Не должно быт такого...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
UTSource

Найдите миллионы труднодоступных

электронных компонентов

Tulen    1

Ребят, а есть прямо для чайников настройка аппаратного SPI пиков и использование его для работы с FatFS?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Alex    556

У Чена библиотека идёт с примерами. Там есть и под PIC пример.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
fuckir    6
43 минуты назад, Alex сказал:

У Чена библиотека идёт с примерами. Там есть и под PIC пример.

На прошлой странице уже обсуждалось  ..

  • Одобряю 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Alex    556

Точно, не обратил внимания... :rolleyes:

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
StationX    3

Подскажите,как понять мультивекторность и одновекторность у пиков32?В даташите всего пять строчек и написано,но в одновекторном режиме процессор уходит всегда на один и тот же адрес при прерывании,а при мультивекторном каждый раз на разные адреса.

Вопрос вот откуда-немного работая с авр,заметил что прерывания от разных источников имеют разный адрес,получается в АВР всегда мультивекторность?А в пиках ,в режиме одновекторности,после наступления прерывания нужно еще проверить какова причина данного прерывания?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Alex    556

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

Поделиться сообщением


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

Подскажите, пожалуйста, по такому вопросу: для термометра на Pic12f675 и 2-х датчиках DS18B20 сначала я хочу узнать с помощью другой программы ROM-коды датчиков, а затем можно ли вручную занести их в EEPROM контроллера в окне программы Pickit2 ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
my504    355

А разве контроллер не залочен? Обычно лочат без разбора все виды памяти.

А вообще странный какой то термометр, не позволяющий менять датчики без подобных процедур....

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
1 час назад, my504 сказал:

разве контроллер не залочен? Обычно лочат без разбора все виды памяти.

Так я сам этот термометр конструирую, на чистом контроллере. В программе Pickit2 EEPROM вроде редактируется. Поэтому и спрашиваю, как тут можно сделать, если датчики подключены к одному выводу порта. Мне не обязательно, чтобы датчики можно было менять без перепрошивки контроллера.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Alexeyslav    634

Обычно, для этого делают автоопределение датчиков на шине, процедура даёт серийники всех обнаруженных датчиков. А дальше уже назначай какой датчик от чего.

Например, если у вас два датчика, то распределить их роли просто - по больше/меньше серийники. Если программа показывает не то что надо - просто меняешь датчики местами, или алгоритм сравнения на противоположный.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Tulen    1

Ребят, мб кто-нибудь объяснит, где я косячу?

Нужно настроить аппаратный SPI (PIC18F2550) для работы с FatFS от ChaN'а.

Проинициализировал по даташиту:
 

void SPI_Initialization(void)
{
    // SSPSTAT: 
    SSPSTATbits.SMP = 1; // Input data sampled at the end of data output time
    SSPSTATbits.CKE = 0; // Transmit occurs on transition from Idle to active clock state
    
    // SSPCON1:
    SSPCON1bits.WCOL = 0;   // No collision
    SSPCON1bits.SSPEN = 1;  // Enables the serial port and configures SCK, SDO, SDI and SS as serial port pins
    SSPCON1bits.CKP = 0;    // Idle state for clock is a low level
    SSPCON1bits.SSPM = 0b0001; // SPI Master mode: clock = FOSC/16   
}

А как начать передачу - я хз...

Если сделать так (ВНЕ цикла while(1)):

    char test = 4;
    SSPBUF = test;

То SPI-debugger в Proteus (нет у меня железа под рукой) выдает мне эту четверку так, будто бы я её в цикле передаю.

И да, вот такой результат, увы, получается, если добавить пустой цикл после передачи:

Скрытый текст

image.png.fb67b354abf0fe6d355057082cb0d167.png

 

Есть ли где-то статья/статьи для совсем отбитых по работе с аппаратным SPI на пиках? Ну и настройка SPI под FatFS.

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
my504    355

А пины отконфигурированы?

RB0 (SCK)  и  RC7 (SDO) должны быть выходами (соответствующий разряд TRIS=0), а  RB1 (SDI) -  входом (TRISBbits.RB1=1).

ЗЫ. Не понимаю, какая может быть проблема с обменом со стороны мастера? Засунули байт в буфер и ждете прерывания по флагу SPI (PIR1<SSPIF>). Ну или кружитесь в пустом ожидании этого флага. Только не забывайте сбросить флаг до передачи и в прерывании, а так же установить всю цепочку разрешений прерываний (PIE1<SSPIE>, INTCON <PEIE>, INTCON<GIE>) и написать ветку обработчика для SSP.

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Tulen    1

@my504 это я, конечно, сделал.)

Вот это работает на самом деле: 

void write8bit(char v)
{
   SSPBUF = v;
   while(!SSPIF);
}

Только я одного не могу понять, какой стрелочкой вход, а какой выход обозначен тут:

Скрытый текст

image.png.04ce4d68a03186d911efb6fb909e892a.png

И как адаптировать функцию void write8bit(char v) под работу с FatFS? В примерах его вообще нет такого, там UART какой-то.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
my504    355

Сверху выход, а снизу вход дебаггера (то есть фиктивного слейва), я полагаю. А у МК все наоборот. Передаете осмысленную величину, а дебаггер отвечает нулями.

Что касается FatFS, то сам обмен тут сбоку. Какая разница чем передавать? Логика (абстракции) протокола не зависят от интерфейса обмена.

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Alex    556
2 часа назад, Tulen сказал:

И как адаптировать функцию void write8bit(char v) под работу с FatFS?

Ещё раз повторимся. У Чена есть архив с примерами, посмотрите. Можете взять готовый для PIC24 и переделать его под себя. Вся работа с SPI находится в файле mmc_pic24f.c

Поделиться сообщением


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

Добрый день, имеется вопрос по работе предделителя для WDT, мк Pic12f683. Насколько я понял по блок-схеме в даташите, WDT работает от 31 khz и имеет свой предделитель, а после своего идет еще один предделитель, общий с таймером. Проблема в том, что предделитель WDT не работает вообще. То есть при изменении битов PS2-PS0 время переполнения WDT изменяется, однако при изменении битов в WDTCON время не меняется никак. Симулировал в proteus.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
IMXO    1 358

бит SWDTEN ?

бит WDTE ?

PS протез как мне помницо берет тайминги для собаки из дополнительных настроек модели , предделитель игнорируется

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
9 hours ago, IMXO said:

бит SWDTEN ?

бит WDTE ?

WDTE включен, соответсвенно SWDTEN ни на что не вляет. Думаю проблема все-таки в симуляторе, надо протестить на железе.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Tulen    1

@Alex не нашел я примера. 

Скачивал два архива - один с сайта автора, другой по ссылке из описания видео на ютубе (там пик 18 был). Нигде не нашел описания функций:

disk_initialize

disk_readp

disk_writep 

Мне вообще в идеале две опции нужно:

1) Создать .txt 

2) Запихнуть туда данные

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
fuckir    6
5 часов назад, Tulen сказал:

@Alex не нашел я примера. 

Скачивал два архива - один с сайта автора, другой по ссылке из описания видео на ютубе (там пик 18 был). Нигде не нашел описания функций:

 

Все там есть.

Так же все разжевано у Джасио в книге по PIC24. Но это уже чисто микрочиповская библиотека 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Tulen    1

Переделал чужой пример (FatFs) с PIC18F45K22 на свой МК (PIC18F2550). Получил вот такую бяку:

error: (1098) conflicting declarations for variable "DIR" (ff.h:162)

Пробовал в файлах менять все DIR и DIR* на DIR1 и DIR1* - компилируется, но дает кучу варнингов (почему-то становятся неиспользованными функции чтения, записи и т.п.).

 

 

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

Поделиться сообщением


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

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Похожие публикации

    • Автор: qwer qwer
      Требуется разработать блок управления сплит-системой с функцией обучения по ИК каналу через RS-485 интерфейс на базе МК STM32. Есть ТЗ и список команд управления. Разработка в 2 этапа: 1-разработка принципиальной электрической схемы с указанием элементов на основе структурной из ТЗ (можно в карандаше), 2-написание ПО для МК STM32 в соответствии с ТЗ и списком команд. Оплата поэтапно. Кому интересно - уточняйте детали и оценивайте стоимость работы.
      Блок управления по ИК каналу Описание.docx
      Команды MODBUS.xlsx
    • Автор: Рязанцев Владислав
      Данное FAQ предназначено в первую очередь для начинающих, но так-же может быть полезным для состоявшихся радиолюбителей, желающих вспомнить теоретические основы.

      Первый и самый главный вопрос, возникающий у человека, вдруг заинтересовавшегося электроникой:
      - С чего начать?
      -Конечно же, с теории! Теория необходима для понимания принципов работы радиоэлементов, а также процессов протекающих в них.
      (Лично я начинал с физики, именно в советском учебнике физики за 10 класс, случайно попавшем мне в руки был раздел электродинамики.)
      Самое первое, что необходимо знать, это чем мы оперируем, то есть электрическим током. Можно представить, что ток это вода. Тогда соединения это трубы, а электронные компоненты это своеобразные краники, бачки и фильтры. Тогда напряжение это скорость воды, а ток- давление. Напряжение измеряется в Вольтах, а ток в Амперах. При помощи электронных компонентов мы управляем током, и получаем необходимые нам результаты, преобразуя ток в другие виды энергии- свет, движение, звук.
      Электрический ток
      Что такое ток?
      Источники электрического тока
      -Какие есть радиоэлементы, и что они делают?
      -Есть большое множество различных элементов, обладающих своими свойствами. Самые базовые из них:
      Резистор- компонент, создающий сопротивление протеканию тока. Имеет параметры- сопротивление и максимальная рассеиваемая мощность. Сопротивление измеряется в Омах, чем больше Ом, тем меньше тока пройдет через резистор. Мощность указывает, сколько мощности может пропустить резистор, не перегорев и не перегревшись. Превышение приводит к перегоранию или перегреву резистора. Мощность, рассеиваемая резистором в конкретном случае, рассчитывается при помощи закона Ома и формулы мощности.
      Резисторы
      Резисторы, ток и напряжение
      Конденсатор- элемент, накапливающий энергию. А так-же пропускающий только переменное напряжение, и только один импульс на момент заряда при постоянном токе. Имеет параметры- емкость и максимально допустимое напряжение. Емкость означает, сколько энергии может запасти конденсатор при фиксированном напряжении, и измеряется в Фарадах (мкФ-микроФарад). Максимально допустимое напряжение- напряжение на которое можно зарядить конденсатор. При превышении конденсатор обычно выходит из строя.
      Конденсатор
      О компонентах. Конденсаторы и резисторы
      Диод- полупроводниковый прибор, пропускающий ток только в одном направлении. Состоит из одного n-p(электронно-дырочного) перехода. Имеет параметры- максимально допустимый ток, максимально допустимое обратное напряжение, напряжение падения. Максимально допустимый ток означает, сколько тока можно пропустить через диод в штатном режиме. Напряжение- максимальное напряжение, приложенное к диоду в обратном направлении. Напряжение падения характеризует, напряжение, падающее на диоде, при прохождении через него тока. Превышение тока или напряжения обычно приводят к перегреву и пробою.
      Диоды и их разновидности
      Транзистор(биполярный)- является самым распространенным активным элементом. Состоит из двух встречно включенных полупроводниковых n-p (электронно-дырочных) переходов на одном кристалле. Проходящий через один из переходов ток, влияет на ток, проходящий через второй. Имеет параметры- максимально допустимые ток и напряжение для каждого возможного направления, коэффициент усиления, напряжение насыщения. Коэффициент усиления показывает зависимость напряжение на коллекторе, в схеме с общим эмиттером, в зависимости от напряжения, приложенного к базе. Напряжение насыщения указывает, сколько Вольт необходимо приложить к базе, чтобы транзистор открылся.
      Немного о транзисторах...
      Биполярные транзисторы
      ОУ- операционный усилитель, он же компаратор. Представляет собой микросхему, содержащую в себе усилитель, имеющий дифференциальные входы, то-есть прямой и инверсный, и обычно один выход.
      Операционный усилитель? Это очень просто!
      -С чего начать практику?
      -Базовое умение радиолюбителя- умение паять. Значит, первым делом необходимо научится паять. Для пайки вам понадобится паяльник, а также расходники- припой(олово) и флюс(канифоль).
      Пайка для начинающих
      Как правильно паять?
      Особенности сборки и монтажа радиосхем
      Далее вам будет необходимо начать собирать простые устройства. Статьи вы найдете здесь Начинающим радиолюбителям
      Ну и самое простое устройство, рекомендованное мной- Простейший генератор звуковой частоты
      -Какие инструменты нужно иметь на своем рабочем месте?
      -Необходимы инструменты для пайки, монтажа и демонтажа компонентов. А так-же простые слесарные инструменты.
      Инструменты
      Инструмент электрика
      -С чего начать изучение микроконтроллеров?
      Технический английский! Как ни крути, а без знания технического английского вам будет очень и очень туго. Все даташиты, описания протоколов и т д. публикуются на английском языке. И он-лайн переводчик тут не поможет, т.к. переведет так, что еще больше запутаетесь. Хороший словарь по радиоэлектронике есть в составе словарей Lingvo.
      -Охватить сразу не получится. Есть различные семейства МК. И придется для начала выбрать одно из них.
      AVR:
      Микроконтроллеры AVR для начинающих - 1
      Микроконтроллеры AVR для начинающих - 2
      Микроконтроллеры AVR для начинающих - 3
      Книга по программированию микроконтроллеров AVR
      Обучающий видео курс для начинающих по микроконтроллерам
      Фьюзы микроконтроллеров AVR – как и с чем их едят
      ARM:
      ARM – это просто (часть 1)
      ARM – это просто (часть 2)
      ARM – это просто (часть 3)
      ARM. STM32 быстрый старт
      STM32 простой и быстрый старт с CooCox CoIDE
      -Литература для начинающих, или- Что почитать?
      Ниже предлагаю список литературы, которая будет полезна для начинающих радиолюбителей.
      Основы теории цепей Электроника? Нет ничего проще! Книги Семенова Б.Ю. Книги Ревича Ю.В. Юный радиолюбитель Введение в цифровую технику Введение в микропроцессорную технику Удивительные электронные устройства Электронный сборник схем для радиолюбителей Радиолюбительская азбука. Том 1. Цифровая техника Радиолюбительская азбука. Том 2. Аналоговые устройства Вы всегда можете задать интересующий вас вопрос в разделе Песочница или Вопрос-Ответ . Но для начала убедитесь, что данный вопрос еще не обсуждался, воспользовавшись поиском. Уважайте труд модераторов и посетителей форума, не желающих видеть постоянно дублирующиеся темы.
      FAQ будет пополнятся и расширятся, на основе анализа раздела Песочница. Если кто хочет дополнить FAQ - пишите сообщение, переместим в первый или второй пост
    • Автор: Splav
      Речь пойдет о таймере цикличного включения вентиляции гаража.
      Стояла задача обеспечить принудительную вентиляцию гаража.
      Оставлять включенным вентилятор круглые сутки - неоправданно.
      Включать его периодически вручную... Неудобно и лишено смысла.
      Поэтому было решено включать его на определенное время через разные интервалы времени, в зависимости от субъективного восприятия наличия сырости в гараже.
      Вменяемых вариантов в продаже я не нашел.
      Можно, конечно, приобрести на Али программируемый суточный таймер или что-то подобное...
      Да, можно, но мне кажется, что собрать из подручных деталей тоже можно, ну и мозги потренировать.
      За основу был выбран PIC12F675, потому что он у меня был.
      По уму здесь должен стоять PIC12F629, он дешевле, в нем нет АЦП, который в конструкции не используется и отключен.
      Итак.
      Время работы выбрано фиксированным и неизменным - 1 час.
      Время простоя - в зависимости от режима.
      1 час - 2 часа - 3 часа.
      (Изначально я планировал другие задержки: 2-3-5 часов. На практике в моих гаражных условиях эти интервалы оказались слишком большими)
      Индикация осуществляется всего 1 светодиодом.
      Переключение режимов и управление - всего 1 кнопкой.
      Схема:

      Коротко о работе:
      Кнопка.
      Опрос кнопки 10 раз в секунду. Антидребезг и подавление помех 0,3с - 3 опроса подряд кнопка нажата.
      Короткое нажатие на кнопку(от 0,3 до 2 с) - переключение режимов по кругу. 1 - 2 - 3 - OFF - 1 - 2 -  ....
      Длинное нажатие на кнопку (дольше 2 с) - смена состояния реле.
      Если оно было включено - выключается.
      Если было выключено - включается. Интервалы работы реле при этом соответствуют режиму.
      В режиме OFF длинное нажатие ничего не меняет.
      Переключение режима или смена состояния реле происходят при отпускании кнопки.
      Светодиод.
      Индикация режимов светодиодом:
      1 - 1 раз в 2 секунды загорается, если реле не включено. Проблеск света.
            1 раз в 2 секунды гаснет, если реле включено. Проблеск тени.
      2 - 1 раз в секунду загорается, если реле не включено.
            1 раз в секунду гаснет, если реле включено.
      3 - 2 раза в секунду загорается, если реле не включено.
            2 раза в секунду гаснет, если реле включено.
      OFF - загорается раз в 5 секунд. Контроль того, что МК не завис.
      Режимы работы.
      Время работы циклического таймера по режимам:
      1 - 1 час работы / 3 часов отдых. 6/24
      2 - 1 час работы / 2 часа отдых.  8/24
      3 - 1 час работы / 1 часа отдых.  12/24
      Работа.
      При отключении питания, пока не разрядились конденсаторы фильтра, МК отключает все выходы, сохраняет текущие данные в память, ждет 15 сек в таком состоянии и возобновляет работу, если отключение было кратковременным и емкостей фильтра питания хватило.
      Если отключение питания было длительным то, при возобновлении питания, загружает сохраненные данные из памяти и продолжает работу.
      При первом включении, после программирования МК, устройство работает в 1-ом режиме.
      Программа писалась в MPLab X IDE v4.05.
      Прошивка:fan_cycle_timer.hex

      Плата для устройства не разрабатывалась. Все было собрано на макетке.
      В блоке питания использован стандартный трансформатор для монтажа на плату ТПК 2х9V с 2-мя вторичными обмотками на 9В.
      Использовал только одну из них. Вторая - не подключена, в "воздухе"
      Реле - HLS-14F1D-DC12V-C. С обмотка на 12В, и одной группой переключающих контактов на 10А/240VAC.
      Устройство собрано в корпусе щитка для автоматов на 8 модулей. Производитель VIKO.
      Закреплена плата на щиток через резьбовые дистанционные втулки с резьбой М3.
      В качестве вентилятора - вытяжной вентилятор диаметром 125мм ВЕНТС 125С
      Устройство на данный момент отработало в гараже все лето, температура воздуха в тени доходила до 32 градусов.
      Перегревов элементов и зависаний контроллера пока не было.
       
      Несколько фото для общего представления о конструкции.

    • Гость Keil
      Автор: Гость Keil
      Добрый день, ситуация такая - попались мне под руку куча рассыпухи в числе которых достаточное количетво тинек и прочей лабуды - пытась хеловродить, попробовал взять готовый пример работы тиньки и лсдишника здесь также имею ардуинку как  Айсипи и чудесно мигаю светодиодом на мк прошитом ею же  так вот при попытке залить код который по ссылке чуда не произошло.
      курение мануалов лсдишника дало понять лиш одно что старший и младший биты одинаковы с лсдишником со статьи - лсдишник рабочий (игрался контрастом одной строки через V0  и потенциометр ) - как в прочем и мк, было задумано ковырнуть все это в протеусе и атмельстудии, но результатом не увенчалось. Пожалуйста тыкните носом что да где не так.
      fail.zip