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

У очень начинающего не выполняется вызов функции

15.07.2024, 18:45. Показов 691. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Имеется PIC16F684/ На вход подключены две одинаковые кнопки с фиксацией. На ножках при нажатиях видно переключение с "0" на "1". Но вызывается и работает только одна функция LEDS(), вторая функция "SONG" при нажатии кнопки BUT3 не работает.
И ещё вопрос. В описании 16PIC684 указано, что МК имеет возможность ISP, но когда я пытаюсь подключиться к этим трём ногам, чтобы использовать их как обычно на вход-выход, программер PICkit 3 говорит, что не может программировать. Буду благодарен за совет.

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
/* 
 * File:   Base_PIC16F684.c
 * Author: efimius
 *
 * Created on June 24, 2024, 2:07 PM
 */
// CONFIG
 
#pragma config FOSC = INTOSCCLK // Oscillator Selection bits (INTOSC oscillator: CLKOUT function on RA4/OSC2/CLKOUT pin, I/O function on RA5/OSC1/CLKIN)
#pragma config WDTE = OFF        // Watchdog Timer Enable bit (WDT enabled)
#pragma config PWRTE = OFF      // Power-up Timer Enable bit (PWRT disabled)
#pragma config MCLRE = OFF       // MCLR Pin Function Select bit (MCLR pin function is MCLR)
#pragma config CP = OFF         // Code Protection bit (Program memory code protection is disabled)
#pragma config CPD = OFF        // Data Code Protection bit (Data memory code protection is disabled)
#pragma config BOREN = OFF       // Brown Out Detect (BOR enabled)
#pragma config IESO = OFF        // Internal External Switchover bit (Internal External Switchover mode is enabled)
#pragma config FCMEN =OFF       // Fail-Safe Clock Monitor Enabled bit (Fail-Safe Clock Monitor is enabled)
 
#define _XTAL_FREQ 8000000
#define LIGHT PORTCbits.RC3 //PIN #7 Controls leds
#define MUSIC PORTCbits.RC0 //PIN #10 Controls music chip
#define BUT1 PORTAbits.RA5 //PIN #2) TOGGLE BUTTON  log "0" or log "1"
#define BUT2 PORTAbits.RA2 //PIN #11 TOGGLE BUTTON  log "0" or log "1"
#define BUT3 PORTAbits.RA4 //PIN #4  TOGGLE BUTTON  log "0" or log "1"
 
#include <xc.h>
#include <stdio.h>
#include <stdlib.h>
 
 
//========================================
void SONG(void)
{
    if(BUT3==1)    // IF toggle button3 is "ON" (log"1")
    {
       MUSIC=0;         //Than set log "0" on PIN 2. launch music
       __delay_ms(200); //process delay
       MUSIC=1;          //Than set log "1" on PIN 2. Stop music
       __delay_ms(200); //process delay
    }
}
//=====================================
void LEDS(void)
{
 
 if(BUT1==1)        // IF toggle button1 is "ON" (log"1")
 {
    LIGHT=1;        //Than set log "1" on PIN 10. Launch led
    __delay_ms(50); //process delay
    LIGHT=0;        //Than set log "1" on PIN 10. Stop led
    __delay_ms(500);//process delay
 } 
}
 
//======================================    
void main(void) 
{
    TRISA = 0b11111111;        //PORT A INPUT
    TRISC = 0b00000000;        //PORT C OUTPUT
    CMCON0 = 7;     //  Turn off Comparators       
    ANSEL = 0;     //  Turn off ADC
    
   
   while(1)    // Call function loop
   {      
       SONG();
       LEDS();
   }
 
}
//=============================
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
15.07.2024, 18:45
Ответы с готовыми решениями:

Очень сложное задание для начинающего
Пользователь вводит ряд слов, программа выводит их, отсортировав в обратном порядке.

Подскажите книгу для очень начинающего админа
Програмирование неплохо изучил, сейчас хочу ночать изучать администрирование. Есть книга &quot;Domino версий 5 и 6. Администрирование...

Протокол MODBUS. Не работает вызов вызов функции из подключенной библиотеки DLL внутри функции purebasic
Доброго дня всем. Задача определить ip подключенного устройства. При работе непосредственно из основного кода программы ip...

15
Эксперт .NET
 Аватар для Rius
12344 / 7330 / 1624
Регистрация: 25.05.2015
Сообщений: 22,179
Записей в блоге: 14
15.07.2024, 18:51
Цитата Сообщение от efimius Посмотреть сообщение
И ещё вопрос. В описании 16PIC684 указано, что МК имеет возможность ISP, но когда я пытаюсь подключиться к этим трём ногам, чтобы использовать их как обычно на вход-выход, программер PICkit 3 говорит, что не может программировать.
Обычно такие пины используют исключительно для программирования. Если же позарез нужны для обмена, то можно переключить в другой режим. Но в этом случае об использовании отладчика речи уже не идёт.

Схему выложите сюда.
1
1 / 1 / 0
Регистрация: 27.04.2013
Сообщений: 68
15.07.2024, 19:33  [ТС]
И ещё интересная вещь. При переключении BUT1 я вижу 4.9 вольта и 0 вольт, а на BUT3 2.7 вольта и 0 вольт. Может это брак ПИКа? Я покупал десять таких, все так работают. Серия?
0
Эксперт .NET
 Аватар для Rius
12344 / 7330 / 1624
Регистрация: 25.05.2015
Сообщений: 22,179
Записей в блоге: 14
15.07.2024, 19:39
Схему выложите сюда.

Есть подозрение, что вы не знаете, что такое подтяжка и в схеме её нет.
0
1 / 1 / 0
Регистрация: 27.04.2013
Сообщений: 68
15.07.2024, 20:30  [ТС]
Это азбука, все кнопки подтянуты к 5 вольтам через сопротивления 4.7 кОм. Я же написал, что физически вижу тестером на входных пинах как при нажатии меняются 0 и 1. Так что со входом мне кажется проблем нет. На выходах тоже. Если я убираю в функциях IF, всё работает. Мне кажется что-то с кодом не то.
0
Эксперт .NET
 Аватар для Rius
12344 / 7330 / 1624
Регистрация: 25.05.2015
Сообщений: 22,179
Записей в блоге: 14
15.07.2024, 20:54
Цитата Сообщение от efimius Посмотреть сообщение
Я же написал, что физически вижу тестером на входных пинах как при нажатии меняются 0 и 1. Так что со входом мне кажется проблем нет.
А мне кажется, есть:
Цитата Сообщение от efimius Посмотреть сообщение
а на BUT3 2.7 вольта и 0 вольт
Добавлено через 2 минуты
При инициализации установите
OPTION_REG &= 0x7F
WPUA = 0x30 или 0x00

Добавлено через 17 минут
RA4 от RA5 отличается тем, что относится к аналоговым входам и может выводить тактовую частоту.
АЦП вы вроде выключили, а частоту нет.
Запишите в регистр CONFIG значение, отключающее CLKOUT.
Чип получится, возможно, окирпичить, поэтому внимательнее с битами.
1
1 / 1 / 0
Регистрация: 27.04.2013
Сообщений: 68
15.07.2024, 21:05  [ТС]
Вот схема
0
1 / 1 / 0
Регистрация: 27.04.2013
Сообщений: 68
15.07.2024, 21:29  [ТС]
Цитата Сообщение от Rius Посмотреть сообщение
При инициализации установите
OPTION_REG &= 0x7F
WPUA = 0x30 или 0x00
Сделал, не помогло 2.7 вольта
0
Эксперт .NET
 Аватар для Rius
12344 / 7330 / 1624
Регистрация: 25.05.2015
Сообщений: 22,179
Записей в блоге: 14
15.07.2024, 21:35
Дальше пробуйте.

Осциллограф хорошо бы заиметь.

Добавлено через 4 минуты
Цитата Сообщение от efimius Посмотреть сообщение
работает только одна функция LEDS()
LIGHT
PORTCbits.RC3
4B - 4C

А выход 4C к светодиодам не подключён. Так как же он работает?
0
1 / 1 / 0
Регистрация: 27.04.2013
Сообщений: 68
15.07.2024, 21:37  [ТС]
Цитата Сообщение от Rius Посмотреть сообщение
RA4 от RA5 отличается тем, что относится к аналоговым входам и может выводить тактовую частоту.
АЦП вы вроде выключили, а частоту нет.

Видимо это неважно. Я поменял кнопки местами. Кнопка теперь работает и с 2.7 вольта.
0
Эксперт .NET
 Аватар для Rius
12344 / 7330 / 1624
Регистрация: 25.05.2015
Сообщений: 22,179
Записей в блоге: 14
15.07.2024, 21:37
Ууу, с таким подходом вы никуда не уедете...
0
1 / 1 / 0
Регистрация: 27.04.2013
Сообщений: 68
15.07.2024, 21:55  [ТС]
Цитата Сообщение от Rius Посмотреть сообщение
А выход 4C к светодиодам не подключён. Так как же он работает?
Светодиоды как раз и мигают. Они подключены к RC3 pin7. Проблема с RC0, там постоянно 0

Добавлено через 10 минут
Осциллограф есть и цифровой и ана
Цитата Сообщение от Rius Посмотреть сообщение
Осциллограф хорошо бы заиметь.
Есть и цифровой и аналоговый, хотя, как говорил Сатин в "На дне" Горького: "Осциллографы делают, а смотреть нечего"
Сама логика программы верная?
0
Эксперт .NET
 Аватар для Rius
12344 / 7330 / 1624
Регистрация: 25.05.2015
Сообщений: 22,179
Записей в блоге: 14
15.07.2024, 22:03
Цитата Сообщение от efimius Посмотреть сообщение
Светодиоды как раз и мигают. Они подключены к RC3 pin7. Проблема с RC0, там постоянно 0
А я смотрю на схему, и там RC0 подключён к светодиодам, а RC3 - нет. Следовательно, схема не верная.

Цитата Сообщение от efimius Посмотреть сообщение
Есть и цифровой и аналоговый
Посмотрите им, нет ли меандра на порту RA4.
Им же посмотрите, идёт ли сигнал на RC0. И для этого не обязательно даже опрашивать кнопку, а просто менять пин RC0 в бесконечном цикле.

Цитата Сообщение от efimius Посмотреть сообщение
Сама логика программы верная?
На простом уровне вроде бы да. Но здесь - не всё, что нужно.
0
1 / 1 / 0
Регистрация: 27.04.2013
Сообщений: 68
15.07.2024, 22:12  [ТС]
Цитата Сообщение от Rius Посмотреть сообщение
Ууу, с таким подходом вы никуда не уедете...
Уеду, если пойму почему 2.7 вольта или 4 вольта значения не имеют, а на выходе RC0 (PIN10) постоянно 0, не реагирующий на кнопку, и почему не работает if(BUT3==1) // IF toggle button3 is "ON" (log"1")

Добавлено через 2 минуты
Цитата Сообщение от Rius Посмотреть сообщение
На простом уровне вроде бы да. Но здесь - не всё, что нужно.
Что нужно добавить для не простого уровня, я ведь учусь?
0
Эксперт .NET
 Аватар для Rius
12344 / 7330 / 1624
Регистрация: 25.05.2015
Сообщений: 22,179
Записей в блоге: 14
15.07.2024, 22:21
Ага.

Разбейте задачу на более простые.
Отладьте каждую часть независимо.
И пользуйтесь осциллографом для наблюдения за сигналами, а не вольтметром.

Добавлено через 1 минуту
Регистры конфигурации проверьте. В коде они не показаны.

Добавлено через 7 минут
О , показаны.

См 1 пост строку 9
и
6 пост 3 часть.
0
1 / 1 / 0
Регистрация: 27.04.2013
Сообщений: 68
16.07.2024, 00:32  [ТС]
Цитата Сообщение от Rius Посмотреть сообщение
См 1 пост строку 9
Вы, как всегда правы, Rius. Проштудировал даташит и выяснил, что для работы с внутренним генератором есть не олин, а лва режима, для чего? Сие тайна велика есть. В одном режиме (именно в моём) только один пин внешнего генератора становится входом-выходом, а вторая конфигурация делает оба пина входом-выходом. заменил FOSC = INTOSCCLK на FOSC = INTOSCIO.
Спасибо за наводку.

Добавлено через 1 час 23 минуты
Понял. Тот режим, что я выбрал, предназначен для RC цепочки поэтому RA4 в моём режиме этот пин нельзя было использовать. Не очень понятно, потому что режим с внешней RC цепочкой я бы отнёс скорее к понятию внешнего генератора, даже если эта цепочка внутрисхемно подключается к внутреннему генератору. Тогда для юзера было бы понятней и он выбирал бы единственный режим внутреннего генератора. Но во-первых, конечно, этот МК очень старый, а во-вторых кто я такой, чтобы им указывать.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.07.2024, 00:32
Помогаю со студенческими работами здесь

Запрос выполняется очень долго
Обращаюсь к специалистам за помощью. Задача, поставленная в данной базе решена. Но последний запрос (запрос2) зависает на 8-10...

Запрос выполняется очень долго
Помагите оптимизировать запрос. Выполняется бесконечно долго (Запрос занял 95.9257 сек.) SELECT sklad.* FROM sklad LEFT JOIN prodal ON...

Очень долго выполняется запрос
Запрос выполняется минут десять. Разве так должно быть? Обрисовываю ситуацию. Берутся две главные таблицы и одна связующая со связями...

Инжектор dll, не выполняется вызов MessageBox
имеется код: #include &lt;windows.h&gt; #include &lt;TlHelp32.h&gt; #include &lt;iostream&gt; using namespace std; DWORD func(const char...

Простой запрос выполняется очень долго
Здравствуйте. Пишу веб-приложение на asp.net. Выполняется запрос, который просто получает все данные из таблицы. То есть самый простой...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Dev-c++5.11 Покорение вершины
russiannick 02.06.2025
С утра преследовала одна мысль - вот бы выучить С++. Сказано-сделано. Окончив смену, скачал в интернете бестселлер Дэвиса Dev-C++ для чайников. Книга оказалась интересной и я скачал среду, на примере. . .
Тестирование Pull Request в Kubernetes с GitHub Actions и GKE
Mr. Docker 02.06.2025
Мы все знаем, что тестирование на локальной машине или в изолированном CI-окружении — это не совсем то же самое, что тестирование в реальном кластере Kubernetes. Контекстно-зависимые ошибки, проблемы. . .
Оптимизация CMake для ускорения сборки
bytestream 02.06.2025
Вы когда-нибудь ловили себя на мысле, что пока ваш проект компилируется, можно успеть сварить кофе, прочитать главу книги или даже сбегать в соседний офис? Если да, то добро пожаловать в клуб. . .
JS String.prototype.localeCo­mpare()
mr_dramm 02.06.2025
скопировано из этой темы чтобы не потерялось. localeCompare без указания локали для сравнения строк под капотом использует Intl. Collator , который работает согласно Unicode Collation Algorithm. . .
Облако проектов
russiannick 01.06.2025
Слава Джа, написал прогу для компиляции. Значит написал компилятор? Обьем кода 300+ строк. Язык-яву. Вводим данные, заполняем поля, тычем радиобаттоны. И по итогу в поле результат получам листинг. . .
Rust и квантовые вычисления: интеграция с Q# и Qiskit
golander 01.06.2025
Мир квантовых вычислений традиционно оставался закрытым клубом для высокоуровневых языков типа Python и специализированных DSL вроде Q#. Однако в последние годы Rust начал тихую революцию в этой. . .
Кэш REDIS и C#
UnmanagedCoder 01.06.2025
Redis (Remote Dictionary Server) - это ультраскоростное хранилище данных в оперативной памяти, работающее по принципу "ключ-значение". Суть проста: данные хранятся не на диске, а прямо в RAM, что. . .
Lenovo IH110CX Rev: 1.0 motherboard manual
Maks 01.06.2025
Размещения без повторений
VistaSV30 31.05.2025
Код возвращает список вариантов размещений A^{k}_{n}=\frac{n!}{(n-k)!} from itertools import permutations def pwr(k, n): # Размещение без повторений (Placement without repetition) if k. . .
Redis и Node.js с TypeScript - решения для высоконагруженных систем
Reangularity 31.05.2025
Redis (Remote Dictionary Server) — сверхбыстрое хранилище данных в памяти, способное обрабатывать операции за микросекунды. И что особенно важно для нас — с удивительно простым API. А теперь. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
OSZAR »