Пришел мне по почте 18f4550, рад , что могу начать осваивать
Почитал даташит и состряпал небольшую программку на асме, которая выводит в порт В бегущий огонек, в симуляции мплаб и в протеусе все работает превосходно, но собрал на макетке в железе, и получилось так,что результат не соответствует ожиданиям
Во-первых, на выводах порта Б логическая единица почему-то 1В, и диоды горят очень блекло. Во-вторых, бегущего огонька- нет, сначала могут загореться все светодиоды, а потом выключишь-включишь питание, и горит всего один. использую внутренние синхроимпульсы.
У меня предположение, что возможно это происходит из-за того , что я неправильно устанавливаю биты конфигурации для задания этих импульсов. Покажите пожалуйста как правильно записывать конфигурацию для мк и как правильно использовать внутренний синхрогенератор, потому что запутался какой регистр надо использовать osccon или osctune
Код на асм:
Кто научил? Не Корабельников ли? Откуда весь пример?
[Ответ]
BOURNE 09:50 05.08.2010
Да, читал самоучитель Корабельникова. Там обычно он так объявлял регистры. Я пробовал не объявлять, но тогда возникали ошибки. Биты конфигурации я выставляю в winpic800 при прошивке:Internal oscillator, XT used by USB, сторожевой таймер выключаю,Oscillator selection- пробовал divided 2, no-divide, cpu system clock-96MHz PLL div 6, галочка напротив USBPLL, VREGEN,ccp2mx,stvren. Писал программу сам, соблюдая некоторые принципы из самоучителя
[Ответ]
petrd 11:00 05.08.2010
Сообщение от BOURNE:
Да, читал самоучитель Корабельникова. Там обычно он так объявлял регистры. Я пробовал не объявлять, но тогда возникали ошибки. Биты конфигурации я выставляю в winpic800 при прошивке:Internal oscillator, XT used by USB, сторожевой таймер выключаю,Oscillator selection- пробовал divided 2, no-divide, cpu system clock-96MHz PLL div 6, галочка напротив USBPLL, VREGEN,ccp2mx,stvren. Писал программу сам, соблюдая некоторые принципы из самоучителя
Пусть он и дальше их так объявляет и пользуется своими принципами тоже сам. Все определения регистров уже описаны в MPLAB, их надо только подключить к проекту, например так:
Код:
#include <p18f4550.inc>
А биты конфигурации надо указывать в исходном тексте, для этого существует директива CONFIG (все это есть в справке), например:
org 0x0c
interrupt
rlcf LATB,1
bcf INTCON,2
retfie
end
Конфигурацию записал немного не так как у Вас. Прошил этим контроллер, но все по -прежнему. Неужели без кварца так и не будет работать?
[Ответ]
petrd 22:34 05.08.2010
Сообщение от BOURNE:
Конфигурацию записал немного не так как у Вас. Прошил этим контроллер, но все по -прежнему. Неужели без кварца так и не будет работать?
Заработает.
В Вашем коде все в куче:
Код:
__CONFIG _CONFIG1L,_PLLDIV_1_1L&_CPUDIV_OSC1_PLL2_1L&_FOSC_ INTOSC_HS_1H&_VREGEN_OFF_2L&_WDT_OFF_2H&_LVP_OFF_4 L
но ведь некоторые из указанных битов относятся к другим байтам конфигурации, поэтому надо бы чуть по-другому:
Код:
__CONFIG _CONFIG1H, _FOSC_INTOSC_HS_1H ;тактирование от внутреннего генератора
__CONFIG _CONFIG2H, _WDT_OFF_2H ; сторожевой таймер отключен
P.S. Используйте для форматирования кода тэги.
[Ответ]
BOURNE 12:26 06.08.2010
И я еще не совсем улавливаю разницу между регистром конфигурации config1h и регистром osccon. И там, и там задается частота осциллятора и выбирается какого он типа. Зачем тогда два регистра практически с одинаковыми параметрами?
Я где- то прочитал, что обязательно к контроллеру нужно подключать внешний синхронизатор,тк без него не загрузятся конфигурационные биты, а уже потом контроллер может работать без него в случае, если выбрана внутренняя синхронизация. Это так? Просто я на макетке не подключал кварц.
Сообщение от BOURNE:
И я еще не совсем улавливаю разницу между регистром конфигурации config1h и регистром osccon. И там, и там задается частота осциллятора и выбирается какого он типа. Зачем тогда два регистра практически с одинаковыми параметрами?
Я где- то прочитал, что обязательно к контроллеру нужно подключать внешний синхронизатор,тк без него не загрузятся конфигурационные биты, а уже потом контроллер может работать без него в случае, если выбрана внутренняя синхронизация. Это так? Просто я на макетке не подключал кварц.
У PIC18F4550 12 источников тактирования и управление ими достаточно сложное и требует однозначного понимания как оно работатет.
В config1h выбирается (в процессе работы не меняется):
1. В каком режиме будет работать первичный генератор (т.е выводы OSC1 и OSC2).
2. Кто будет тактировать ядро - переферию (модуль USB тактируется отдельно).
3. Как будет тактироваться USB.
4. Управляет частотой первичного (внешние такты или кварц) генератора, а не ВНУТРЕННЕГО.
Регистр osccon - позволяет оперативно по ходу программы переключаться между доступными источниками тактирования ядра и переферии (но не USB), а также он управляет частотой ВНУТРЕННЕГО генератора INTOSC.
Если не использовать USB, то все должно работать и без внешнего кварца (без внешнего кварца или внешних тактов USB работать не будет).
Биты конфигурации при старте не грузятся, они устанавливаются при программировании. При включении контроллер вообще начинает работать от 32 кГц (INTRC), т.к после сброса OSCTUNE = OSCCON = 0x00, и будет работать от него до тех пор пока в OSCCON(<SCS1:SCS0>) не переключите на другой источник тактирования (первичный, внутренний или от генератора TMR1).
P.S. Говорим, говорим, а вывод MCLR подтянут к питанию?
[Ответ]
BOURNE 06:16 07.08.2010
Ок. Спасибо за разъяснения. Запустил я эту схемку. Первая моя рабочая программа в железе Теперь с шим начну разбираться.
[Ответ]
petrd 09:08 07.08.2010
Сообщение от BOURNE:
Ок. Спасибо за разъяснения. Запустил я эту схемку.
Оказалось все банально просто: я поставил слишком большое значение делителя для счетчика, поэтому возрастал промежуток между миганиями, и не дождавшись смены лампочки я выключал схему с убеждением , что она не работает. Первый светодиод-то загорался, мне бы подождать ...
Вопрос по ШИМ: если , допустим, нам нужно управлять ДПТ с помощью ШИМ, то можно ли точно установить как определенное значение duty cycle соответствует тому или иному значению скорости вращения ротора; eсли, например, необходимо получить приблизительно 10 об/сек, то как рассчитать duty cycle?
[Ответ]
pt200___dr.ON 21:00 08.08.2010
1) Есть ли тут люди пользовавшиеся dsPIC30Fхххх / PIC24HJ ( удавалось ли кому запустить встроенное АЦП на 1 MSPS)?
2) Может ли ктонибудь дать в аренду отладчик/программатор( вероятно на пару дней) для них?
3) Удавалось ли кому прошить PIC24 JDMом+WinPic800 ?
P.S. а то чтото аврки совсем сильно подорожали
[Ответ]
petrd 16:54 11.08.2010
Сообщение от pt200___dr.ON:
2) Может ли ктонибудь дать в аренду отладчик/программатор( вероятно на пару дней) для них?
Если еще актуально, то могу одолжить PICKit2?
[Ответ]
Сообщение от BOURNE:
Вопрос по ШИМ: если , допустим, нам нужно управлять ДПТ с помощью ШИМ, то можно ли точно установить как определенное значение duty cycle соответствует тому или иному значению скорости вращения ротора; eсли, например, необходимо получить приблизительно 10 об/сек, то как рассчитать duty cycle?
Для этого надо знать какая у двигателя зависимость - обороты/напряжение - линейная, логарифмическая и т.д. Для линейной зависимости все просто, для нелинейной, наверное, проще через таблицу.
[Ответ]
Здраствуйте!
1. Собрал термометр подключил к третей ноге реле,напряжение все время скачет т.е. вкл и выкл постоянно.Что я не правильно сделал.
2.Можно ли нарисовать схему как правильно подключить инфракрасный приемник.
[Ответ]
petrd 18:19 13.09.2010
Сообщение от Азат:
Здраствуйте!
1. Собрал термометр подключил к третей ноге реле,напряжение все время скачет т.е. вкл и выкл постоянно.Что я не правильно сделал.
2.Можно ли нарисовать схему как правильно подключить инфракрасный приемник.
1. В каком смысле реле подключили? Что прямо к ноге? Без транзистора или драйвера какого? А второй конец реле к чему подключен?
2. Какой приемник? Для чего?
[Ответ]
Азат 11:46 14.09.2010
petrd, Да я новичок глупо не ругайтесь сильно.
1.Хотелось бы собрать чтобы что нибудь вкл.с пульта управления.
Т.е поставить кнопку установки где при нажатие с пульта запомниться код1 включения и код2 выключения
При нажатии вкл на дисплее высветиться ВКЛ и включиться реле
При нажатии выкл на дисплее высветиться ВЫКЛ и выключиться реле
[Ответ]
Азат 11:47 14.09.2010
petrd, Один к реле а от реле к массе. Подскажите как правильно соединить?
[Ответ]
petrd 10:23 15.09.2010
Сообщение от Азат: petrd, Да я новичок глупо не ругайтесь сильно.
1.Хотелось бы собрать чтобы что нибудь вкл.с пульта управления.
Т.е поставить кнопку установки где при нажатие с пульта запомниться код1 включения и код2 выключения
При нажатии вкл на дисплее высветиться ВКЛ и включиться реле
При нажатии выкл на дисплее высветиться ВЫКЛ и выключиться реле
Схема транзисторного ключа здесь http://www.microchip.su/showthread.php?t=9284. Так как Вы делаете - делать НЕЛЬЗЯ!
При включении реле на ЖКИ и так появляется 1.
А для применения ДУ придется модифицировать программу.
С ключем сначала разберитесь.
[Ответ]
Азат 11:04 15.09.2010
petrd, Спасибо мне уже обьяснили куда коллектор куда эмитер и куда базу.Знания растут.В итоге повесл на реле светодиод соответственно то горит,то гаснет.Теперь можно и с ДУ разбираться.Вообще PIC штука интересная.И еще интересует реализация подключения к сом порту т.е чтоб отправлял команды к примеру если светодиод не горит, в сом отправляет не горит,и реализация отпраляю команду в пик через com приходит ответ состояния светодиода.
[Ответ]