• Объявления

    • admin

      Просьба всем принять участие!   24.11.2017

      На форуме разыгрывается спектроанализатор Arinst SSA-TG LC (цена 18500 руб). Просьба всем перейти по ссылке ниже и принять участие!

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

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    0

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

Изучайте СИ.

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

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

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


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

Изучайте СИ.

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

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

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

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

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

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


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

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

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

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

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


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

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

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

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

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


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

Если Вы про физическую схему подколючения - то разницы нет. Остальное делает программатор сам. А если про регистры банки памяти то сомторите в 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    0

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

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


Ссылка на сообщение
Поделиться на других сайтах
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.

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


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

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

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

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

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

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

Войти

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

Войти сейчас


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

    • Автор: Serega4789
      Привет всем! пишу программу для pic16f84a кривошипный пресс, получилось запустить один режим (одноходовый) без блокировок и защит , для реализации двурукого включения нужно, чтобы нажимались 2 кнопки , при этом нужно чтобы программа следила за интервалом времени между нажатием 2х кнопок , при одновременном нажатии программа запоминает это событие и через 3-5 циклов сбрасывает ошибку и блокирует схему до сброса , при интервале 0,5 сек между нажатием кнопок программа выполниться без ошибок , при превышении интервала в 0,5с придется заново нажать на кнопки !
      Не хватает знаний команд и опыта для построения кода
      LIST p=16F84A 
      __CONFIG 03FF1H 
      status equ 03h 
      portb equ 06h 
      trisb equ 06h 
      porta equ 05h 
      trisa equ 05h 
      Reg1 equ 20h 
      Reg2 equ 21h 
      Reg_1 equ 10h 
      Reg_2 equ 11h 
      Reg_3 equ 12h 
      org 0 
      clrf portb 
      bsf status,5 
      clrf trisb 
      bcf status,5 
      back bcf portb,2 
      bcf portb,1 
      btfsc porta,2 
      goto m1 
      goto back 
      m1 btfsc porta,0 
      goto m2 
      goto back 
      m2 bsf portb,1 
      m5 btfsc porta,1 ;1111 
      goto m3 
      goto m5 
      m3 movlw .0 
      movwf Reg1 
      Metka incf Reg1,1 
      bcf status,2 
      movlw .10 
      subwf Reg1,0 
      btfsc status,2 
      goto m4 
      goto Metka 
      m4 clrf Reg1 
      bsf portb,2 
      btfss porta,2 
      goto back 
      goto m4 
      end
      Привет всем! пишу программу для pic16f84a кривошипный пресс, получилось запустить один режим (одноходовый) без блокировок и защит , для реализации двурукого включения нужно, чтобы нажимались 2 кнопки , при этом нужно чтобы программа следила за интервалом времени между нажатием 2х кнопок , при одновременном нажатии программа запоминает это событие и через 3-5 циклов сбрасывает ошибку и блокирует схему до сброса , при интервале 0,5 сек между нажатием кнопок программа выполниться без ошибок , при превышении интервала в 0,5с придется заново нажать на кнопки !
      Не хватает знаний команд и опыта для построения кода
      LIST p=16F84A 
      __CONFIG 03FF1H 
      status equ 03h 
      portb equ 06h 
      trisb equ 06h 
      porta equ 05h 
      trisa equ 05h 
      Reg1 equ 20h 
      Reg2 equ 21h 
      Reg_1 equ 10h 
      Reg_2 equ 11h 
      Reg_3 equ 12h 
      org 0 
      clrf portb 
      bsf status,5 
      clrf trisb 
      bcf status,5 
      back bcf portb,2 
      bcf portb,1 
      btfsc porta,2 
      goto m1 
      goto back 
      m1 btfsc porta,0 
      goto m2 
      goto back 
      m2 bsf portb,1 
      m5 btfsc porta,1 ;1111 
      goto m3 
      goto m5 
      m3 movlw .0 
      movwf Reg1 
      Metka incf Reg1,1 
      bcf status,2 
      movlw .10 
      subwf Reg1,0 
      btfsc status,2 
      goto m4 
      goto Metka 
      m4 clrf Reg1 
      bsf portb,2 
      btfss porta,2 
      goto back 
      goto m4 
      end
      Привет всем! пишу программу для pic16f84a кривошипный пресс, получилось запустить один режим (одноходовый) без блокировок и защит , для реализации двурукого включения нужно, чтобы нажимались 2 кнопки , при этом нужно чтобы программа следила за интервалом времени между нажатием 2х кнопок , при одновременном нажатии программа запоминает это событие и через 3-5 циклов сбрасывает ошибку и блокирует схему до сброса , при интервале 0,5 сек между нажатием кнопок программа выполниться без ошибок , при превышении интервала в 0,5с придется заново нажать на кнопки !
      Не хватает знаний команд и опыта для построения кода
      LIST p=16F84A 
      __CONFIG 03FF1H 
      status equ 03h 
      portb equ 06h 
      trisb equ 06h 
      porta equ 05h 
      trisa equ 05h 
      Reg1 equ 20h 
      Reg2 equ 21h 
      Reg_1 equ 10h 
      Reg_2 equ 11h 
      Reg_3 equ 12h 
      org 0 
      clrf portb 
      bsf status,5 
      clrf trisb 
      bcf status,5 
      back bcf portb,2 
      bcf portb,1 
      btfsc porta,2 
      goto m1 
      goto back 
      m1 btfsc porta,0 
      goto m2 
      goto back 
      m2 bsf portb,1 
      m5 btfsc porta,1 ;1111 
      goto m3 
      goto m5 
      m3 movlw .0 
      movwf Reg1 
      Metka incf Reg1,1 
      bcf status,2 
      movlw .10 
      subwf Reg1,0 
      btfsc status,2 
      goto m4 
      goto Metka 
      m4 clrf Reg1 
      bsf portb,2 
      btfss porta,2 
      goto back 
      goto m4 
      end

    • Автор: Qwer11
      Здравствуйте.
      У меня есть микроконтроллер pic18f4550,
      я научился мигать светодиодом в flowcode и хотел бы сделать гирлянду,
      и небольшую вывеску из светодиодов.
      Как я понимаю на ножку микроконтроллера смогу не много поставить светодиодов т.к. там ограничение по току будет.
      поэтому исходя из схемы что я нашёл, используют транзистор для включения линии из светодиодов,
      какой транзистор по хар-кам подойдёт для включения 20 светодиодов в линии, (20мАх20=400мА)

      и как например я смогу включать светодиоды поочерёдно в одной линии,
      я читал что есть74HCT595, для экономии ножек например, при подключении индикатора светового,
      как я понимаю, для включения 20 светодиодов поочерёдно нужно или 20 портов использовать и 20 проводов,
      или перед каждым светодиодом поставить микросхемку какую нибудь, которая будет давать сигнал на включение.
      Спасибо.
    • Автор: Serge77
      Обязанности:
      · Разработка радиоэлектронных и GSM-устройств: разработка схем, программирование, разводка печатных плат, разработка документации.
      · Программирование микроконтроллеров STM, AVR, ARM, PIC на языке С/С++
       
      в личку или en@argument74.com
    • Автор: east1095
      Здравствуйте, давно читаю форум, зарегистрировался только сегодня, хочу попросить советов у вас для очередной работы.
       
      1. Мощность 30 кВт, напряжение 2 кВт, 15 А ток.
      2. Планирую полумост;
      вопросы:
      1. Шим контроллер должен поддерживать регулировку к.заполнения, с заданным dU/dT, это планирую делать с МК, потому что в случае пробоя быстроействуюий ключ даст сигнал об остановке преобразователя, потом будет строб, потом пуск источника, при этом он должен выйти на напряжение на котором произошла остановка работы с более коротким (быстрее) dU/dT, это можно реализовать с МК, завести сигнал с датчика КЗ.
      При этом нужна регулировка напряжение и регулировка уставки максимального тока(в приципе в схеме защиты от КЗ она уже реализована)
       
      2. Полумоста хватит на такую мощность?
      3. Можно ли с помощью софта рассчитать трансформатор на такие характеристики? Lite_calcIT не осилил такую задачу.
      4. 1 трансформатор или набор модулей соединенных последовательно для обеспечения нужного напряжения?
      5. Ткните носом в краткую но понятную ветку/статью о резонансных и квазирезонансных и других типах схем, т.к. я недостаточно в этом подкован, немного другие интересы, однако.
       
      Заранее спасибо!
    • Автор: пафнут
      доброго времени! недавно начал изучать pic контроллеры, бошка пухнет. вопрос в следующем: как в ассемблере реализуется процедура шим
      1)к пример у меня имеется одна кнопка и переключаю я ей три светодиода по принципу регистра сдвига и мне нужно чтобы каждому из трех светодиодов соответствовал к примеру коэффициент заполнения 30, 60, и 100%( делаю себе подогрев жопы к зиме)
      2) можно ли обращаться к кнопке при организации процедуры выполнения 15 минутной  задержки, чтобы я мог в любой момент его выключить до истечения 15 минут
      в прикрепленках сама схема в протеусе , но программу я написал только для включения одного светодиода, чтоб с одним хотя бы разобраться и тайминг поставил 5 сек, так сказать для наглядности
      pic.asm
      pic16.DSN