Перейти к содержанию

Aleksandr1111

Members
  • Постов

    237
  • Зарегистрирован

  • Посещение

Весь контент Aleksandr1111

  1. Aleksandr1111

    MicroC (Pro)

    В библиотеке ADC сказано, что эта библиотека работает с RC-тактовым генератором, это действительно так? С кварцем, значит, не получится?
  2. @IMXO , наконец, протокол заработал. Увеличил все длительности импульсов в 4 раза от исходных (поскольку у меня кварцы 8 МГц), на выходе приемного МК стоит 7-сегм. индикатор, и он сначала показывал декодированные числа в 2 раза большие, чем передавались, оказалось, в коде функции приемника есть небольшая ошибка, исправил, теперь все правильно работает (на макет. плате, МК соединены проводом).
  3. @IMXO , скажите, пожалуйста, у меня в проекте Протеуса 2 МК PIC16F628A, 1-ый передает данные по протоколу, согласно прикрепленному рис., 2-ой соединен через резистор 510 Ом и принимает их (статью с кодами для приемника и передатчика Вы видели несколькими постами выше), только у меня все длительности импульсов увеличены в 2 раза. Так вот передатчик-то работает и в Протеусе, и в железе, (по осциллографу), а на индикаторе приемника передаваемое число не меняется (в Протеусе).Вопрос: может ли этот протеус при длительностях от 40 мксек и более адекватно имитировать работу такого устройства?
  4. Чем отличается запись Delay_us(80-1); от просто Delay_us(80); в Си?
  5. Aleksandr1111

    MicroC (Pro)

    Комп был выключен, включил, все норм. запустилось (обычно он у меня на "сне"). А то и пересоздавать раз пришлось при глюках.
  6. Aleksandr1111

    MicroC (Pro)

    Всем привет! Подскажите кто-нибудь: в компиляторе mikroC pro for PIC пытаюсь запускать отладку (меню Run), но тут же открывается вкладка с другой программой (.с-файлом), в которой тоже недавно включал отладку. А в нужной проге никак, я уже перезапускал mikroC, не помогает, какие-то глюки, что ли?
  7. Т.е. continue - имеется ввиду "продолжать находится в этом цикле, если условие истинно", и только, когда условие даст ложный рез., произойдет выход из цикла, и выполнение прогр. пойдет дальше, так?
  8. @IMXO , а вообще, можно останавливать/запускать в нужный момент счетчик с помощью бита T0CS, как написал Yurkin2015 ? И еще: запись while (PORTA.F0) continue; значит ли, что только когда PORTA.F0 станет = 1, выполнение кода пойдет дальше по тексту, иначе программа будет ждать выполнения условия?
  9. Там будет не Манчестер. Да, работы над этим много. А зачем в строку? Результат в байты, посыл
  10. Нет, но, мне кажется, это не так сложно, примеры кодов есть, в передатчике планирую использовать Pic12f675 с его ацп.
  11. Это понятно ,пытаюсь адаптировать для 628. Наверно, общий передатчик (а датчики в двух теплицах), причем передатчик и приемник, возможно, самодельные.Там еще упоминается, что все это тестировалось на Pic18 с кварцами 20 МГц, а если у меня 8 МГц, то, боюсь, что при таких длительностях передаваемых нулей и единиц (порядка 80 мксек) приёмный МК не сможет корректно обработать поступающие импульсы.
  12. @IMXO , @Yurkin2015 , спасибо за разъяснения. Вообще, я хочу сделать беспроводной термометр на 2 измеряемые точки с аналоговыми датчиками (один - отечественный К1019ем1). Для передачи данных хотел сначала использовать библиотеку Манчестерского кода, а потом набрел на интересную статью http://www.romanblack.com/RF/cheapRFmodules.htm (на англ.) Там, в конце, есть код и для приемника, но насчет TMR0 мне было не понятно (настройка, чтение)
  13. @ARV , благодарю. Подскажите еще, пожалуйста: мне надо настроить в МК PIC16F628A таймер TMR0 как счетчик на работу от внутреннего генератора; на счетчик должны поступать импульсы 500 кГц (используется кварц на 8 МГц, частота генератора внутренне делится на 4, получается 2 МГц, чтобы получить 0,5 МГц, коэфф. предделителя должен быть 1:4 ), в коде (в mikroC) я пишу: OPTION_REG.PS0 = 1;//PS2, PS1, PS0 = 001 Остальные биты регистра OPTION остаются "0". Правильно ли я делаю? В какой момент счетчик начинает считать, после сброса МК по выводу MCLR? И чтобы прочитать содержимое счетчика, можно просто использовать регистр TMR0 ?
  14. Здравствуйте! Подскажите, пожалуйста: если у меня в коде сначала идет описание одной переменной, затем вспомогательная функция, затем главная функция main, то во вспомогательной функции уже можно не описывать эту переменную?
  15. Оказывается, примечание "When MCLR is asserted in INTOSC or RC mode" в русском даташите переводится "Когда MCLR удерживается в активном уровне, внутренний тактовый генератор отключен", т.е. только на время сброса.
  16. Даташит на PIC12F675, раздел 9.1 Configuration bits. Регистр CONFIG. bit 5 MCLRE: GP3/MCLR Pin Function Select bit (note.5) 1 = GP3/MCLR pin function is MCLR 0 = GP3/MCLR pin function is digital I/O, MCLR internally tied to VDD Ниже Note 5: When MCLR is asserted in INTOSC or RC mode, the internal clock oscillator is disabled. в mikroC или в Протеусе? В mikroC то конечно включил. Я новичок в МК, прошу сильно не пинать
  17. Заработало, спасибо! Прописал ADCON0=0x0; ANSEL=0; и резистор на Mclr. Но не понятно: я выбрал внутренний осциллятор и выход тактового сигнала на выводе GP4/OSC2, но в Протеусе осциллограф на нем почему-то ничего не показывает. И еще: в даташите есть примечание, что, когда MCLR подключен к + внутри МК в режиме INTOSC или RC , то, якобы, внутренний тактовый осциллятор отключен. Это действительно так? В протеусе схема работала в такой конфигурации без внешнего кварца (похоже, в протеусе многое возможно ).
  18. Поставил !GPIO.B1 , все равно не работает. Текст сейчас такой: void main() { CMCON=0x7; WPU=0x00; TRISIO.B1=0; GPIO.B1=0; while(1){ GPIO.B1= !GPIO.B1; Delay_ms(300); } } Не пойму, в чем дело, как говорится, тут и упасть негде. Виртуальный осциллограф тоже ничего не показывает. Гляньте, пожалуйста, проект в Протеусе (не знаю точно, как правильно прикреплять протеусные проекты). Слово конфигурации тоже вписал в проект. PIC12F675 primer.DSN PIC12F675 primer.PWI MyProject.cof MyProject.hex
  19. Разве нельзя использовать значок ~ для инверсии значения бита?
  20. Здравствуйте всем! Подскажите, пожалуйста, почему в mikroC не работает простейшая программа мигания светодиодом на МК PIC12F675 void main() { CMCON=0x7; WPU=0x00; TRISIO=0; GPIO=0; while(1){ GPIO.B1=~GPIO.B1; Delay_ms(125); } } МК сконфигурирован на работу от внутреннего осциллятора. Если написать GP1=~GP1; вместо GPIO.B1, выдает ошибку assigning to non-lvalue GP Более сложный код с использованием библиотеки Манчестерского кода на этом же МК в Протеусе и тот работает.
  21. Ура! Все заработало, как надо. Правда, пришлось еще, действительно, прописать while(1) перед циклами, чтобы все повторялось, а то сначала 1раз сработало . Да, я ведь частоту ШИМ не с потолка брал, смотрел даташит, и при моем кварце 8 МГц частоту вроде можно установить 488 Гц, но компилятор выдает ошибку, типа "частота out of range", минимум где-то 490 можно поставить... А вручную управлять этими регистрами - ох, запарка какая
  22. Посмотрел help, она 1-байтовая... хм, надеюсь, что в этом ошибка
  23. Так я там осциллограф подключал, сигнал заполняется от 0 до 100%, затем снова от 0 и т.д. И в железе то же самое. Как в Протеусе смотреть детально работу программы, я не знаю, надо изучать.Как вообще по-вашему, уважаемые @Alex и @wws63 ,правильно эта программка написана? Если что, попробую через while написать
  24. Всем здравствуйте! Пишу простую программку в компиляторе mikroC Pro for PIC. МК - PIC16F628A. Задумка устройства - светодиод, подключенный к выходу CCP1 (выв.9 МК), с помощью ШИМ в течении примерно 1 сек должен плавно наращивать яркость, затем в течении такого же времени яркость плавно спадает. Далее все повторяется (типа гирлянды). Однако в Proteuse, а также и в железе, после достижения максимального коэфф. заполнения на выв. CCP1 светодиод снова начинает загораться с нулевой яркости, и т.д. Объясните, пожалуйста, в чем дело? Я уже по всякому пробовал менять программу, компилятор ну не хочет видеть второго "for" unsigned short zap, zap2; void InitMain() { TRISB=0; PORTB=0; CMCON=0x7; //отключение компараторов TRISA=0; PWM1_Init(500); //задание частоты шим-сигнала, Гц } void main() { InitMain(); //инициализация zap=0; zap2=0; PWM1_Start(); //включаем шим for (zap=0; zap<=255; zap++) { //нарастание коэфф. заполнения от 0 до 100% PWM1_Set_Duty(zap); //устанавливаем коэфф. заполнения Delay_ms(4); //задержка 4 мс*256 шагов = около 1 сек нарастания яркости гирлянды } PORTB.F7=~PORTB.F7; for (zap=0; zap<=255; zap++) { zap2=255-zap; //вспомогательный параметр, принимающий значения от 255 до 0 PWM1_Set_Duty(zap2); //изменяем заполнение Delay_ms(4); //аналогичная задержка, около 1 сек спадание яркости гирлянды } } Строка PORTB.F7=~PORTB.F7; - для контроля, в Proteus второй светик на RB7 тоже не зажигается. mikroC v7.1.0 unregistered. Может, какие-то глюки компилятора?
  25. Да, я смотрю, PicBasic так и не стал широко популярным, наверно, главным образом потому, что нет бесплатной рабочей версии MicroCode Studio Plus с бесплатным компилятором (что толку от MicroCode Studio, если она не генерирует hex файл???), а раскошеливаться на 50 у.е. на MCSP с офиц.сайта не каждому по карману. Придется изучать Cи
×
×
  • Создать...