Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: pic12f683 не могу настроить фьюзы
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > MCS51, AVR, PIC, STM8, 8bit
Pavel_Bor
Добрый день.
Пытаюсь разобраться с pic12f683, конкретно с его ножками GP4, GP5. Настроить их на вход либо на выход.
Эти ножки по умолчанию настроены на подключение кварца CLKIN и CLKOUT. Не могу их переключить на что-либо другое.
Пробывал фьзами, не получается. Подскажите пожалуйста.
@Ark
Цитата
Эти ножки по умолчанию настроены на подключение кварца CLKIN и CLKOUT.

Это не верно. Режим их использования будет определяться выбором режима тактового генератора. Никаких "умолчаний" там нет. Читайте ДШ.
Pavel_Bor
Цитата(@Ark @ Apr 15 2010, 12:38) *
Это не верно. Режим их использования будет определяться выбором режима тактового генератора. Никаких "умолчаний" там нет. Читайте ДШ.


Я тоже так думаю, но не получается их настроить... Думаю что проблема со фьюзами.
по фьюзам
RC no clock - два пина вх/вых
RC - один пин вх/вых второй показывает частоту.

По даташиту - 4 регистра отвечающие за ножки:
ANSEL - ц/а
GPIO, выс/низ
TRISIO, вх/вых
CMCON0 - компаратор
@Ark
Цитата
RC no clock - два пина вх/вых
RC - один пин вх/вых второй показывает частоту.

Таких режимов там нет. Прочтите, наконец, ДШ:
Цитата
The PIC12F683 can be configured in one of eight clock
modes.
1. EC – External clock with I/O on GP4.
2. LP – Low gain crystal or Ceramic Resonator Oscillator mode.
3. XT – Medium gain crystal or Ceramic Resonator Oscillator mode.
4. HS – High gain crystal or Ceramic Resonator mode.
5. RC – External Resistor-Capacitor (RC) with FOSC/4 output on GP4
6. RCIO – External Resistor-Capacitor with I/O on GP4.
7. INTRC – Internal oscillator with FOSC/4 output on GP4 and I/O on GP5.
8. INTRCIO – Internal oscillator with I/O on GP4 and GP5.

P.S. Разницу между RC и INTRС понимаете? smile.gif
Полагаю, Вам нужен режим INTRCIO.
Pavel_Bor
Даташит читал много раз, только не могу понять.

Чтобы настроить пины GP4, GP5 на вход я выставляю фьюз INTRCIO – Internal oscillator with I/O on GP4 and GP5.
TRISIO=0x30; подаю напряжение на них ( в качестве дебагера протеус). Смотрю на GPIO, он по прежнему равен 0.((
@Ark
Цитата
Чтобы настроить пины GP4, GP5 на вход я выставляю фьюз INTRCIO – Internal oscillator with I/O on GP4 and GP5. TRISIO=0x30

Не забудьте еще установить цифровой режим для GP4, а также для других выводов, если нужно. Еще нужно выключить компаратор и настроить внутренний генератор (выбрать частоту и калибровку). Хотя на GP4 и GP5 это не оказывает влияние. Если не будет работать - все вопросы к Вашему дебагеру. В "железе" все будет нормально работать.
Pavel_Bor
Цитата(@Ark @ Apr 15 2010, 14:16) *
Не забудьте еще установить цифровой режим для GP4, а также для других выводов, если нужно. Еще нужно выключить компаратор и настроить внутренний генератор (выбрать частоту и калибровку). Хотя на GP4 и GP5 это не оказывает влияние. Если не будет работать - все вопросы к Вашему дебагеру. В "железе" все будет нормально работать.

Вчера делал тест на железе высокий уровень через секунду на каждом из портов. Режим INTRCIO. Компаратор отключен. Все пины цифровые. Все выходы, кроме GP3.
При тесте обнаружил что ножка GP4 не выдает высокий уровень, думаете железо полетело? С остальными норм.
Вообще задача состоит в ШИМ сигнале. На дебагере вырабатывается шим, на железе нету(
@Ark
Цитата
При тесте обнаружил что ножка GP4 не выдает высокий уровень, думаете железо полетело? С остальными норм. Вообще задача состоит в ШИМ сигнале. На дебагере вырабатывается шим, на железе нету(

Напишите пару тестов для железа. Переключите все ноги на выход. В цикле, сначала устанавливайте все в ноль, через какую-то паузу - все в 1. Затем снова паузу. Зациклите. Смотрите осциллографом (тестером), что видно на ногах. Если есть признаки жизни, пишите второй тест. Переключите GP4 на вход, GP0 на выход. В цикле читайте GP4 и устанавливайте по нему GP0... Потом аналогично, для GP5...
P.S. Я так понял, первый тест Вы уже сделали...
Pavel_Bor
Цитата(@Ark @ Apr 15 2010, 15:26) *
Напишите пару тестов для железа. Переключите все ноги на выход. В цикле, сначала устанавливайте все в ноль, через какую-то паузу - все в 1. Затем снова паузу. Зациклите. Смотрите осциллографом (тестером), что видно на ногах. Если есть признаки жизни, пишите второй тест. Переключите GP4 на вход, GP0 на выход. В цикле читайте GP4 и устанавливайте по нему GP0... Потом аналогично, для GP5...
P.S. Я так понял, первый тест Вы уже сделали...

Спасибо за консультацию, буду пробывать. При получении какого-либо результата напишу.
Pavel_Bor
Протестировал железо. В качестве среды использовал microc и MPLAB (hi-tech).
В MPLAB не могу правильно настроить фьюзы. GP4,GP5 - подключение кварца.

В microc с фьюзами проблем нет, зато пин GP0 может работать только один, при включении других не дает высокого уровня.
Зато при общем включении порта (GPIO=0x3f) все пины включаются и выключаютя по задержке.
И второй момент microc при настройках GP4 и GP5 на цифровые входы, на них откуда-то появляется напряжение >1В. Хотя фьюз стоит на I/O. при O все норм.
@Ark
Цитата
Зато при общем включении порта (GPIO=0x3f) все пины включаются и выключаютя по задержке.

Ну это уже хорошо. Значит железо "живое" скорее всего. Надеюсь, непосредственно на нем проверяли?
Еще вопрос - чем прошиваете?
P.S. Хотелось бы посмотреть на схему.
Pavel_Bor
Цитата(@Ark @ Apr 21 2010, 20:17) *
Ну это уже хорошо. Значит железо "живое" скорее всего. Надеюсь, непосредственно на нем проверяли?
Еще вопрос - чем прошиваете?
P.S. Хотелось бы посмотреть на схему.

Да, проверял на железе. Прошиваю при помощи WinPic800. Схему выложил.

Вот тест-программа

Код
void main()
{
  unsigned int k1,k2;
  TRISIO=0x30;
  ANSEL=0x00;
  CMCON0=7;
  OPTION_REG=0xff;

  while(1)
  {
    if (GPIO.GP4>0)
    {
      if (GPIO.GP5>0)
      {
        GPIO.GP1=1;
        GPIO.GP2=0;
        delay_ms(100);
        GPIO.GP1=0;
        GPIO.GP2=1;
        delay_ms(100);
      }
    }
  }
}
@Ark
Цитата
Схему выложил...

Не понял. Почему у Вас кнопки от 1,5В запитаны? У пиков порог 0/1 где-то в районе 1,5В! Напряжение питания какое?
Должно быть не менее 2,0В (исправил). Диапазон напряжения питания PIC12F683 от 2В до 5,5В. Минимально допустимое напряжение еще от тактовой частоты зависит. Посмотрите ДШ... Номиналы резисторов нужно увеличить хотя бы до 1К.
Pavel_Bor
Цитата(@Ark @ Apr 22 2010, 11:55) *
Не понял. Почему у Вас кнопки от 1,5В запитаны? У пиков порог 0/1 где-то в районе 1,5В! Напряжение питания какое?
Должно быть не менее 2,0В (исправил). Диапазон напряжения питания PIC12F683 от 2В до 5,5В. Минимально допустимое напряжение еще от тактовой частоты зависит. Посмотрите ДШ... Номиналы резисторов нужно увеличить хотя бы до 1К.


Напряжение питания да, но напряжение подаваемое на ножки другое. Напряжение - 0.6-2В контроллер распознает как логическую единицу, входит в условие, вырабатывает частоту... а не должен. Я поставил напряжение 1.5 с целью его исключения (компенсации), через аналоговый вход АЦП - своебразный тест. Получилось, но не могу выдать сигнал нужной частоту, благодаря задержке АЦП.
Напряжение - 0.6-2В контроллер распознает как логическую единицу, входит в условие, вырабатывает частоту... а не должен.

Схема отличается только тем что нет там кнопок и резисторов, а напряжение поступает с источника питания. Проблема в том что на входах контроллера, при подачи с источника 0 появляется напряжение >0.6В, его не должно быть. Без контроллера на этих нажках все нормально... как только ставлю контроллер появляется напряжение. Пробывал на 4 контроллерах все симптомы одинаковы. Откуда оно может быть?
@Ark
Нужно сначала со схемой разбираться. А потом уже программы писать...
Вы слишком мало информации даете, чтобы Вам помочь...
Нужна реальная схема вашего устройства и того, что к нему подключено.
Pavel_Bor
Цитата(@Ark @ Apr 22 2010, 19:56) *
Нужно сначала со схемой разбираться. А потом уже программы писать...
Вы слишком мало информации даете, чтобы Вам помочь...
Нужна реальная схема вашего устройства и того, что к нему подключено.

В схеме произошли изменения, подключил внешний кварц (20МГц). Сделаю 3 теста
1. Очищу контроллер, настрою фьюз HS, поставлю на макетку
2. Проверю зависимость от настройки (вход/выход). Все значения порта GPIO=0, программно обнуляются.

Напряжение на колодке, при отсутсвии контроллера. 1,4 ножки колодки - 5В. Остальные 0В.
На тесте (1) ножки контроллера GP0,GP1,GP2=0.55В.
Тест (2) При TRISIO=0; GPO,GP1,GP2>1.5В;
При TRISIO=0x3f; GPO,GP1,GP2=0.8В;
Pavel_Bor
Спасибо за помощь! Все заработало. Нужно было ножки на землю вывести.
Pavel_Bor
С microc разобрался заработало, но не могу понять принцип задержки delay_us(). Она настроена на одну чатсоту у меня другой кварц...
Если пользоваться MPLAB не работают GP0, GP1 как входы не на железе не в протеусе. Не могу понять в чем причина... схема та же со внешним кварцом.

Код
#include <htc.h>
__CONFIG(HS);
unsigned char i;
void main (void)
{
  TRISIO=0x03;
  ANSEL=0;
  CMCON0=7;
  GPIO=0;

  while(1);
  {
    if (GPIO0)
    {
      if (GPIO1)
        GPIO2=1;
    }
    else
      GPIO2=0;
  }
}
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.