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

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

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

petrd вне форума Не в сети
Цитата:
Сообщение от RN3QGA Посмотреть сообщение
Правильно понял?
Да, только then не надо, в этой конструкции он не предусмотрен, почаще заглядывайте в help (F1), там все конструкции описаны.
Код:
case g of
0: begin ...... end;
1: begin ...... end;
end;
  Ответить с цитированием
Старый 07.10.2009, 10:45   #332   
Форумец
 
Сообщений: 35
Регистрация: 30.06.2009
Возраст: 47

RN3QGA вне форума Не в сети
Все понял.
Спасибо.
  Ответить с цитированием
Старый 14.10.2009, 11:24   #333   
Форумец
 
Сообщений: 35
Регистрация: 30.06.2009
Возраст: 47

RN3QGA вне форума Не в сети
Так очередное свободное время появилось.
Вопрос.
Как лучьше организрвать отдельную работу каждого выхода (те которые могут работать на выход)независимо друг от друга?
  Ответить с цитированием
Старый 14.10.2009, 12:00   #334   
Форумец
 
Сообщений: 1,525
Регистрация: 19.02.2009
Возраст: 52
Записей в дневнике: 1

petrd вне форума Не в сети
Цитата:
Сообщение от RN3QGA Посмотреть сообщение
Так очередное свободное время появилось.
Вопрос.
Как лучьше организрвать отдельную работу каждого выхода (те которые могут работать на выход)независимо друг от друга?
Для того чтобы работать на вывод (в отличии от ввода), с выходным портом можно работать как с обычным 8-и разрядным регистром, просто для PIC12F629 в этом регистре (GPIO) не будут доступны 3-й, 7-8 биты и биты выводов настроенные на вход.
Код:
TRISIO := 0; // все выводы на выход, кроме GP3, т.к. он всегда вход
GPIO := 1;   //  лог.1 будет на GP0, остальные 0
GPIO := 2;  //  лог.1 будет на GP1, остальные 0
GPIO := 0x10;  //  лог.1 будет на GP4, остальные 0
GPIO := 0x30;  //  лог.1 будет на GP4 и GP5, остальные 0
Можно завести переменную типа byte и в ней изменять биты, а после изменения всю переменную выводить в GPIO:
Код:
var kk: byte;
kk := 0;
GPIO : = kk; // на всех выводах лог.0
kk.0 := 1;    //бит 0 уст в лог.1
GPIO : = kk; //GP0 лог.1, остальные 0
Можно и непосредственно изменять биты GPIO,
Код:
GPIO.4 : = 1; //на GP4 установить лог.1
но это чревато последствиями операции RMW, поэтому так лучше не делать.
  Ответить с цитированием
Старый 15.10.2009, 14:27   #335   
Форумец
 
Сообщений: 1,525
Регистрация: 19.02.2009
Возраст: 52
Записей в дневнике: 1

petrd вне форума Не в сети
Новая версия MikroC PRO

1. Вышла новая версия mikroC PRO for PIC 2009 version 3.20 (уже не бета), скачать можно здесь http://www.mikroe.com/en/compilers/mikroc/pro/pic/, теперь этот компилятор может
Цитата:
now you can use Microchip® tools MPLAB®, ICD2®
and ICD3® together with our compiler (refer to Help for detailed explanation)
2. tester сделал новую версию RTOS OSA - под MikroC PRO (начиная с версии 3.00) теперь она может работать и с PIC12-PIC16, смотреть и качать здесь http://wiki.pic24.ru/doku.php/osa/ref/download/intro
  Ответить с цитированием
Старый 16.10.2009, 21:56   #336   
Registered User
 
Аватар для romchik77
 
Сообщений: 391
Регистрация: 16.11.2008

romchik77 вне форума Не в сети
Цитата:
Сообщение от petrd Посмотреть сообщение
теперь этот компилятор может
Цитата:
now you can use Microchip® tools MPLAB®, ICD2®
and ICD3® together with our compiler (refer to Help for detailed explanation)
Доброго времени суток! скачал.
Петр, а по русски...в чем отличие.(хотя Вас наверно достали глупыми вопросами)
  Ответить с цитированием
Старый 17.10.2009, 11:03   #337   
Форумец
 
Сообщений: 7
Регистрация: 17.10.2009

_vka вне форума Не в сети
Всем доброго времени суток! Случайно наткнулся на эту тему , как раз начал изучать си
компилятор микроси 3 бетка, не могли бы вы выложить пример обработчика прерываний
для 18 пиков INT0 , INT1, TMR0 (16 БИТ) зарание спасибо

Последний раз редактировалось _vka; 17.10.2009 в 12:08.
  Ответить с цитированием
Старый 17.10.2009, 18:07   #338   
Форумец
 
Сообщений: 7
Регистрация: 17.10.2009

_vka вне форума Не в сети
С прерываниями по int,tmr0 разобрался, буду дальше изучать.
  Ответить с цитированием
Старый 17.10.2009, 19:41   #339   
Форумец
 
Сообщений: 1,525
Регистрация: 19.02.2009
Возраст: 52
Записей в дневнике: 1

petrd вне форума Не в сети
Цитата:
Сообщение от romchik77 Посмотреть сообщение
скачал.
Петр, а по русски...в чем отличие.
Раньше пользователи при отладке могли использовать только симулятор встроенный в компилятор или же аппаратный отладчик на базе mikroICD от mikroE, продукты от mikroE никак не интегрировались в среду разработки MPLAB IDE и невозможна была симуляция в Proteus-е. По неоднократным просьбам пользователей команда mikroE включила в компилятор возможность генерации COFF файлов, используя которые теперь можно проводить отладку в среде MPLAB IDE ( как при помощи симулятора MPLAB SIM, так и при помощи программатора-отладчика ICD2 (ICD3)), а как известно в симуляторе MPLAB уже работают таймеры и т.д. Все это можно найти в help-файле.
Про возможность отладки в Протеусе говорить ничего не буду, об этом разработчики нигде не упоминают. А я Протеус не люблю.
P.S. Давно Вас не видно было.
Цитата:
Сообщение от _vka
С прерываниями по int,tmr0 разобрался, буду дальше изучать.
Ну если что, то спрашивайте, чем можем поможем. И не такие дела заваливали.
Да и лучше скачайте 3.20, все багов поменьше.
  Ответить с цитированием
Старый 18.10.2009, 11:59   #340   
Форумец
 
Сообщений: 7
Регистрация: 17.10.2009

_vka вне форума Не в сети
Для начала пока и 3 версии хватит.
Вопрос как реализовать такой алгоритм, одна кнопка, при нажатии увеличивает регистор допустим count, до 255 после стоп . следующее нажатие будет уменьшать этот регистор до 0, да и значения регистра count заносить в TMR0 .
НА асме просто, выставил флаг и вперед.................. а как на си флаги устанавливать пока не соображу.
Зарание спасибо.
P.S. А мне протеус нравится , удобная прога для быстрой проверки и предворительной отладки то что надо.
Но это только мое мнение.

Последний раз редактировалось _vka; 18.10.2009 в 12:59.
  Ответить с цитированием
Старый 18.10.2009, 16:12   #341   
Форумец
 
Сообщений: 7
Регистрация: 17.10.2009

_vka вне форума Не в сети
Код:
  while(1) {
Delay_us(20);
for (  i = 0; i < 2; i++ ){
GPIO.F0 = 0; }
if (fl_inc==0)
//     if (Button(&GPIO, 5, 1, 0))
{
GPIO.F2 = 1;
count++; }
if (count==255)
{ GPIO.F2=0;
fl_inc=1;  }
if (fl_inc==1){
count--; }
if (count==253)
{
fl_inc=0;  }
}
}
вот чтото получилось , может это полная ... поправте если что.
  Ответить с цитированием
Старый 18.10.2009, 20:46   #342   
Форумец
 
Сообщений: 1,525
Регистрация: 19.02.2009
Возраст: 52
Записей в дневнике: 1

petrd вне форума Не в сети
Цитата:
Сообщение от _vka Посмотреть сообщение
Для начала пока и 3 версии хватит.
Вопрос как реализовать такой алгоритм, одна кнопка, при нажатии увеличивает регистор допустим count, до 255 после стоп . следующее нажатие будет уменьшать этот регистор до 0, да и значения регистра count заносить в TMR0 .
НА асме просто, выставил флаг и вперед.................. а как на си флаги устанавливать пока не соображу.
Если честно, то ничего не понятно, ни алгоритм, ни код. А не понятно с самого начала - зачем увеличивать count до 255, а только потом останавливать? Видимо для себя Вы задачу сформулировали полностью, представили алгоритм, а здесь показали только часть своей мысли. Додумывать за Вас как-то тяжеловато, надо-бы поточнее сформулировать.
А вот только понял, что Вы серьезно настроены по ходу программы что-то писать в TMR0, чего настоятельно не рекомендуется делать (мнение не только мое и я с этим согласен). А насчет флагов, то все также как в asm - флаги это же или переменные или биты в них, объявляете переменную-флаг (или с флагами) и снимаете флаг или выставляете. Или я не о том?
  Ответить с цитированием
Старый 19.10.2009, 16:09   #343   
Форумец
 
Сообщений: 7
Регистрация: 17.10.2009

_vka вне форума Не в сети
Код:
 bit oldstate, fl_in;
 unsigned short count;

//************************************
  void interrupt()
 {   char i;
  TMR0 = count;
   PORTA.F1 = 1;
    Delay_us(20);
   for (  i = 0; i < 10; i++ ){    // здесь можно изменить длительность импульса
      PORTA.F1 = 0; }
  INTCON.T0IF=0;
    }
 //*********************************
    void init(){
 CMCON = 0x07;
 TRISA = 0x01;
 TRISB = 0;
 OPTION_REG = 0x06;  //
 INTCON = 0xE0;//;разрешить прерывание TMR0
 PORTA =0;
 PORTB =0;
 fl_in=0;
 count=126;
 oldstate=1;
      }
//****************************************
  void con()
  {  if (fl_in==0){
      count++;
      PORTB = count; }
      if (count==178){
           fl_in=1;  }
   if (fl_in==1){
    count--;
     PORTB = count; }
     if (count==126){
      fl_in=0;  }
      }
//*****************************************
   void main(){
    unsigned short  fl_inc,tmp;
  init();

   while(1) {

    if (oldstate && Button(&PORTA, 0, 1, 0)) {    // Detect one-to-zero transition
      CON();                                     // inc count

    DELAY_MS(100);
    }
   }
  }
//**************************************
СПАСИБО ЗА УЧАСТИЕ! ЭТО МОЯ ПЕРВАЯ ПРОГА НА СИ.
Что эта прога делает? Меняет частоту импульсов от 60 - 100 гц, при нажатии кнопки частота увеличивается пока count не достиг значения 178 (100гц) после уменьшается
пока count не достиг значения 126 (60 гц) все.

( Вы серьезно настроены по ходу программы что-то писать в TMR0, чего настоятельно не рекомендуется делать (мнение не только мое и я с этим согласен) )
Не понял, а почему нельзя? Обьясните пожалуйста чем черевата запись в TMR0
зарание спасибо.
  Ответить с цитированием
Старый 19.10.2009, 21:24   #344   
Форумец
 
Сообщений: 1,525
Регистрация: 19.02.2009
Возраст: 52
Записей в дневнике: 1

petrd вне форума Не в сети
Цитата:
Сообщение от _vka Посмотреть сообщение
[/CODE]
СПАСИБО ЗА УЧАСТИЕ! ЭТО МОЯ ПЕРВАЯ ПРОГА НА СИ.
Что эта прога делает? Меняет частоту импульсов от 60 - 100 гц, при нажатии кнопки частота увеличивается пока count не достиг значения 178 (100гц) после уменьшается
пока count не достиг значения 126 (60 гц) все.
( Вы серьезно настроены по ходу программы что-то писать в TMR0, чего настоятельно не рекомендуется делать (мнение не только мое и я с этим согласен) )
Не понял, а почему нельзя? Обьясните пожалуйста чем черевата запись в TMR0
зарание спасибо.
Мое мнение - такой код - не вариант. Точнее не код, а путь избранный для решения такой задачи не совсем верный.
1. Задержки в прерывании - это минус, код обработчика прерывания должен быть коротким (опять не мое мнение). В обработчике все должно быть коротким и по делу (обычно принято так).
2. Если Вы решили работать с частотой, то временные отсчеты должны быть точными, а перезапись TMR0 этому никак не способствует. Для таких целей применяют модуль CCP и TMR2, еще у TMR2 есть замечательное свойство как прерывание по совпадению TMR2 и PR2. Если используется PIC18, то имеются два вектора прерываний, а с ними обоими уже вычисление точных отсчетов при Вашем подходе проблематично.
3. Про TMR0:
- после записи в TMR0 в течении 2-х тактов счетчик не увеличивается. Если используется предделитель, то не особо проблема, а если без него, то надо как-то уже компенсировать;
- и главное - при записи в TMR0 предделитель-то обнуляется, а предделитель мы считать, увы, не можем обычными средствами. И что в нем было на момент записи TMR0 нам уже не узнать.
Поэтому если уж так надо, то надо добиваться того, чтобы TMR0 катился и катился без перезаписи.
P.S. Я просто высказал свое мнение. Выбирать все равно Вам.
  Ответить с цитированием
Старый 20.10.2009, 08:28   #345   
Форумец
 
Сообщений: 7
Регистрация: 17.10.2009

_vka вне форума Не в сети
Спаибо за развернутый ответ.
  Ответить с цитированием
Старый 05.11.2009, 07:22   #346   
Форумец
 
Сообщений: 1,525
Регистрация: 19.02.2009
Возраст: 52
Записей в дневнике: 1

petrd вне форума Не в сети
Кому интересно программирование на СИ для встраиваемых систем, то вот отличная статья-руководство от tester'a, представленная им на Microchip Masters-2009 http://wiki.pic24.ru/doku.php/osa/ar...without_errors. Думаю будет полезна при работе на Си с МК различных производителей.
  Ответить с цитированием
Старый 05.11.2009, 09:50   #347   
Форумец
 
Аватар для Krivoy
 
Сообщений: 523
Регистрация: 08.02.2007
Возраст: 49

Krivoy вне форума Не в сети
http://kazus.ru/forums/showthread.php?t=13043 - вот прикольная весч для начинающих
  Ответить с цитированием
Старый 05.11.2009, 10:05   #348   
Форумец
 
Сообщений: 1,525
Регистрация: 19.02.2009
Возраст: 52
Записей в дневнике: 1

petrd вне форума Не в сети
Цитата:
Сообщение от Krivoy Посмотреть сообщение
http://kazus.ru/forums/showthread.php?t=13043 - вот прикольная весч для начинающих
Вот еще в довесок http://pickit2.ru/doku.php/статьи:пр...rochip.pickit2
  Ответить с цитированием
Старый 10.11.2009, 15:56   #349   
Форумец
 
Сообщений: 3
Регистрация: 10.11.2009
Возраст: 37

magik09 вне форума Не в сети
здравствуйте, объясните пожалуйста задачу:
разработать программируемый формирователь широкоимпульсного модулируемого сигнала с использованием таймеров и счетчиков, все это надо сделать на микроконтроллере PIC18.Вот такой должен быть получен сигнал...Скажите что нужно для этой задачи? как понимаю без программатора не получится?Помогите пожалуйста, очень-очень надо!!!
Миниатюры
Нажмите на изображение для увеличения
Название: Безымянный.jpg
Просмотров: 32
Размер:	18.3 Кб
ID:	593826  
  Ответить с цитированием
Старый 10.11.2009, 19:03   #350   
Форумец
 
Сообщений: 1,525
Регистрация: 19.02.2009
Возраст: 52
Записей в дневнике: 1

petrd вне форума Не в сети
Цитата:
Сообщение от magik09 Посмотреть сообщение
объясните пожалуйста задачу:
разработать программируемый формирователь широкоимпульсного модулируемого сигнала с использованием таймеров и счетчиков, все это надо сделать на микроконтроллере PIC18.Вот такой должен быть получен сигнал...Скажите что нужно для этой задачи? как понимаю без программатора не получится?Помогите пожалуйста, очень-очень надо!!!
1. Наверное, не "широкоимпульсный", а широтно-импульсный (ШИМ).
2. Очень-очень надо ..... из студентов? Курсовая?
3. Зачем такой извращенный ШИМ, почему бы не использовать стандартные алгоритмы ШИМ или манчестерского кодирования?
4. Если в железе надо, то программатор безусловно нужен.
5. Язык программирования?
  Ответить с цитированием
Старый 10.11.2009, 19:53   #351   
Форумец
 
Сообщений: 3
Регистрация: 10.11.2009
Возраст: 37

magik09 вне форума Не в сети
petrd,
1. Да ШИМ, ошибся(
2. да, студент)
3. Не знаю задание такое дали(
4.В железе не обязательно, но хотелось бы и на железе сделать)
5.Язык программирование ассамблер наверное, но ближе VBA но на нем наверное не получится?
Был бы рад если бы помогли хоть чем ни будь))) Хотябы схему действий если не трудно)
  Ответить с цитированием
Старый 11.11.2009, 07:01   #352   
Форумец
 
Сообщений: 1,525
Регистрация: 19.02.2009
Возраст: 52
Записей в дневнике: 1

petrd вне форума Не в сети
Цитата:
Сообщение от magik09 Посмотреть сообщение
petrd,
Язык программирование ассамблер наверное, но ближе VBA но на нем наверное не получится?
Был бы рад если бы помогли хоть чем ни будь))) Хотябы схему действий если не трудно)
На VBA скорее всего не получится - ассемблер или Си. Логичнее, наверное в этом случае использовать аппаратный модуль CCP, в помощь - http://www.gamma.spb.ru/articles.php?i=27
  Ответить с цитированием
Старый 11.11.2009, 08:00   #353   
Форумец
 
Аватар для Krivoy
 
Сообщений: 523
Регистрация: 08.02.2007
Возраст: 49

Krivoy вне форума Не в сети
Указанные времена могут быть люБыми или жестко связаны между собой
  Ответить с цитированием
Старый 12.11.2009, 11:30   #354   
Форумец
 
Сообщений: 3
Регистрация: 10.11.2009
Возраст: 37

magik09 вне форума Не в сети
Могут быть любыми, там надо сделать так чтобы можно было изменять этот сигнал...Но для начала надо получит этот сигнал
  Ответить с цитированием
Старый 12.11.2009, 11:54   #355   
Форумец
 
Сообщений: 1,525
Регистрация: 19.02.2009
Возраст: 52
Записей в дневнике: 1

petrd вне форума Не в сети
Цитата:
Сообщение от magik09 Посмотреть сообщение
Могут быть любыми, там надо сделать так чтобы можно было изменять этот сигнал...Но для начала надо получит этот сигнал
Ну так и что Вы предприняли для того, чтобы получить этот сигнал?
Или Вы надеетесь, что кто-то за Вас это сделает, а Вам галочку в зачетку и вперед пиво пить? Не прокатит.
Есть два пути:
1. Сами свой мозг и руки напрягаете и говорите, что у Вас не получается, тогда Вам безвозмездно подсказывают и поправляют.
2. Признаетесь в нежелании этим заниматься и выдвигаете конструктивное коммерческое предложение, типа:
Цитата:
Студент сдаст работу, избавив свой чудо-мозг от тренировки.
Второй путь мне не нравится, но выбирать все равно Вам.
  Ответить с цитированием
Старый 13.11.2009, 08:09   #356   
Форумец
 
Сообщений: 9
Регистрация: 13.11.2009
Возраст: 56

viktor110668 вне форума Не в сети
напишите коментарии в асм

напишите пожалуйста коментарии в асм файлах в каждой строчке на русском я расширение на txt поменял,
Вложения
Тип файла: txt 628strb4.txt (15.1 Кб, 49 просмотров)
Тип файла: txt lcdt232.txt (6.2 Кб, 22 просмотров)
  Ответить с цитированием
Старый 13.11.2009, 10:02   #357   
Форумец
 
Сообщений: 1,525
Регистрация: 19.02.2009
Возраст: 52
Записей в дневнике: 1

petrd вне форума Не в сети
Цитата:
Сообщение от viktor110668 Посмотреть сообщение
напишите пожалуйста коментарии в асм файлах в каждой строчке на русском я расширение на txt поменял,
Вам уже дали исчерпывающий ответ http://kazus.ru/forums/showthread.php?t=14937. И другого Вы скорее всего и здесь не услышите.
  Ответить с цитированием
Старый 13.11.2009, 10:19   #358   
Форумец
 
Сообщений: 9
Регистрация: 13.11.2009
Возраст: 56

viktor110668 вне форума Не в сети
придется асм изучать досканально и самому себе отвечать на свои вопросы
  Ответить с цитированием
Старый 13.11.2009, 11:59   #359   
Форумец
 
Аватар для Krivoy
 
Сообщений: 523
Регистрация: 08.02.2007
Возраст: 49

Krivoy вне форума Не в сети
Да, если совсем сголовой не дружится то можно и так, копать котлован совочком (асм), не лучше ли взять лопату (Си)
  Ответить с цитированием
Старый 13.11.2009, 17:45   #360   
Инженер
 
Аватар для XPEH_BAM
 
Сообщений: 1,353
Регистрация: 17.09.2004
Возраст: 41
Записей в дневнике: 11

XPEH_BAM вне форума Не в сети
Цитата:
Сообщение от Krivoy Посмотреть сообщение
Да, если совсем сголовой не дружится то можно и так, копать котлован совочком (асм), не лучше ли взять лопату (Си)
Люди, которые пишут для контроллеров и микроконтроллеров на Си, не зная ассемблера, вызывают у меня презрение.
  Ответить с цитированием
Поиск в теме: 



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

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


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