Большой Воронежский Форум

Если это ваш первый визит, рекомендуем почитать справку по форуму. Для размещения своих сообщений необходимо зарегистрироваться. Для просмотра сообщений выберите раздел.
Вернуться   Большой Воронежский Форум » Компьютеры и все, что с ними связано » »Радиолюбитель
Программирование микроконтролеров,ремонт аудио/видео/бытовой техники,полезные устройства для дома,телефония, обсуждение статей журнала Радио

Ответ
 
Опции темы
Старый 25.11.2010, 06:51   #691   
Форумец
 
Сообщений: 1,525
Регистрация: 19.02.2009
Возраст: 52
Записей в дневнике: 1

petrd вне форума Не в сети
Цитата:
Сообщение от VRTP Посмотреть сообщение
Прерывания по таймеру запрещены.Вот и думаю как сделать!?
Посчитать время цикла выполнения подпрограммы, завести в подпрограмме счетчик, который будет считать циклы, как наберется на 1 сек - выход.
  Ответить с цитированием
Старый 25.11.2010, 08:46   #692   
КваДраНутыЙ
 
Аватар для VRTP
 
Сообщений: 1,435
Регистрация: 29.05.2010

VRTP вне форума Не в сети
Примерно так и хотел,но в реальность пока не соображу как сделать.Буду пробывать.Спасибо.
  Ответить с цитированием
Старый 27.11.2010, 10:32   #693   
Форумец
 
Сообщений: 141
Регистрация: 08.02.2010

otest вне форума Не в сети
Для тех кто пишет на асме и подсчитывае задержки на бумажке выкладываю програмку. Прога не моя гдето скачана.
Вложения
Тип файла: rar pause_v1.2.rar (96.9 Кб, 40 просмотров)
  Ответить с цитированием
Старый 28.11.2010, 11:13   #694   
Форумец
 
Сообщений: 82
Регистрация: 13.09.2010

Азат вне форума Не в сети
Здраствуйте Петр.Попробывал вашу прошивку RC5 все нормально работает.Моя почему то сбоит.Вроде все настройки выставил как у Вас.
Вложения
Тип файла: rar RC.rar (38.5 Кб, 31 просмотров)

Последний раз редактировалось Азат; 30.11.2010 в 11:12.
  Ответить с цитированием
Старый 28.11.2010, 19:57   #695   
Форумец
 
Аватар для Butik
 
Сообщений: 36
Регистрация: 19.10.2010
Возраст: 57

Butik вне форума Не в сети
И вот все таки с работой компаратора (вернее с программированием компаратора в си) непонятно

вот фрагмент кода который работает...

Код:
unsigned short old_GPIO;

void init() {
  CMCON  = 0x07;
  TRISIO   = 0x28;
  OPTION_REG = 0b11000101;
  INTCON.GIE        = 0;
   }

void main() {
init() ;
    do {
   old_GPIO = GPIO;
   if(old_GPIO.F5 == 1)
   {TRISIO =0x28;
   old_GPIO.F1 = 1;
   old_GPIO.F4 = 0;
   GPIO = old_GPIO;}

  if(old_GPIO.F5 == 0)
  {
  CMCON = 0x04;
  VRCON = 0xA3;
  TRISIO = 0x2A;
  Delay_us(10);
  if(CMCON.F6==1){
  old_GPIO.F4 =1;
  GPIO = old_GPIO;}
  }
    }  while(1);

}
а вот так- не работает...

Код:
unsigned short old_GPIO;

void init() {
  CMCON  = 0x07;
  TRISIO   = 0x28;
  OPTION_REG = 0b11000101;
  INTCON.GIE        = 0;
   }

void main() {
init() ;
    do {
   old_GPIO = GPIO;
   if(old_GPIO.F5 == 1)
   {TRISIO =0x28;
   old_GPIO.F1 = 1;
   old_GPIO.F4 = 0;
   GPIO = old_GPIO;}

  if(old_GPIO.F5 == 0)
  {
  CMCON = 0x04;
  VRCON = 0xA3;
  TRISIO = 0x2A;
  Delay_us(10);
  while(CMCON.F6==1){
  old_GPIO.F4 =1;
  GPIO = old_GPIO;}
  }
    }  while(1);

}
где во втором варианте косяк- совсем непонятно.. при компиляции ошибки нет... но ни в протеусе ни в железе не работает

Последний раз редактировалось Butik; 28.11.2010 в 20:47.
  Ответить с цитированием
Старый 30.11.2010, 10:17   #696   
КваДраНутыЙ
 
Аватар для VRTP
 
Сообщений: 1,435
Регистрация: 29.05.2010

VRTP вне форума Не в сети
Вот интересная инфа,для начинающих на Си.
Вложения
Тип файла: rar STARTERK.rar (30.5 Кб, 93 просмотров)
  Ответить с цитированием
Старый 30.11.2010, 14:55   #697   
Форумец
 
Сообщений: 82
Регистрация: 13.09.2010

Азат вне форума Не в сети
Что то Петр пропал!
  Ответить с цитированием
Старый 30.11.2010, 21:54   #698   
Registered User
 
Аватар для romchik77
 
Сообщений: 391
Регистрация: 16.11.2008

romchik77 вне форума Не в сети
я бы сначала сказал спасибо ему
жаль что по AVR нет подобной темки...
  Ответить с цитированием
Старый 01.12.2010, 08:50   #699   
Форумец
 
Сообщений: 82
Регистрация: 13.09.2010

Азат вне форума Не в сети
Спасибо.
  Ответить с цитированием
Старый 01.12.2010, 08:57   #700   
Форумец
 
Сообщений: 1,525
Регистрация: 19.02.2009
Возраст: 52
Записей в дневнике: 1

petrd вне форума Не в сети
Цитата:
Сообщение от Азат Посмотреть сообщение
Здраствуйте Петр.Попробывал вашу прошивку RC5 все нормально работает.Моя почему то сбоит.Вроде все настройки выставил как у Вас.
Да не пропал я. Железо и исходники от этого hex временно недоступны (отпуск), поэтому точного ответа дать не могу, только виртуально. А что значит сбоит?
  Ответить с цитированием
Старый 01.12.2010, 10:36   #701   
Форумец
 
Сообщений: 1,525
Регистрация: 19.02.2009
Возраст: 52
Записей в дневнике: 1

petrd вне форума Не в сети
Цитата:
Сообщение от Butik Посмотреть сообщение
где во втором варианте косяк- совсем непонятно.. при компиляции ошибки нет... но ни в протеусе ни в железе не работает
а если сделать так?

Код:
....
if(old_GPIO.F5 == 0)
  {
     CMCON = 0x04;
     VRCON = 0xA3;
     TRISIO = 0x2A;
     Delay_us(10);
     while(CMCON.F6==1)
         {
           CMCON.F4 = 1;
           old_GPIO.F4 =1;
           GPIO = old_GPIO;
         }
  }
....
  Ответить с цитированием
Старый 01.12.2010, 12:00   #702   
Форумец
 
Сообщений: 82
Регистрация: 13.09.2010

Азат вне форума Не в сети
я же писал помните, то что через пять раз нажатия на пульте начинают на экране разные символы выводить, а потом зависает.А ваша прошивка работает идеально.Хорошего отпуска)).

Последний раз редактировалось Азат; 01.12.2010 в 17:05.
  Ответить с цитированием
Старый 01.12.2010, 23:02   #703   
Форумец
 
Аватар для Butik
 
Сообщений: 36
Регистрация: 19.10.2010
Возраст: 57

Butik вне форума Не в сети
Цитата:
Сообщение от petrd Посмотреть сообщение
а если сделать так?

Код:
....
if(old_GPIO.F5 == 0)
  {
     CMCON = 0x04;
     VRCON = 0xA3;
     TRISIO = 0x2A;
     Delay_us(10);
     while(CMCON.F6==1)
         {
           CMCON.F4 = 1;
           old_GPIO.F4 =1;
           GPIO = old_GPIO;
         }
  }
....
Так то работает.... Все правильно!!!! При такой конфигурации модуля компараторов VREF подключен к + выводу...

Но тогда непонятно почему работает так

Код:
CMCON = 0x04;
  VRCON = 0xA3;
  TRISIO = 0x2A;
  Delay_us(10);
  if(CMCON.F6==1){
  .......................
    }
потому как исходя из datasheet и логики работы компаратора...

Цитата:
bit 6 COUT: Comparator Output bit
When CINV = 0:
1 = VIN+ > VIN-
0 = VIN+ < VIN-
When CINV = 1:
1 = VIN+ < VIN-
0 = VIN+ > VIN-

bit 5 Unimplemented: Read as ‘0’

bit 4 CINV: Comparator Output Inversion bit
1 = Output inverted
0 = Output not inverted
  Ответить с цитированием
Старый 02.12.2010, 10:16   #704   
Форумец
 
Сообщений: 82
Регистрация: 13.09.2010

Азат вне форума Не в сети
Ребят а можно подключить четыре кнопки на один вход.Если да то киньте схему и примерный код?

Последний раз редактировалось Азат; 02.12.2010 в 12:00.
  Ответить с цитированием
Старый 02.12.2010, 20:54   #705   
Форумец
 
Сообщений: 1,525
Регистрация: 19.02.2009
Возраст: 52
Записей в дневнике: 1

petrd вне форума Не в сети
Цитата:
Сообщение от Азат Посмотреть сообщение
Ребят а можно подключить четыре кнопки на один вход.Если да то киньте схему и примерный код?
http://www.microchip.com.ru/Support/tips.html
  Ответить с цитированием
Старый 03.12.2010, 08:32   #706   
Форумец
 
Сообщений: 82
Регистрация: 13.09.2010

Азат вне форума Не в сети
Спасибо.
Программная последовательность:
1) Конфигурируем RA4 как выход с уровнем лог. "0" для разрядки конденсатора.
PORTA=16
2) Конфигурируем RA4 как один из входов компаратора, другой вывод компаратора подключается к внутреннему источнику опорного напряжения.
3) Запускаем таймер и измеряем время до срабатывания компаратора.

Давайте попробуем разобрать код сам не справлюсь? Каким номеналом поставить резисторы и конденсатор(нужен ли он)? И по схеме получается если при одновременном нажатие будет срабатывать первая кнопка?

Последний раз редактировалось Азат; 03.12.2010 в 10:01.
  Ответить с цитированием
Старый 03.12.2010, 11:35   #707   
Форумец
 
Сообщений: 1,525
Регистрация: 19.02.2009
Возраст: 52
Записей в дневнике: 1

petrd вне форума Не в сети
Цитата:
Сообщение от Butik Посмотреть сообщение
Но тогда непонятно почему работает так
Когда написано:
Код:
....
  CMCON = 0x04;
......
 while(CMCON.F6 == 1)
                 {
                  old_GPIO.F4 =1;
                  GPIO = old_GPIO;
                 }
при включении проверяется состояние GP5, и если оно 0 (а такое легко может быть и вообще мы можем попасть в любой момент времени периода повторения импульсов синхронизации 50 Гц, что в итоге приведет к тому, что конденсатор либо вообще никогда не начнет заряжаться, либо не успеет зарядится до нужного уровня), то попадаем в проверку while, а так как у нас перед этим ни одного цикла зарядки конденсатора не было (или он был, но короткий, т.е. недозаряд), то и имеем COUT = 1 ( VIN+ > VIN-) и дальше незапланированный вечный цикл из которого можно выйти только когда конденсатор заряжен, а чтобы зарядить - надо выйти из цикла - замкнутый круг. И, вообще, мы же с сетью не синхронизированы, то рано или поздно такой момент возникает.
А когда используется if, то никакого вечного цикла быть не может.
Как-то так.
  Ответить с цитированием
Старый 04.12.2010, 11:12   #708   
Форумец
 
Сообщений: 1,525
Регистрация: 19.02.2009
Возраст: 52
Записей в дневнике: 1

petrd вне форума Не в сети
Цитата:
Сообщение от Азат Посмотреть сообщение
Давайте попробуем разобрать код сам не справлюсь? Каким номеналом поставить резисторы и конденсатор(нужен ли он)? И по схеме получается если при одновременном нажатие будет срабатывать первая кнопка?
А зачем вообще такое надо? Что ног у контроллера мало? Такой вариант вообще от безысходности, ибо он нестабилен по температуре, надо подбирать резисторы и конденсаторы, подбирать значения таймера. Сделать-то можно, но оно того не стоит.
  Ответить с цитированием
Старый 04.12.2010, 11:18   #709   
бывший dr.ON
 
Сообщений: 205
Регистрация: 16.06.2010
Возраст: 41

pt200___dr.ON вне форума Не в сети
Ктонибудь знает решение данной проблемы?
ANSI C. Препроцессор? Заполнить const массив элементами другого const массива...
  Ответить с цитированием
Старый 04.12.2010, 13:31   #710   
Форумец
 
Сообщений: 82
Регистрация: 13.09.2010

Азат вне форума Не в сети
Петр хочу попробывать сделать радиоуправление.Данный пример манчестера должен передать слово Микроэлектроника.(Т.е задумка в итоге сделать радиоуправление двумя кноками (При чем чтоб поддерживалось одновременное нажатие)).Правильно ли я делаю.

Цитата:
// Manchester module connections
sbit MANRXPIN at RA0_bit;
sbit MANRXPIN_Direction at TRISA0_bit;
sbit MANTXPIN at RA1_bit;
sbit MANTXPIN_Direction at TRISA1_bit;
// End Manchester module connections

char index, character;
char s1[] = "mikroElektronika";
char s2[] = "mikro";
unsigned short oldstate,oldstateo;

void main() {
oldstate=0;
oldstateo=0;
// ANSEL = 0; // Configure AN pins as digital I/O
// ANSELH = 0;
// C1ON_bit = 0; // Disable comparators
// C2ON_bit = 0;

Man_Send_Init(); // Initialize transmitter

while (1) { // Endless loop
if (Button(&PORTA, 2, 1, 0))
oldstate = 1;
if (oldstate && Button(&PORTA, 2, 1, 1)){
Man_Send(0x0B); // Send "start" byte
Delay_ms(100); // Wait for a while

character = s1[0]; // Take first char from string
index = 0; // Initialize index variable
while (character) { // String ends with zero
Man_Send(character); // Send character
Delay_ms(90); // Wait for a while
index++; // Increment index variable
character = s1[index]; // Take next char from string
}
Man_Send(0x0E); // Send "end" byte
Delay_ms(1000);
oldstate = 0;
}
if (Button(&PORTA, 3, 1, 0))
oldstateo = 1;
if (oldstateo && Button(&PORTA, 3, 1, 1)){
Man_Send(0x0B); // Send "start" byte
Delay_ms(100); // Wait for a while

character = s2[0]; // Take first char from string
index = 0; // Initialize index variable
while (character) { // String ends with zero
Man_Send(character); // Send character
Delay_ms(90); // Wait for a while
index++; // Increment index variable
character = s2[index]; // Take next char from string
}
Man_Send(0x0E); // Send "end" byte
Delay_ms(1000);
oldstateo = 0;
}
}
}
Миниатюры
Нажмите на изображение для увеличения
Название: 16.JPG
Просмотров: 36
Размер:	24.8 Кб
ID:	1052166  

Последний раз редактировалось Азат; 04.12.2010 в 14:39.
  Ответить с цитированием
Старый 04.12.2010, 21:21   #711   
Форумец
 
Сообщений: 1,525
Регистрация: 19.02.2009
Возраст: 52
Записей в дневнике: 1

petrd вне форума Не в сети
Цитата:
Сообщение от Азат Посмотреть сообщение
Петр хочу попробывать сделать радиоуправление.Данный пример манчестера должен передать слово Микроэлектроника.(Т.е задумка в итоге сделать радиоуправление двумя кноками (При чем чтоб поддерживалось одновременное нажатие)).Правильно ли я делаю.
1. Если код манчестера из примеров MikroC, то он рабочий. Но у него есть недостатки - код блокирующий, т.е пока выполняются подпрограммы манчестера ничего другого делать нельзя (прерываниями нельзя пользоваться, а это большой минус), вообщем эта библиотека как-бы только для пробы пера. Альтернатива - ШИМ модуляция (подобная манчестерскому кодированию). У микрочип этот документ, называется TB045, на стейт-машине как RC5.
2. На схеме передатчик RT4, а приемник RR4 у Вас есть? Эта сладкая парочка работает с АМ, что не есть хорошо. Пробовал эту парочку, работает, но лучше с ЧМ.
3. В Вашей схеме светодиод на RA4 работать не будет - там открытый коллектор.
  Ответить с цитированием
Старый 05.12.2010, 07:22   #712   
Форумец
 
Сообщений: 82
Регистрация: 13.09.2010

Азат вне форума Не в сети
petrd, А rc5 у меня не совсем правильно работает выше есть проект пост #695.TB045 Там примеры все на ассеблере.Если бы я это понимал.Прочитал куча литературы про манчестер голова пухнет.Приемник и передатчик заказал но еще не пришли rt5 и rr10.Пообещал ребенку на новый год управляемую машину сообрать.Вот пытаюсь.Такое исполнение схем правильное?Если не затруднит давайте разберем этот проект вместе досканально от теории до кода думаю многих это заинтересует.
Миниатюры
Нажмите на изображение для увеличения
Название: 16F.JPG
Просмотров: 24
Размер:	34.4 Кб
ID:	1053101   Нажмите на изображение для увеличения
Название: RC5__1~1.JPG
Просмотров: 43
Размер:	104.1 Кб
ID:	1053110  


Последний раз редактировалось Азат; 06.12.2010 в 15:32.
  Ответить с цитированием
Старый 06.12.2010, 16:58   #713   
Форумец
 
Сообщений: 82
Регистрация: 13.09.2010

Азат вне форума Не в сети
petrd, Петр т.е к примеру если я повешу на передатчик RB0 ик приемник?щелкну на пульт.И через шим отправлю на приемник.Где на приемники прошита Philips RC5 он должен выдать что эта за команда.Правильно?
Чтоб передать шим нужно выставить
pwm_init(37000) ?
pwm_change_duty(64)?

Последний раз редактировалось Азат; 07.12.2010 в 16:41.
  Ответить с цитированием
Старый 08.12.2010, 10:16   #714   
Форумец
 
Сообщений: 1,525
Регистрация: 19.02.2009
Возраст: 52
Записей в дневнике: 1

petrd вне форума Не в сети
Цитата:
Сообщение от Азат Посмотреть сообщение
petrd, Петр т.е к примеру если я повешу на передатчик RB0 ик приемник?щелкну на пульт.И через шим отправлю на приемник.Где на приемники прошита Philips RC5 он должен выдать что эта за команда.Правильно?
Чтоб передать шим нужно выставить
pwm_init(37000) ?
pwm_change_duty(64)?
Теоретически по простому заменить RC5 на радио можно, а практически не знаю, что из этого получится. Можно попробовать вместо ИК диода в ПДУ подсунуть передатчик RT (c учетом питания) и посмотреть, что получится. А про ШИМ Вы меня не правильно поняли - ШИМ в данном случае это термин вида модуляции, а не модуль контроллера.
  Ответить с цитированием
Старый 08.12.2010, 10:39   #715   
Форумец
 
Сообщений: 82
Регистрация: 13.09.2010

Азат вне форума Не в сети
petrd, Помогите с примером.И взгляните пожалуйста на проект пост #695,что в нем не так может настройки.

Последний раз редактировалось Азат; 08.12.2010 в 11:48.
  Ответить с цитированием
Старый 09.12.2010, 09:59   #716   
Форумец
 
Сообщений: 1,525
Регистрация: 19.02.2009
Возраст: 52
Записей в дневнике: 1

petrd вне форума Не в сети
Цитата:
Сообщение от Азат Посмотреть сообщение
И взгляните пожалуйста на проект пост #695,что в нем не так может настройки.
Попробуйте вот это, в архиве проект полностью.
Вложения
Тип файла: rar RC5_Decoder.rar (43.3 Кб, 42 просмотров)
  Ответить с цитированием
Старый 10.12.2010, 21:29   #717   
Форумец
 
Сообщений: 1,525
Регистрация: 19.02.2009
Возраст: 52
Записей в дневнике: 1

petrd вне форума Не в сети
Цитата:
Сообщение от Азат Посмотреть сообщение
petrd, Помогите с примером.
Поглядите апноту AN744, там есть подпрограмма RXI.c.
Во вложении проект именно на ней сделан.
Вложения
Тип файла: rar AN744_архив.rar (15.4 Кб, 32 просмотров)
  Ответить с цитированием
Старый 11.12.2010, 08:00   #718   
Форумец
 
Сообщений: 82
Регистрация: 13.09.2010

Азат вне форума Не в сети
petrd, Спасибо.
1. По проекту RC5.Вопрос такой что не так с Toggle т.е при нажатие на кнопку "1" он ставит "T" (т.е включен),еще раз при нажатие "1" убирает "T" (т.е выключен).При таком раскладе все правильно.
При нажатие на кнопку "1" он ставит "T" (т.е включен), при нажатие "2" убирает "T" (т.е выключен),при нажатие на кнопку "1" он ставит "T" (т.е включен),а по идеи должен выключить.
  Ответить с цитированием
Старый 11.12.2010, 08:21   #719   
Форумец
 
Сообщений: 1,525
Регистрация: 19.02.2009
Возраст: 52
Записей в дневнике: 1

petrd вне форума Не в сети
Цитата:
Сообщение от Азат Посмотреть сообщение
petrd, Спасибо.
1. По проекту RC5.Вопрос такой что не так с Toggle т.е при нажатие на кнопку "1" он ставит "T" (т.е включен),еще раз при нажатие "1" убирает "T" (т.е выключен).При таком раскладе все правильно.
При нажатие на кнопку "1" он ставит "T" (т.е включен), при нажатие "2" убирает "T" (т.е выключен),при нажатие на кнопку "1" он ставит "T" (т.е включен),а по идеи должен выключить.
Почитайте стандарт, тут все правильно. Этот бит меняется на противоположный каждый раз, когда нажимается кнопка.
  Ответить с цитированием
Старый 11.12.2010, 12:30   #720   
Форумец
 
Сообщений: 82
Регистрация: 13.09.2010

Азат вне форума Не в сети
petrd,
1.А тогда как отследить если я хочу включить и выключить светодиод т.е при поступление команды 1 вкл еще раз выключить. Если просто без toggle то при удерживание кнопки он будет моргать.А если условие что toggle 1 вкл и 0 выкл(то проблема при нажатие других кнопок приходиться несколь раз нажимать на кнопку 1).
2.После компилирование прошивки на MikroC Pro 3.8 ошибка осталась.

Последний раз редактировалось Азат; 15.12.2010 в 11:56.
  Ответить с цитированием
Поиск в теме: 



Быстрый переход:

  Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Support by DrIQ & Netwind