Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
3 / 3 / 1
Регистрация: 24.06.2016
Сообщений: 54

Входной сигнал на PIN_A4 - PIC12f675

12.07.2016, 16:38. Показов 2239. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток. Бьюсь второй день. Не могу понять
Не работают на "вход" порты GP5, GP4.
Компилятор PICC.

Пару слов о схеме.
При нажатии на кнопку подключенную к gp3 меняется состояние светодиодов. С этим проблем нет.
При нажатии на кнопку на gp4 должен моргать D1 (не столь важно). Просто даже при установке высокого уровня на gp4 вручную (через output_bit(PIN_A5,1)) - реакция - ноль!


C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#include <12F683.h>
 
#fuses NOWDT,NOPUT,NOPROTECT,NOCPD,NOMCLR,XT,INTRC
 
#use delay(crystal=20000000)
 
 
 
#include <main.h>
#define TYPE  10  
int swbut=0;
 
int f;
void switchtype();
void clock_isr();
 
void main (void)
{     
   setup_comparator(NC_NC);
   
   set_tris_a(0x10);
   output_a(0x00);
   output_bit(PIN_A5,0); 
       
   f=read_eeprom(TYPE);
   switchtype();  
   
   while(TRUE)
   {
      if(input(PIN_A3)&&swbut==0)
      {            
         f++;         
         if(f>2)f=0;
         swbut++;
         write_eeprom(TYPE,f);
         switchtype();
      }
      if(!input(PIN_A3)&&swbut==1)
      {
         swbut=0;
      }
 
      if(input(PIN_A4)){
         clock_isr();
      }          
          
   }     
}
 
void switchtype ()
{
   output_low(PIN_A0);
   output_low(PIN_A1);
   output_low(PIN_A2);
   switch(f) {
   case 0 :
      output_high(PIN_A0);
      break;
   case 1  :
      output_high(PIN_A1);
      break;
   case 2  :
      output_high(PIN_A2);
      break;
   }
}
void clock_isr() {           
     output_high(PIN_A2);
     delay_ms(50);
     output_low(PIN_A2);
     delay_ms(50);
}
Миниатюры
Входной сигнал на PIN_A4 - PIC12f675  
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
12.07.2016, 16:38
Ответы с готовыми решениями:

Входной сигнал
Может не в тот раздел. Есть ли разница какой сигнал подовать на вход транзистора от источника тока или напряжения?

Спидометр, входной сигнал
На валдае сгорел намотчик спидометра. Он включается в прикуриватель. Разобрал, там платка 1*1см, на ней несколько СМД компонентов и...

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

12
3 / 3 / 1
Регистрация: 24.06.2016
Сообщений: 54
13.07.2016, 08:32  [ТС]
неужели никого...?
0
 Аватар для Voland_
1983 / 1276 / 131
Регистрация: 04.01.2010
Сообщений: 4,607
13.07.2016, 08:55
Цитата Сообщение от sertaliano Посмотреть сообщение
if(input(PIN_A3)&&swbut==0)
Неправильный набор (предполагаемых действий). Как по мне, во множественных условиях всегда нужно использовать скобки для каждой выделенной операции. О приоритетах логических операций можно почитать здесь, но лично я их не зубрил никогда - скобки спасают и в случае приоритетов и просто из соображений читаемости кода.
1
3 / 3 / 1
Регистрация: 24.06.2016
Сообщений: 54
13.07.2016, 08:58  [ТС]
вот с этим как раз проблем нет. Вход с GP3 инициализируется - все в порядке. Но не понимает входы на GP5 И GP4. Да и выходы тоже. Как будто не работают эти ножки совсем. Попробовал создать код мигания светодиода через визард. Подцепил в протеус - история такая же. Ножка GP5 не дает выхода. Может проблема в протеусе?
0
 Аватар для Voland_
1983 / 1276 / 131
Регистрация: 04.01.2010
Сообщений: 4,607
13.07.2016, 09:07
Цитата Сообщение от sertaliano Посмотреть сообщение
Может проблема в протеусе?
может быть. Покопайтесь в настройкам симулятора, отключите использование внешнего кварца. Т.к. в коде-то у вас есть настройки фьюзов. Но на 99% Протеус их не использует, а использует свои собственные предпочтения.
Цитата Сообщение от sertaliano Посмотреть сообщение
вот с этим как раз проблем нет.
Проблема есть . Вы неправильно написали условие. То, что "это" у вас работает и вполне возможно, работает правильно - просто совпадение.
0
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,871
13.07.2016, 09:12
Цитата Сообщение от Voland_ Посмотреть сообщение
Неправильный набор (предполагаемых действий).
не, здесь все в порядке
приоритет операции == 9
приоритет операции && 13
что мы имеем?
сначала вызывается input(PIN_A3) если она не 0
то сравниваем swbut==0
и только потом логическое И

но в целом
Цитата Сообщение от Voland_ Посмотреть сообщение
во множественных условиях всегда нужно использовать скобки для каждой выделенной операции.
поддерживаю, пара скобок это дешевле, чем вылавливать глюки
Цитата Сообщение от sertaliano Посмотреть сообщение
Может проблема в протеусе?
очень может быть, конкретно с ПИКами не работал, но с АВРками встречал косяки
попробуй упростить программу, для начала только инициализацию ножек, и постепенно наращивай функционал
1
3 / 3 / 1
Регистрация: 24.06.2016
Сообщений: 54
13.07.2016, 09:43  [ТС]
пробовал уже.

Добавлено через 7 минут
Интересная заметка. на выходах GP5 и GP4(и только на них) есть OSC1 и OSC2. Может что-то завязано на них?
0
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,871
13.07.2016, 09:53
Цитата Сообщение от sertaliano Посмотреть сообщение
GP5 и GP4(и только на них) есть OSC1 и OSC2.
выводы кварца, как я понимаю?
значит их нужно отключить
сам я ничего не понимаю, но может поможет вот эта статья
https://habrahabr.ru/post/97795/
0
3 / 3 / 1
Регистрация: 24.06.2016
Сообщений: 54
13.07.2016, 09:56  [ТС]
Лучший ответ Сообщение было отмечено Voland_ как решение

Решение

Все, ребята! разобрался.
необходимо в моем коде заменить

C
1
#use delay(crystal=20000000)
на

C
1
#use delay(internal=20000000)
все ж просто. Он как раз и ищет на этих выводах внешний осциллятор.

Всем спасибо)
0
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,871
13.07.2016, 10:36
Цитата Сообщение от sertaliano Посмотреть сообщение
internal=20000000
а унутренняя частота точно 20МГц???
не надо константу поменять?
0
3 / 3 / 1
Регистрация: 24.06.2016
Сообщений: 54
13.07.2016, 10:38  [ТС]
честно говоря, не совсем понимаю зачем эта частота. По умолчанию в протеусе стоит 4. в PICC - 20. Может разъяснит кто?))
0
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,871
13.07.2016, 11:05
наверно для того чтобы функции задержки
Цитата Сообщение от sertaliano Посмотреть сообщение
delay_ms(50)
правильно отрабатывали временной интервал
подключи осциллограф на ножки светодиодов
и поиграйся этой частотой
0
 Аватар для Voland_
1983 / 1276 / 131
Регистрация: 04.01.2010
Сообщений: 4,607
13.07.2016, 14:49
Цитата Сообщение от sertaliano Посмотреть сообщение
Все, ребята! разобрался.
ну вот теперь я ничего не понял. Протеус что, сам разбирает код под PIC, ковыряется в ELF-е и смотрит его уставки? Имхо, он использует натуральный HEX-файл прошивки и пляшет по нему. (ну, функции дебага тоже присутствуют, но они выдираются все равно из уже собранного файла). Соответственно, тут либо компилятор что-то химичит, либо я не понял.

ЗЫ: я зациклил внимание на дефайне "INTRC", которая по идее означала "внутренний осциллятор", что само по себе предполагает высвобождение указанных пинов от внешнего кварца. Но по-видимому, PIC настраивается по-другому, соответственно ошибся с выводом.

Цитата Сообщение от ValeryS Посмотреть сообщение
не, здесь все в порядке
И таки да, был не внимательным. Спасибо ). Просто я особо и не пользовался никогда не четкими приоритетами, и пользую скобки. Особенно это касается еще и тайп каста, и работы с указателями - типа выражений *a++. Некоторые компиляторы (кажись, видел в CVAVR) обращают на это внимание, а некоторые оставляют все на суд разработчика. В этих случаях спасают (от "неправильных" программистов) только всяческие LINT и иже с ними - есть некоторые анализаторы статического кода, которые выявляют подобные опасности.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
13.07.2016, 14:49
Помогаю со студенческими работами здесь

Как обрезать входной сигнал?
делаю вольтметр переменного напряжения от 0 до 300в с частотой от 20 до 500 000 гц. Как мне обрезать все,что ниже 20 гц?

Усилить входной сигнал источника (десятки мВ) с большим внутренним сопротивлением
Подскажите какую-нибудь схему, позволяющую усилить входной сигнал источника (десятки мВ) с большим внутренним сопротивлением (единицы кОм)...

Входной сигнал
Помогите построить входной сигнал, пожаалуйста!)

Входной сигнал
Алгоритм обработки входной информации – алгоритм не рекурсивной цифровой фильтрации имеет вид: {y}_{n}=\sum_{i=0}^{K}{b}_{i}{x}_{n-1} ...

Входной и выходной сигнал
Здравствуйте, ув. Форумчане :) Была поставлена задача &quot;Разработка программы моделирования линейного элемента с насыщением&quot;. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru