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

antzol    2
Кто сталквался с шиной I2C?.....

Покажи хоть код.

На чём пишешь? Как реализуешь, аппаратно или программно?

У меня была проблема с I2C. Оказалось, что из-за прерываний, хотя реализовывал шину программно и они никаким боком ее не касались. Исправил всё полным отключением прерываний на время передачи.

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


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

Быстрый заказ печатных плат

Полный цикл производства PCB по низким ценам!

  • x
    мм
Заказать Получить купон на $5.00

Я может не вовремя :) Помогите реализовать задержку с точностью до нескольких мкс на СИ, для pic16f84. встроеной задержки, как я знаю там нет, может кто подкинет готовую функцию

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


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

2DJ Димон

А какой компилятор используешь? В CSS PCWH есть функция delay_us(const int16 microsec).

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


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

Компилятор HI-TECH PICC, как-то так. Ещё есть такой CCS C Compiler но я ещё его не испытывал.

Кстати есть хороший сайт для новичков в освоении МК http://www.pcports.ru/ как мне кажется!

Изменено пользователем DJ Димон

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


Ссылка на сообщение
Поделиться на других сайтах
antzol    2
Ещё есть такой CCS C Compiler но я ещё его не испытывал.

Я этот и имел в виду. Одну букву в названии перепутал... :)

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


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

Этот компилятор на меня сругался 'Error: The selected compiler: "PCM" is not installed on this PC' почему-то.

я в HI-TECH нашёл файл с функцией DelayUs(x); х - время в мкс.

//-----------------------------------Задержка в мкс------------------------------------------

#ifndef XTAL_FREQ

#define XTAL_FREQ 20MHZ // Частота кварца в MHz

#endif

#define MHZ *1000L // Количество kHz в MHz

#define KHZ *1 // количество kHz в kHz

#if XTAL_FREQ >= 12MHZ

#define DelayUs(x) { unsigned char _dcnt; \

_dcnt = (x) * ((XTAL_FREQ)/(12MHZ)); \

while(--_dcnt != 0) \

continue; }

#else

#define DelayUs(x) { unsigned char _dcnt; \

_dcnt = (x) / ((12MHZ)/(XTAL_FREQ)) | 1; \

while(--_dcnt != 0) \

continue; }

#endif

//--------------------------------------------------------------------------------------------

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


Ссылка на сообщение
Поделиться на других сайтах
antzol    2
Этот компилятор на меня сругался 'Error: The selected compiler: "PCM" is not installed on this PC' почему-то.

Странно... Это он говорит, что у него что-то не установлено для 14-разрядных пиков.

А так, в нем есть встроенные функции задержек (циклы, мкс, мс).

Просто указываешь в h-файле частоту тактового генератора в герцах:

#use delay (clock=5000000)

или

#use delay (clock=5000000, RESTART_WDT)

А в коде программы, где нужно, вставляешь, например, delay_us(X) или delay_ms(X).

И всё...

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


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

Подскажте, можно ли в MPLAB IDE (асемблер), в командах указывать назваеие регистров, бтов (н-р BCF STATUS,RP1)? В примерах пишется, а у меня не получается, может клацнуть гдето надо? :wacko:

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


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

Можно, если в начале пишешь

include '16f84.h' - например. Указываешь свой контроллер только.

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

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


Ссылка на сообщение
Поделиться на других сайтах
Bugrim    2
Можно, если в начале пишешь

include '16f84.h' - например. Указываешь свой контроллер только.

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

***СПАСИБО***

:D

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


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

Возьмите и меня в обучаемые... Please... Железо и желание есть. Установлен PCWH Compiler v.4.049 & MPLAB IDE v.7.62.00.00.

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


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

Купил микросхему PIC16F876A-I/SP. Подскажите что означает буква "а", а то нигде не могу найти.

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


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

В контроллерах с буквой "А" увеличено количество аналоговых портов (т.е. коммутируемых на АЦП), а также изменен способ программирования. А в остальном они ничем не отличаются от тех, что без буквы "А".

На нее нужно обращать внимание при выборе программатора, некоторые из них не могут программировать контроллеры с А.

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


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

Всем привет!

Возникла проблема с PIC12F629 (начинаю осваивать).

Суть вот в чем: Нужно написать простенькую программу - зажеч светодиоды, порты GPI1,GPI2(Ген-ХТ, кварц 4МГЦ)

__CONFIG_XT_OSC_WDT_OFF_PWRTE_ON

Программу написал в MPLABe (компиляция прошла успешно).

Пробовал запустить в PROTEUSe(6.9sp5). Заливаю HEX-файл нажимаю на PLAY - ничего не происходит!

Все выводы в PIC12F629 не активны!

Пробовал сделать тоже на PIC16F84A - все получилось прекрасно. но этот ПИК дорогой, да и задача не

для него.

Подскажите что не так!

Спасибо.

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


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

Выложите схему и прошиву будет смотреть

Изучайте СИ.

да и берите за основу хотябы PIC16F628A.

Их валом везде.

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


Ссылка на сообщение
Поделиться на других сайтах
ViKtor_VK    1
Выложите схему и прошиву будет смотреть

Изучайте СИ.

да и берите за основу хотябы PIC16F628A.

Их валом везде.

По поводу изучения СИ - это ближайшая задача.

Сейчас изучаю PIC16F628A, а PIC12F629 нужен для конкретной небольшой задачи.

Схема и прошивка остались на работе, завтра утром все выложу. Спасибо.

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


Ссылка на сообщение
Поделиться на других сайтах
Lexi    1
По поводу изучения СИ - это ближайшая задача.

Сейчас изучаю PIC16F628A, а PIC12F629 нужен для конкретной небольшой задачи.

Схема и прошивка остались на работе, завтра утром все выложу. Спасибо.

Изучайте Си не в перспективе а сейчас, много гемора с себя снимете.

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


Ссылка на сообщение
Поделиться на других сайтах
Bugrim    2
В контроллерах с буквой "А" увеличено количество аналоговых портов (т.е. коммутируемых на АЦП), а также изменен способ программирования. А в остальном они ничем не отличаются от тех, что без буквы "А".

На нее нужно обращать внимание при выборе программатора, некоторые из них не могут программировать контроллеры с А.

Привет!!! Спасибо большое. Где можно найти документацию которая указалаб на эти отличя (особенно режм программирования)

Где можно найти документацию которая указалаб на эти отличя (особенно режм программирования) на микросхему PIC16F876A-I/SP???

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


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

Если Вы про физическую схему подколючения - то разницы нет. Остальное делает программатор сам. А если про регистры банки памяти то сомторите в datasheet. Там все есть.

По воросу выше на 1 пост читаем http://www.microchip.by/files/87x_to_87xa.pdf.

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


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

По поводу пика 12F629.

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

К выводу GP1 присоединен резистор 330 ом за ним светодиод и на "землю".

К выводу GP2 присоединен резистор 330 ом за ним светодиод и на "землю". Вся схема.

Вот программа на АСМе:

; PIC12F629 Кварц 4 МГц.

LIST p=12F629

#include<p12f629.inc>

__CONFIG_XT_OSC_WDT_OFF_PWRTE_ON

;------------------------------------------------------------------------------------------------

; Определение положения регистров специального назначения.

;------------------------------------------------------------------------------------------------

GPIO equ 05h

Status equ 03h

TRISIO equ 85h

;------------------------------------------------------------------------------------------------

; Определение названия и положения регистров общего назначения.

;================================================================================================

RP0 equ 5 ;Присваивание 5 биту имени RPO регистра Status.

;------------------------------------------------------------------------------------------------

; Определение места размещения результатов операций.

;------------------------------------------------------------------------------------------------

w equ 0

F equ 1

;------------------------------------------------------------------------------------------------

; Текст рабочей части программы.

;------------------------------------------------------------------------------------------------

; Установка направления работы портов.( Переписано из ДШ по пикам).

;------------------------------------------------------------------------------------------------

Start bcf Status,RP0 ;Переходим в 0-й банк.

clrf GPIO ;Инициализация защелок GPIO.

movlw 0x07

movwf CMCON ;Каналы GPIO-цифровые входы-выходы.

bsf Status,RP0 ;Переходим в 1-й банк.

movlw .8 ;Значения для инициализации

;направления каналов GPIO (00001000).

movwf TRISIO ;Канал 3 настроен на вход-остальные на выход.

bcf Status,RP0 ;Переходим в 0-й банк.

;------------------------------------------------------------------------------------------------

d movlw .6 ;(00000110) на выводах GP1,GP2 установить "1"

movwf GPIO ;Зажеч светодиоды и больше ничего не делать.

goto d

end

В PROTEUSe на выводах ПИКА никакого движения (ни "0" ни "1" нет) симулятор ошибки не выдает.

ПО поводу изучения СИ-согласен .В основном все рекомендую книгу Ю.Шпака -Программирование PIC иAVR.

Что то еще есть по ПИКам на СИ?

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


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

В мои руки сначала попал компилятор, который описан в этой книге, а потом и сама книга. Теперь вот привык к нему ;). Но это как кому. Книга Кэригана в передоде. Там чистый Си++.

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


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

Открыл сегодня microC - 6.0(Он установлен был раньше), начал просматривать примеры и нашел

похожий на мою задачу. В журнале Радиоаматор за 2006 год есть краткое описание работы в microC с примерами. :rolleyes:

Модифицировал пример под свою схему, ПИК взял 16F628A (компиляция прошла успешно),

потом залил HEX-файл в ПИК в PROTEUSe и схема заработала!!!!!! :lol:

Книга Кэригана у меня есть - теперь буду плотно ее изучать.

Теперь туже схему попробую сделать на 12F629 в microC. Спасибо. ;)

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


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

Пробовал запустить PIC12F629, PIC12F675 в PROTEUSe (6.9sp5).

Ничего не выходит.

Брал готовые примеры из microC -компилировал-заливал в PIC12F629, PIC12F675 в PROTEUSe (6.9sp5)-тишина!!

Видно не хочет мой PROTEUS их обрабатывать :(

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


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

В железе пока не пробовал, остановлюсь на PIC 16F628A. переустановлю PROTEUS новую версию, попробую еще раз, а потом буду пробовать в железе PIC 12F629.

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


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

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

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

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

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

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

Войти

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

Войти сейчас


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

    • Автор: karomag
      Добрый день.
      Экспериментирую с подключение 7-сегментного индикатора к мк stm32. Индикатор с общим катодом. Соответственно для вывода цифры необходимо на анод каждого сегмента подать 1, а на общий катод 0. И тут я не могу понять какие токи будут через порты. Теоретически, пины МК подключенные через резистор 300 Ом к аноду (напряжение МК 3.3 В) то ток будет 4 мА, тогда на общем катоде должно быть 7 * 4 = 28 мА (цифра 8, т.е. горят все сегменты). Т.е. это небольшое, но превышение макс тока на ногу 20 мА. И надо общий вывод подключать через транзисторный ключ.
      Взял мультиметр. Результаты замера: ток каждого сегмента ~2.5 мА, ток общего катода 5 мА. Вот тут я подумал о школе Хогвардс))) Как все таки рассчитывается все таки ток на общем выводе? 
    • Автор: art_budka
      Ищу подрядчика для разработки проекта робота-рисовальщика. Есть бюджет, ТЗ. 
      Устройство представляет собой манипулятор передвигающий головку в плоскости XY в пределах жесткой рамы на которой установлены двигатели и направляющие перемещения. Головка представляет собой блок, отвечающий за передвижение закрепленного в фиксаторе объекта-пера по оси Z на расстояние до 20 мм. Фиксатор на элементе подъёма головки должен обеспечить жесткое закрепление предметов массой 10 - 80 грамм - кистей, шариковых ручек, карандашей и маркеров диаметром от 5 до 20 мм.
      Решение необходимо для обеспечения точных, многократно повторяющихся перемещений “пера” над плоской поверхностью. Для формирования движений в устройстве должна быть реализована электромеханическая схема, подключенная посредством USB-интерфейса к персональному компьютеру для отправки команд на манипулятор и получения обратной связи от контроллера манипулятора. 
      ТЗ, смета и бюджет через art_budka@rambler.ru 
    • Автор: green_whale
      Доброго времени суток.
      Собственно, сразу к делу. Необходимо измерить вч напряжение (частота порядка 20кГц, максимальная амплитуда 75мВ) с помощью микроконтроллера (скорее всего будет использоваться Arduino).
      Форма входного сигнала - пила (возрастает от минимального значения до максимального). Сигнал однополярный.
      Измерить нужно именно максимальное значение входящего сигнала. Измерение должно быть весьма точным (желательно, чтобы погрешность не превышала 1-2%).
      Есть пару идей :
      1. Сгладить сигнал, используя пиковый детектор (сможет ли сигнал такой частоты и формы зарядить конденсатор?).
      2. Использовать цап для генерации постепенно снижающегося напряжения и аналоговый компаратор.

      Надеюсь, кто-нибудь уже решал подобную проблему и сможет помочь советом или схемой.
    • Гость мистер_чувак
      Автор: Гость мистер_чувак
      Здравствуйте. Нашёл свои старые китайские портативные колонки, которые давно уже разобрал и потерял некоторые провода. Помогите разобраться, что к чему соединять, чтобы работало.
      фотка1
      фотка2
      фотка3
      фотка4
      фотка5
      фотка6
      фотка7
    • Автор: butyavk
      Компания "Диаконт" приглашает на собеседование по вакансии инженер-программист микроконтроллеров.
      Мы производим и поставляем современные приборы управления электроприводами для различных отраслей отечественной промышленности.
      Пополняем нашу команду программистов (готовы принять 2-3 кандидатов с различным опытом работы)!

      Основные обязанности:
      Разработка программного обеспечения для блоков управления приводами и др. вычислительных систем.
      Программирование на C++ микроконтроллеров фирмы Texas Instruments и НИИЭТ на базе ядра ARM Cortex-M4.
      Поддержка и доработка существующего программного обеспечения.
      Участие в научно-исследовательских и опытно-конструкторских работах.
      Участие во внедрении систем на объектах (редкие командировки).

      Требования к кандидатам:
      Хорошее знание схемотехники;
      Знание методов разработки и проектирования ПО для микроконтроллеров и опыт работы с их периферией;
      Знание основ управления электроприводами и ТАУ;
      Знание языков программирования высокого уровня (C++, C);
      Знание современных методов разработки ПО (ООП, ...);
      Знание английского языка (чтение технической документации);
      Приветствуется знание Python, Matlab/Octave;
      Дополнительным плюсом будет опыт автоматизированного тестирования встроенного ПО.

      Условия:
      Оплата полностью белая (на руки в зависимости от знаний и опыта от 50 000 руб до 100000 руб). Но, готовы обсуждать!;
      Карьерный и профессиональный рост;
      Предприятие с комфортными условиями труда на севере города;
      ДМС;
      График работы понедельник - пятница 9:00-17:40;
      Плавающее начало работы с 8:00-10:00;
      Льготное питание в столовой на территории предприятия;...

      Ключевые навыки
      Программирование микроконтороллеров
      C/C++
      Управление электродвигателями

      Адрес
      Санкт-Петербург, ул. Учительская 2, м. Гражданский проспект

      Тип занятости
      Полная занятость, полный день

      Резюме лучше отправлять на rykov@diakont.com