Тема: Пианино
Показать сообщение отдельно
Старый 16.04.2009, 19:53   #55
tester
Super Moderator
 
Аватар для tester
 
Регистрация: 28.02.2007
Возраст: 42
Сообщений: 3,577
Вес репутации: 4386/125
tester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond repute
По умолчанию Re: Пианино

Цитата:
Сообщение от michipic Посмотреть сообщение
Ага, другой. PIC16F877. Набросал схему по аналогии с показанными в статье.


Стал разбираться, как ввести в программу конфигурацию этого МК...
Оказалось, что параметры конфигурации - в самых разных местах, и уверенности что всё обнаружил, нет. Попробовал найти HI-TECH PICC STD, по самым популярным местам - казус, сахара, - облом. Короче, нужна помощь автора. Прошу хекс, пригодный для прошивки в PIC16F877.
Конфигурация:
Код:
    __CONFIG (UNPROTECT & BORDIS & WDTDIS & LVPDIS & HS & DEBUGDIS);
Готовую прошивку сейчас не сделаю: самой жлезки нет под рукой, да и ни одной готовой макетки под 40-ногий ПИК нет.

Что нужно изменить:
В Init():
- настройку ADC-модуля;
- отключение компаратора (если используется 877A)

В const.h:
добавить секцию:
Код:
#ifdef _16F877
    __CONFIG (UNPROTECT & BORDIS & WDTDIS & LVPDIS & HS & DEBUGDIS);
 
 #define PORTA_CONST     0x...
 #define TRISA_CONST     0x...
 
 #define PORTB_CONST     0x...
 #define TRISB_CONST     0x...
 
 #define PORTC_CONST     0x...
 #define TRISC_CONST     0x...
 
 #define PORTD_CONST     0x...
 #define TRISD_CONST     0x...
 
 #define PORTE_CONST     0x...
 #define TRISE_CONST     0x...
 
 #define pin_BUTTON      RB0        // Сюда цепляется кнопка
 
 #define CCP_bit1        CCP1X
 #define CCP_bit0        CCP1Y
 
 const TColumn  COLUMNS[KBD_COLUMNS] = 
 {
      /* определение аналоговых входов */
 };
 const TRow     ROWS[KBD_ROWS] = 
 {
      /* определение управляющих выходов */
 };
#endif
(Кажись, ничего не забыл)


Цитата:
Ещё есть по схеме вопросы - в программе действительно, есть выбор инструмента, но связать с конкретным пином непонятно как... Прошу пояснить.
Нужно переопределить константу pin_BUTTON в файле const.h. Посмотри, как она определена для других ПИКов.

Цитата:
Попытался эмулировать пианино в Протеусе, чтобы понять, что к чему...
Из доступных там только PIC16F88. Загрузил в него прошивку и прицепил 12 цепей raw - col с ёмкостью 10 пф, и подключаемой параллельно с помощью кнопки емкостью 200 пф. Короче - на осциллограмме ШИМ независимо от нажатия кнопки, в динамике - треск, щелчки... А перебор raw идёт...
Если ничего не напутано в схеме, то не знаю, как помочь: с протеусом никогда не работал.
tester вне форума   Ответить с цитированием