PIC10F200 - конфигурирование чипа.

Поклонники продукции Microchip Technology Inc тусуются тут.
Ответить
Друг Кота
Аватара пользователя
Сообщения: 15674
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

В моих краях готовые платки-переходнички водятся...
http://img.radiokot.ru/files/20529/ks7mm8tto.jpg
http://img.radiokot.ru/files/20529/ks7li5vnx.jpg
:hunger:
самому такую делать уже тяжко...
пользуюсь чаще уже готовенькими модулями для всяко-дуинок...
:sleep:
Реклама
Друг Кота
Аватара пользователя
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Сообщение dosikus »

[uquote="Serj66610",url="/forum/viewtopic.php?p=3310456#p3310456"]P.S. я вообще-аномалия в этой Вселенной и довольно специфическая индивидуальность.....по сему и не удивительно,что все что пытаюсь творить-само по себе уже специфично....[/uquote]

Видимо гуманитарий, и уже умудрились собрать все возможные грабли .
Надеюсь pickit приобретен, или собираетесь исполнять ритуальные танцы с экстрапуком и ждм?
Реклама
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 1910
Зарегистрирован: Ср июл 15, 2015 19:03:17
Откуда: Могилев

Сообщение Serj66610 »

Снова я со своими PIC-ами....в общем делал таймер для компрессора....смысл такой,одну минуту компрессор работает(на выводе GP1-лог. единица,которая через ключик на полевике включает реле,а уже то,в свою очередь-сам компрессор),затем идет пауза в 10 минут.
Вместе с этим на выводе(синхронно....ну почти :facepalm: ) GP0 мигает светодиод с периодичностью раз в 2 секунды с длительностью свечения 0,1 сек.

Я не знаю,как правильно реализуется подобный алгоритм,по сему написал как смог....1,9сек пауза+0,1сек свечения-составляют "полный цикл",далее эти циклы "суммируются" (30 шт)и формируют "малое время"(1 минута),далее "суммируются" эти самые "малые циклы"(10 шт) и формируют один "большой цикл"(10 мин.)....ну и зацикливание....в АСМ-е код без комментариев....но он,вроде как не сложный,если что-могу добавить комментарии....только он затем(комментарии)-"ломаются" и из русских букв получаются "кракозябры"...как лечится(и лечится-ли вообще)-не знаю :dont_know:

все работает(и программно и в "железе") за исключением одной маленькой вещи....а именно-точность......ну вообще не какая.....я уже и "просчитывал" время в МП-лабе через СТОП-воч с точностью до микросекунд....но время все равно "плывет" и с двух часовых выдержек "натикивает по 40 сек"....питание МК-пока-что от литиевого АКК(причем,при питании от 3,6 до 3,85-особых изменений не замеченно).....можно-ли к этому МК "прикрутить" часовой кварц на 32.768 Гц?...а то в даташите так и не нашел(что-то упоминалось про внешнее тактирование...но ХЗ. ,согласен на внешний генератор на одном транзюке "шпарящий от кварца"....если внутренний не обладает нужной стабильностью.

Для данной разработки точность временных интервалов-не особо важна(но хотелось-бы!),но все-же если кто знает где "свинья порылась"-прошу показать.
Или может я просто не верно сам алгоритм составил?....не учел длительность всех "переходов" при циклической прокрутке и разность натикивает от туда?

В общем,если не сложно-просьба объяснить все "на пальцах",что-б стало понятно.....ну и такой еще вопрос...может как-то можно "причесать" код?
P.S.Reg_4 это резерв для больших выдержек(раньше были большей длительности,но затем "переписал")...так-что не обращайте внимания.

просьба,другой микроконтроллер не предлагать.
Вложения
timer pic10f200asm.asm
(1.27 КБ) 732 скачивания
Ом намо Бха га ва-тэ,Васу дэва -йа.
Опытный кот
Сообщения: 844
Зарегистрирован: Пн апр 11, 2011 10:08:52

Сообщение -=Vovka=- »

Обязательно на асме?
Лично я уже давно от него отказался - пишу на си.
Я сделал бы так: запустил таймер и в прерывании отсчитывал бы 1сек, устанавливая флаг, что прошла 1сек, а в основном цикле проверял бы этот флаг и далее по алгоритму... Точности хватило бы и от внутреннего тактирования, хотя можно и копеечный кварц...
Реклама
Эиком - электронные компоненты и радиодетали
Друг Кота
Аватара пользователя
Сообщения: 4119
Зарегистрирован: Чт сен 12, 2013 00:54:12
Откуда: ЗаМКАДье. Там, где ЦУП

Сообщение Albert_V »

Выложите схему изделия и текст программы в нормальном виде.
Реклама
Друг Кота
Сообщения: 7853
Зарегистрирован: Ср фев 11, 2009 20:35:58

Сообщение otest »

Поставь кварц на МК
Реклама
Друг Кота
Аватара пользователя
Сообщения: 4119
Зарегистрирован: Чт сен 12, 2013 00:54:12
Откуда: ЗаМКАДье. Там, где ЦУП

Сообщение Albert_V »

otest писал(а):Поставь кварц на МК
Вы юморист, однако. :)
Поставите кварц на PIC10F200 - отпишитесь. :)))
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 1910
Зарегистрирован: Ср июл 15, 2015 19:03:17
Откуда: Могилев

Сообщение Serj66610 »

Vovka,да...ассемблер....изучаю именно его,так-что без альтернативы....учу для себя,с полным пониманием,что-бы затем применять в практике.
я пока-что не "добрался" до прерываний.....интересует,почему именно написанный алгоритм дает такую погрешность....что такое флаги-конечно имею представление,но на этом познания(на данный момент) и заканчиваются.
Альберт....ага,т.е. получается что внешний кварц не прикрутить.....?...так?
а что на счет внешнего сигнала тактирования(например генератор?)...нужен меандр или можно и синус "скормить"?

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

и еще,была "потерта" внутренняя константа,вернул с второго МК(все-одной партии)....но пробовал и другой(новый) МК с заводской константой...то-же нет точности.
Ом намо Бха га ва-тэ,Васу дэва -йа.
Друг Кота
Аватара пользователя
Сообщения: 4119
Зарегистрирован: Чт сен 12, 2013 00:54:12
Откуда: ЗаМКАДье. Там, где ЦУП

Сообщение Albert_V »

Serj66610 писал(а):т.е. получается что внешний кварц не прикрутить.....?...так?
Можно "прикрутить" генератор такого типа (смотрите на напряжение питания) к GP2/T0CKI (вход с логическими уровнями).
Схему можно выложить через экспорт в jpg или pdf. В крайнем случае - как "копия экрана".
Текст программы - здесь, под спойлер, с тегом Code.
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 1910
Зарегистрирован: Ср июл 15, 2015 19:03:17
Откуда: Могилев

Сообщение Serj66610 »

Код: Выделить всё

	    LIST	p=10F200
	    __CONFIG	0xFEB
STATUS	    equ	    03h
GPIO	            equ	    06h
OSCCAL	    equ	    05h	    
Reg_1	    equ	    10h
Reg_2	    equ	    11h
Reg_3	    equ	    12h
Reg_4	    equ	    13h
RegX	            equ	    14h
RegY	            equ	    15h	    
	    org 0
	    bcf		OSCCAL,0
	    MOVLW	        b'00001000'
	    MOVWF	        GPIO
	    TRIS	        GPIO
	    MOVLW	        b'00010000'
	    OPTION
metkaX	MOVLW	.30
	    MOVWF	        RegX
	    MOVLW	        .10
	    MOVWF	        RegY
	    BSF	        GPIO,1
	    BSF		GPIO,0
	    call	        delay100mS
	    BCF		GPIO,0
	    call	        delay1900mS
	    decfsz	        RegX,F
	    goto	        $-5
	    BCF	        GPIO,1
	    MOVLW	        .30
	    MOVWF	        RegX
	    decfsz	        RegY,F
	    goto	        $-6
	    goto	        metkaX
delay100mS  movlw       .220
            movwf           Reg_1
            movlw           .130
            movwf           Reg_2
            decfsz           Reg_1,F
            goto              $-1
            decfsz           Reg_2,F
            goto              $-3
            nop
	    return
delay1900mS movlw   .123
            movwf          Reg_1
            movlw          .164
            movwf          Reg_2
            movlw          .10
            movwf          Reg_3
            decfsz           Reg_1,F
            goto              $-1
            decfsz           Reg_2,F
            goto              $-3
            decfsz           Reg_3,F
            goto             $-5
	    return
	    end
вроде так...
Вложения
sxema.jpg
(73.93 КБ) 733 скачивания
Ом намо Бха га ва-тэ,Васу дэва -йа.
Друг Кота
Аватара пользователя
Сообщения: 4119
Зарегистрирован: Чт сен 12, 2013 00:54:12
Откуда: ЗаМКАДье. Там, где ЦУП

Сообщение Albert_V »

Вы сами то эту строчку в тексте понимаете?

Код: Выделить всё

      goto           $-6
Неужели так сложно поставить словесную метку?
Зачем, при наличии аппаратного таймера, делать программные задержки?
Друг Кота
Аватара пользователя
Сообщения: 25552
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Сообщение КРАМ »

[uquote="-=Vovka=-",url="/forum/viewtopic.php?p=3463361#p3463361"]Я сделал бы так: запустил таймер и в прерывании отсчитывал бы ...[/uquote]
У этого контроллера нет прерываний...
)))
Опытный кот
Сообщения: 844
Зарегистрирован: Пн апр 11, 2011 10:08:52

Сообщение -=Vovka=- »

Точно! Давненько с ним не работал... ;)
Тогда все равно к таймеру нужно привязываться!
Первый раз сказал Мяу!
Сообщения: 32
Зарегистрирован: Ср дек 04, 2013 03:35:21
Откуда: Москва

Сообщение WoodCat »

Извиняюсь за глупый вопрос, но не просвятите, а как работать с таймером в МК не имеющем прерываний? Хотя бы в общих чертах.
С прерываниями все понятно, завели будильник, забыли про него пока не прозвенит, прозвенел прерыванием - обрабатываем то что пора обработать. А без них как?
Друг Кота
Аватара пользователя
Сообщения: 25552
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Сообщение КРАМ »

В данном случае часы без будильника и суперлуп нужно построить так, что бы не пропустить проверку времени.
Первый раз сказал Мяу!
Сообщения: 32
Зарегистрирован: Ср дек 04, 2013 03:35:21
Откуда: Москва

Сообщение WoodCat »

Т-е надо самостоятельно отслеживать значение таймера?
Друг Кота
Аватара пользователя
Сообщения: 25552
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Сообщение КРАМ »

Именно так. Таймер лишь позволяет освободить время между контрольными точками. То есть между переполнениями.
Поскольку таймер куцый, придется делать программный со счетом переполнений.
Друг Кота
Аватара пользователя
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Сообщение dosikus »

Посмотрите как сие было реализовано на пЫк16С54

см. AN590
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 1910
Зарегистрирован: Ср июл 15, 2015 19:03:17
Откуда: Могилев

Сообщение Serj66610 »

[uquote="Albert_V",url="/forum/viewtopic.php?p=3463489#p3463489"]Вы сами то эту строчку в тексте понимаете?

Код: Выделить всё

      goto           $-6
Неужели так сложно поставить словесную метку?
Зачем, при наличии аппаратного таймера, делать программные задержки?[/uquote]

конечно понимаю! программу-же ведь я сам составлял...переход на 6 строк вверх и дикрементируем 1 из регистра X(которое(это значение) было вписано туда 3 строками ранее.
Блиин...ну я-же спросил,написать комментарии по каждой строкой кода или нет?....ответа-не последовало....я-же не могу читать ваши мысли :facepalm: ....счас "перерисую".

да не знаю я как "вщемить" аппаратный таймер....я-же писал....что только начинаю изучать контроллеры,то что в интернете нарыл(в свободном доступе и с объяснениями на уровне новичка)-то и применил в своем устройстве.

никто не желает объяснить простые(с их точки зрения) истины новичками...вот и получается....12 сообщений(ответов) в теме,а по сути-не одного с ценной информацией нет....вот и верь после этого в людей. :dont_know:

Код: Выделить всё

	    LIST	p=10F200
	    __CONFIG	0xFEB
STATUS	    equ	    03h
GPIO	    equ	    06h
OSCCAL	    equ	    05h	    
Reg_1	    equ	    10h
Reg_2	    equ	    11h
Reg_3	    equ	    12h
Reg_4	    equ	    13h
RegX	    equ	    14h
RegY	    equ	    15h	    
	    org 0
	    bcf		OSCCAL,0
	    MOVLW	b'00001000'
	    MOVWF	GPIO
	    TRIS	GPIO
	    MOVLW	b'00010000'
	    OPTION
metkaX	    MOVLW	.30		;заносим 30 в аккумулятор
	    MOVWF	RegX		;заносим 30 в регистр X
	    MOVLW	.10		;заносим 10 в аккумулятор
	    MOVWF	RegY		;заносим 10 в регистр Y
	    BSF		GPIO,1		;включаем вывод GP1
	    BSF		GPIO,0		;включаем вывод GP0
	    call	delay100mS	;переходим на задержку 100 мСек
	    BCF		GPIO,0		;выключаем вывод GP0
	    call	delay1900mS	;переходим на задержку 1,9 сек
	    decfsz	RegX,F		;Вычитаем 1 из значения регистра X,значение не равно 0?
	    goto	$-5		;...переходим на 5 строк вверх
	    BCF		GPIO,1		;выключаем вывод GP1
	    MOVLW	.30		;заносим 30 в аккумулятор
	    MOVWF	RegX		;заносим 30 в регистр X
	    decfsz	RegY,F		;вычитаем 1 из значения регистра Y,значение не равно 0?
	    goto	$-6		;....переходим на 6 строк вверх
	    goto	metkaX		;...значение равно 0?-> переход на метку X
delay100mS  movlw       .220		;...............
            movwf       Reg_1
            movlw       .130
            movwf       Reg_2
            decfsz      Reg_1,F		;задержка на 100 миллисекунд
            goto        $-1
            decfsz      Reg_2,F
            goto        $-3
            nop
	    return			;.....возврат к основному циклу программы на строку ниже
delay1900mS movlw       .123		;...............
            movwf       Reg_1
            movlw       .164
            movwf       Reg_2
            movlw       .10
            movwf       Reg_3
            decfsz      Reg_1,F		;задержка на 1900 миллисекунд(1.9 секунды)
            goto        $-1
            decfsz      Reg_2,F
            goto        $-3
            decfsz      Reg_3,F
            goto        $-5
	    return			;.....возврат к основному циклу программы на строку ниже
	    end

Последний раз редактировалось Serj66610 Пн сен 24, 2018 19:18:54, всего редактировалось 1 раз.
Ом намо Бха га ва-тэ,Васу дэва -йа.
Друг Кота
Аватара пользователя
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Сообщение dosikus »

Serj66610 , весьма прикольно, неужели вы не смогли найти рациональное зерно ни в моем сообщении ни в сообщение КРАМ?
Причем я дал вам ссылку на уже готовое, а КРАМ вполне внятно подсказал в каком направлениии искать. Чего даже для начинающего кодописателя должно было хватить...
Ответить

Вернуться в «PIC»