Jump to content

Recommended Posts

Еще раз...

1. Сдвигаем

2. Если С=0, то пропускаем одну команду

3. Сдвигаем (этот сдвиг будет исполнен ТОЛЬКО если в предыдущей команде С=1)

Значит, если очередной сдвиг вызвал перенос, то он будет ПОВТОРЕН. Все!

Share this post


Link to post
Share on other sites

По второму вопросу.

Организуйте флаг дребезга. Изначально он сброшен. Как только кнопка нажата, проверяем этот флаг. Если он сброшен, то взводим этот флаг и исполняем нажатие. Если после нажатия он оказался установлен, то пропускаем предыдущее предложение. Гасится флаг или таймером или программной задержкой на время дребезга.

Share this post


Link to post
Share on other sites

Никаких флагов дребезга не нужно. достаточно считывать (защелкивать) состояние кнопок с частотой 10-100Гц

Проверено на практике, устройство работает уже 3 года круглосуточно и сбоев небыло.

Share this post


Link to post
Share on other sites

Литиевые батарейки Fanso для систем телеметрии и дистанционного контроля

Системы телеметрии находят все более широкое применение во многих отраслях на промышленных и коммунальных объектах. Требования, предъявляемые к условиям эксплуатации приборов телеметрии и, как следствие, источников питания для них, могут быть довольно жесткими. Fanso предоставляет широкую линейку продукции, рассчитанной на различные условия эксплуатации, что позволяет подобрать батарейку для каждого конкретного применения, в том числе и для устройств телеметрии.

Подробнее

my504 - понял большое спасибо, по второму моему вопросу буду пока переваривать выши советы.

Share this post


Link to post
Share on other sites
my504 - понял большое спасибо, по второму моему вопросу буду пока переваривать выши советы.

BY THE WAY!!!

rlf portb,f

Очень рискованная команда для начинающего...

В портах НЕТ НИКАКОЙ АРИФМЕТИКИ, поэтому ВСЕ математические унарные операции с портами, и те бинарные, в которых источником и приемником выступает порт, а так же операции над отдельными битами в портах, проходят с циклом RMW (чтение-модификация-запись). Все хорошо, только чтение происходит в этом случае с ПИНОВ ПОРТА, а не из выходной защелки, В НЕЗАВИСИМОСТИ ОТ НАПРАВЛЕНИЯ РАБОТЫ ПОРТА.

ПОЭТОМУ. Если на пинах при чтении окажется ДРУГОЙ потенциал, а не как в защелке (например при нагруженном светодиодом выходе), то данные на модификацию уйдут ДРУГИМИ!!!!!

Edited by my504

Share this post


Link to post
Share on other sites
                     

Приглашаем на вебинар Решения для построения ультразвуковых счетчиков жидкостей и газов на базе MSP430

Компэл совместно с Texas Instruments 23 октября 2019 приглашают на вебинар, посвященный системам-на-кристалле для построения ультразвуковых расходомеров жидкостей и газов на базе ядра MSP430. Вебинар проводит Йоханн Ципперер – эксперт по ультразвуковым технологиям, непосредственно участвовавший в создании данного решения. На вебинаре компания Texas Instruments представит однокристальное решение, позволяющее создавать точные недорогие счетчики жидкостей и газов.

Подробнее...

Всем доброе время суток!! Возможно повторюсь,но есть вопросы!!!!

1-С какой литературы нужно начинать изучать? Интернет хорошо много информации,но глаза тоже не железные,да и постоянно на одном месте сидеть :ph34r: ......

2-(Вопрос возможно глупый) Мне 22 года не поздно начинать изучать МК???

3-Слышал про AVR и PIC,что дело вкуса но возможно-ли такое ,что PIC например я буду изучать,а потом окажется,что для решения задач он не подходит,и нежун AVR

Заранее спасибо за ответы на мои вопросы. :rolleyes:

Share this post


Link to post
Share on other sites

Я начал изучать контроллеры в 32 года и ничего страшного, успел... :rolleyes:

Изучать можно любые. Особенно если учесть, что их парк меняется радикально раз года в три... Да и нет особой разницы в изучении любой архитектуры МК, если представляешь общие принципы построения таких устройств...

Edited by my504

Share this post


Link to post
Share on other sites
А как насчёт литературы? С какой начать лутше?

Что хорошо для одного, для друго плохо.

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

Не забудьте только при выборе литературы, что принципы сохраняются долго, а микросхемы меняются быстро.

Share this post


Link to post
Share on other sites

НА счет возраста скажу так: Учиться никогда не поздно. ;)

Я в 2 раза тебя старше, однако потихоньку осваиваю PIC, и не считаю, что опоздал.

В начале тоже стоял перед выбором PIC или AVR. :( Начал изучать PIC, потому-что нашел

много понятной литературы. :lol: Посмотри здесь http://ikarab.narod.ru/. Здесь ответы на

все твои вопросы, и будущие тоже.

Успехов в начинании. :)

Share this post


Link to post
Share on other sites

Подскажите, что обозначает "I" в маркировке? Например 16F84A-04I/P

Share this post


Link to post
Share on other sites

I-Industrial , значит работает в широком диапозоне температур , от - до +

Share this post


Link to post
Share on other sites

Я возможно малость промахнулся с темой, по этому заранее извеняюсь за баян, но:

Собираю частотомер и последним компонентом, требующем срочной инсталяции в плату остался ПИК, хотелось бы почитать рекомендации по его пайке, дабы не убить его случайным движением паяльника. Понятно, что лучшем решением будет панелька, но боюсь, что это может сказаться на характеристиках прибора в целом или нет?

Спасибо.

Share this post


Link to post
Share on other sites

Если в схеме предусмотрены выводы для подключения программатора то можно впаивать без проблем, соблюдая меры предосторожности как и с обычными микросхемами, а если нет спец.выводов, то уж только в панельку. А вдруг программатор не заработает по причине что биты конфигурации контроллера забыли правильно задать? Выпаивать-то микросхему гораздо труднее...

Share this post


Link to post
Share on other sites

Добрый день. Подскажите, кто сможет, написал часть проги для PIC16F628А в асме, отладил, хотел поммотреть как работает. Прошил (PiсKit2), при проверке ругнулся на конфигурацию, и больше не хотел распознавать контроллер, а тем более его читать/писать. Хотя знаю, что эта конфигурация работает в другой программе и таких проблем не было. Может связано с настройкой поров? Помогите, а то уже 4 контроллера так прошил, все не разобрался почему.

Share this post


Link to post
Share on other sites
Добрый день. Подскажите, кто сможет, написал часть проги для PIC16F628А в асме, отладил, хотел поммотреть как работает. Прошил (PiсKit2), при проверке ругнулся на конфигурацию, и больше не хотел распознавать контроллер, а тем более его читать/писать. Хотя знаю, что эта конфигурация работает в другой программе и таких проблем не было. Может связано с настройкой поров? Помогите, а то уже 4 контроллера так прошил, все не разобрался почему.

А показать конфиг, а лучше по ссылке исходник на АСМе. И чем работали: оболочкой пиккита или мплабом?

PS И почитайте здесь про сходную ситуацию, может поможет...

Edited by my504

Share this post


Link to post
Share on other sites

Прошивал под оболочкой пиккита, отлаживал в MPLAB. Вот моя прога, хотел сделать часы, а точнее поиграться на часах

	list p=16f628A
INCLUDE <C:\PROGRAM FILES\MICROCHIP\MPASM SUITE\P16F628A.INC>

__CONFIG _INTRC_OSC_NOCLKOUT&_LVP_OFF& _MCLRE_OFF& _BODEN_OFF&_WDT_OFF

has	equ h'21'
minuta	equ h'22'
sekunda	equ h'23'
kolihestvo equ h'24'
kolihestvo1 equ h'25'
ed_sec	equ h'26'
dec_sec	equ h'27'
ed_min	equ h'28'
dec_min	equ h'29'
ed_has	equ h'2a'
dec_has	equ h'2b'
hislo	equ h'2c'
ed	equ h'2d'
des	equ h'2e'
prom	equ h'2f' 	
rozrad	equ h'30'



bank0	macro
bcf status,5
bcf status,6
endm
bank1	macro
bsf status,5
bcf status,6
endm
bank2	macro
bcf status,5
bsf status,6
endm
bank3	macro
bsf status,5
bsf status,6
endm



dehifratot macro cifra, adres; 
;local prom=0
clrf des
movf cifra,0
movwf prom
;nah

movf prom,0
movwf ed
movlw h'a'
subwf prom,1
btfss status,c
goto $+3
;goto prod
incf des
goto $-7
;goto nah



;prod

movf ed,0
addlw h'40' 
bank1
movwf fsr
movf indf,0
bank0
movwf adres

;exitm	

movf des,0
addlw h'40' 
bank1
movwf fsr
movf indf,0
bank0
movwf (adres+1)

endm


org 0


goto nahalo; перейти на начало программы

org 4	; вектор прерывания
movlw h'0f8'; Загрузка
movwf tmr1h; времени
movlw (30h+6); срабатывания
movwf tmr1l; таймера
clrf pir1	; обнулить бит прерывания таймера 1

movf hislo,0
addlw h'26'
movwf fsr
movf indf,0
movwf portb
bcf status,c
movf rozrad,0
movwf porta
rlf rozrad
incf hislo
movlw d'4'
subwf hislo,0
btfss status,z
goto prop
clrf hislo
clrf rozrad
bsf rozrad,0 



prop

decfsz kolihestvo; kolihestvo-1 и если 0 то пропустить
goto con	; переход на программу индикации
decfsz kolihestvo1; kolihestvo1-1 и если 0 то пропустить
goto con1


	;обработка
incf sekunda
movlw d'60'
subwf sekunda,0
btfss status,z
goto dalshe 

clrf sekunda
incf minuta
movlw d'60'
subwf minuta,0
btfss status,z
goto dalshe 

clrf minuta
incf has
movlw d'24'
subwf has,0
btfss status,z
goto dalshe 
clrf has



dalshe

nop
dehifratot sekunda, ed_sec
dehifratot minuta, ed_min
dehifratot has, ed_has


movlw 5
	movwf kolihestvo1


con1
movlw h'64'			
movwf 	kolihestvo	

con	
	retfie



org 200h
nahalo

	movlw b'01111011'	
movwf h'40'
	movlw b'01100000'	
	movwf h'41'
  movlw b'11011010'	
  movwf h'42'
  movlw b'11101010'	
  movwf h'43'
  movlw b'11100001'	
  movwf h'44'
  movlw b'10101011'	
  movwf h'45'
  movlw b'10111001'	
  movwf h'46'
  movlw b'01100010'	
  movwf h'47'
  movlw b'11111011'	
  movwf h'48'
  movlw b'11101011'	
  movwf h'49'



	clrf has
	clrf minuta
	clrf sekunda
	movlw 100d
	movwf kolihestvo
	movlw 5
	movwf kolihestvo1
	clrf hislo


	clrf portb		; очистить рорт В
bank1		;перейти в 1 банк
bcf option_reg,7	; настройка порта В без подтягивающих регистров
movlw b'00000000'	; настройка порта В на
movwf trisb	; выхода
bank0		;перейти в банк 0

clrf porta
movlw 0x07
movwf cmcon
bank1
movlw b'11110000'
movwf trisa
bank0
clrf porta



movlw b'11000000'	; Разрешение прерываний
movwf intcon
bank1
bsf pie1,0		; Разрешение прерываний
bank0
movlw 0f8h	;Загрузка 
movwf tmr1h	; времени
movlw (30h+6)	; срабатывания
movwf tmr1l	; таймера
movlw b'00001001'	; настройка таймера
movwf t1con	; для работы
l	goto l

end

Вам замечание за не использование тега “CODE”

мод. Lexi

Share this post


Link to post
Share on other sites

Вроде бы рекомендуют "В меню "Tools” можно включить опцию ”Use VPP First Program Entry", это может понадобиться для контроллеров, конфигурация которых и настройка портов не позволяет войти в режим программирования (например, для контроллеров PIC12F675 с включенным внутренним сбросом и портами, подключенными к PGD и PGC, настроенными на выход). Попробуйте включить эту опцию, если программатор выдает ошибку проверки конфигурации ('Verification of configuration failed.')." (http://www.microchip.com.ru/1010/Support/PICkit2_art.html). Но я не могу найти такую опцию.

Share this post


Link to post
Share on other sites

Собрал схему JDM программатора с переделкой (http://users.tpg.com.au/btkelly/jdm_b.htm) + IC-Prog - Проблему решил. Но как проблему решить с PicKit2 не разобрался. Кстати, убрал из программы таймер1 и глюк исчез.

Share this post


Link to post
Share on other sites

Какой лучше взять программатор для PIC16F876?

просто про контроллер и его программирование на пикбейсик-про все прочитал, а железок нету.

Где можно купить программатор?

з.ы. когда читал мануалы, автор использовал контроллер с встроеным кварцем и загрузчиком. Нужно ли такое и где это достать?

Edited by Rave4ko

Share this post


Link to post
Share on other sites

Здравствуйте! Такой вопрос: купил кварц, на нём написано 4.000 KDS - продавец сказал, что на 4 МГц, надеюсь он не ошибся? Кварц нужен для ПИК16Ф84А, подойдёт ли такой? Спасибо.

Share this post


Link to post
Share on other sites

Всем зарасти!

Подскажите для работы со светодиодами, какой микроконтроллер лучше?

Вот этот микроконтроллер подойдет PIC16F877-20I/PQ?

Могуля я перезаписовать программы на PIC16F877-20I/PQ?

Edited by Sounds

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

  • Similar Content

    • By Anton Bondarenko
      Всем привет
      Прошу не ругать, впервые подобный вопрос задаю.
      Хочу сделать прибор, который будет посылать сигнал, когда возле прибора будет проходить металлический предмет. 
      — угол отслеживания до 30° а лучше прямая линия, траектория
      — время реакции очень высокое до 100 мс
      — ширина проема в котором нужно сканировать от 10 до 20метров,
      — передача сигнала через вифи
      Может есть готовые решения, или отдельные компоненты.
      Подскажите пжл в каком направлении искать.
      Смотрел датчики движения, но главная проблема — время реакции.
      Спасибо
       
    • By denisovdenisvladimirovit
      Нуждаюсь в помощи! Задумал сделать лабораторный блок питания, регулируемый. 0 - 50... 55в, 10 - 15а постоянного тока. трансформатор с мостом + выдают где - то 54,5в. Подскажите схему стабилизированного регулятора напряжения, или подскажите по моей. В моей регулировка по первичной обмотки без стабилизации, вообще рабочая или нет. Я сам новичок, судите строго!!!

      I need help(помогите и объясните дуракУ) опечатался((( Простите...
    • By Sofia Vin
      Предлагаем проектную работу в Москве:
      Микроконтроллер STM32F103.
        
      Есть встроенный код с использованием функций библиотеки FreeRTOS, код имеет описанный протокол для связи с внешним миром.
        
      Необходимо проводить доработку кода под задачи программиста верхнего уровня и его тестирование в составе оборудования. 
      Работа в лаборатории (м.Университет) и удаленно. 
      Оплата по договоренности.
      Если Вы обладаете опытом схемотехнического проектирования и программирования микроконтроллеров, и Вас заинтересовала данная возможность, ждем Ваши отклики по контактным данным:
      8 (925) 023-60-02   Алексей
      E-mail: nassa@marathon.ru
       
    • By Антон Плюшкин
      В общем есть небольшая тривиальная задача - сделать свитюльку. Контроллер управляет светодиодиками, цвета меняются, людишки довольны.
      Схема проста: Attiny44a -> 2n3904 x3 -> RGB-светодиод.
      Собрал, протестил, всё норм, но!
      Как только в коде я использую функцию задержки - _delay_ms (util/delay.h) - контроллер повисает!
      #define F_CPU 16000000UL #include <avr/io.h> #include <util/delay.h> int main(void) { // Input/Output Ports initialization // Port A initialization // Function: Bit7=Out Bit6=Out Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In DDRA=(1<<DDA7) | (1<<DDA6) | (0<<DDA5) | (0<<DDA4) | (0<<DDA3) | (0<<DDA2) | (0<<DDA1) | (0<<DDA0); // State: Bit7=0 Bit6=0 Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T PORTA=(0<<PORTA7) | (0<<PORTA6) | (0<<PORTA5) | (0<<PORTA4) | (0<<PORTA3) | (0<<PORTA2) | (0<<PORTA1) | (0<<PORTA0); // Port B initialization // Function: Bit3=In Bit2=Out Bit1=In Bit0=In DDRB=(0<<DDB3) | (1<<DDB2) | (0<<DDB1) | (0<<DDB0); // State: Bit3=T Bit2=0 Bit1=T Bit0=T PORTB=(0<<PORTB3) | (0<<PORTB2) | (0<<PORTB1) | (0<<PORTB0); // Timer/Counter 0 initialization // Clock source: System Clock // Clock value: 16000,000 kHz // Mode: Phase correct PWM top=0xFF // OC0A output: Non-Inverted PWM // OC0B output: Non-Inverted PWM // Timer Period: 0,031875 ms // Output Pulse(s): // OC0A Period: 0,031875 ms Width: 0 us // OC0B Period: 0,031875 ms Width: 0 us TCCR0A=(1<<COM0A1) | (0<<COM0A0) | (1<<COM0B1) | (0<<COM0B0) | (0<<WGM01) | (1<<WGM00); TCCR0B=(0<<WGM02) | (0<<CS02) | (0<<CS01) | (1<<CS00); TCNT0=0x00; OCR0A=0x00; OCR0B=0x00; // Timer/Counter 1 initialization // Clock source: System Clock // Clock value: 16000,000 kHz // Mode: Ph. correct PWM top=0x00FF // OC1A output: Non-Inverted PWM // OC1B output: Disconnected // Noise Canceler: Off // Input Capture on Falling Edge // Timer Period: 0,031875 ms // Output Pulse(s): // OC1A Period: 0,031875 ms Width: 0 us // Timer1 Overflow Interrupt: Off // Input Capture Interrupt: Off // Compare A Match Interrupt: Off // Compare B Match Interrupt: Off TCCR1A=(1<<COM1A1) | (0<<COM1A0) | (0<<COM1B1) | (0<<COM1B0) | (0<<WGM11) | (1<<WGM10); TCCR1B=(0<<ICNC1) | (0<<ICES1) | (0<<WGM13) | (0<<WGM12) | (0<<CS12) | (0<<CS11) | (1<<CS10); TCNT1H=0x00; TCNT1L=0x00; ICR1H=0x00; ICR1L=0x00; OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00; // Timer/Counter 0 Interrupt(s) initialization TIMSK0=(0<<OCIE0B) | (0<<OCIE0A) | (0<<TOIE0); // Timer/Counter 1 Interrupt(s) initialization TIMSK1=(0<<ICIE1) | (0<<OCIE1B) | (0<<OCIE1A) | (0<<TOIE1); // External Interrupt(s) initialization // INT0: Off // Interrupt on any change on pins PCINT0-7: Off // Interrupt on any change on pins PCINT8-11: Off MCUCR=(0<<ISC01) | (0<<ISC00); GIMSK=(0<<INT0) | (0<<PCIE1) | (0<<PCIE0); // USI initialization // Mode: Disabled // Clock source: Register & Counter=no clk. // USI Counter Overflow Interrupt: Off USICR=(0<<USISIE) | (0<<USIOIE) | (0<<USIWM1) | (0<<USIWM0) | (0<<USICS1) | (0<<USICS0) | (0<<USICLK) | (0<<USITC); // Analog Comparator initialization // Analog Comparator: Off // The Analog Comparator's positive input is // connected to the AIN0 pin // The Analog Comparator's negative input is // connected to the AIN1 pin ACSR=(1<<ACD) | (0<<ACBG) | (0<<ACO) | (0<<ACI) | (0<<ACIE) | (0<<ACIC) | (0<<ACIS1) | (0<<ACIS0); ADCSRB=(0<<ACME); // Digital input buffer on AIN0: On // Digital input buffer on AIN1: On DIDR0=(0<<ADC1D) | (0<<ADC2D); // ADC initialization // ADC disabled ADCSRA=(0<<ADEN) | (0<<ADSC) | (0<<ADATE) | (0<<ADIF) | (0<<ADIE) | (0<<ADPS2) | (0<<ADPS1) | (0<<ADPS0); unsigned char VL_OCR0A = 0, VL_OCR0B = 0, VL_OCR1A = 0; OCR0A = 0; OCR0B = 0; OCR1A = 0; while(1) { _delay_ms( 100 ); VL_OCR0A = VL_OCR0A + 1; VL_OCR0B = VL_OCR0B + 1; VL_OCR1A = VL_OCR1A + 1; if( VL_OCR0A >= 250 ){ VL_OCR0A = 0; } if( VL_OCR0B >= 250 ){ VL_OCR0B = 0; } if( VL_OCR1A >= 250 ){ VL_OCR1A = 0; } OCR0A = VL_OCR0A; OCR0B = VL_OCR0B; OCR1A = VL_OCR1A; } } Т.е. если указать задержку в начале цикла, то светодиод не светится вообще.
      Если задержку убрать - светодиод немного подсвечивает всеми цветами.
      while(1) { _delay_ms( 100 ); // <--- ЗАДЕРЖКА --- VL_OCR0A = VL_OCR0A + 1; VL_OCR0B = VL_OCR0B + 1; VL_OCR1A = VL_OCR1A + 1; if( VL_OCR0A >= 250 ){ VL_OCR0A = 0; } if( VL_OCR0B >= 250 ){ VL_OCR0B = 0; } if( VL_OCR1A >= 250 ){ VL_OCR1A = 0; } OCR0A = VL_OCR0A; OCR0B = VL_OCR0B; OCR1A = VL_OCR1A; } Где я накосячил?
      З.Ы.: Замечаний по поводу оптимизации кода, излишних переменных и п.р. прошу не писать - изощряюсь как могу ибо не пойму почему не работает
    • Guest Денис
      By Guest Денис
      В общем, есть такое чудо китайской техники (фото)
      Что оно может:
      1. Заряжаться через microUSB порт
      2. Кнопка вкл/выкл, она же переключает режимы
      3. 3 режима свечения светодиода (он светит разными цветами)
      Что я хочу сделать:
      1. Пункты 1 и 2 выше
      2. Разнообразить количество режимов, переливание статичный цвет и тд...
      Вопрос: как это сделать? что купить?

      P.S. К сожалению, в гугле не нашел подробной инструкции, а я в электронике я дуб дубом


  • Сообщения

    • Я то могу. А вот ты не увиливай, и обсуди фильмы со своим закадычном коллегой по теме, вместо дешёвых разборок с  новичками. Котёнок столько фильмов тут запостил, промеж моих анекдотов, но ни одна скотина нормально их с ним не обсудила. А он ведь для вас всех старается. Чтобы ты вышел из этой темы полноценным гражданином.  Ему-то всё это не надо, он это знает лучше вас всех. И он уже гражданин. А ты, видать, как был с неблагодарным физическим лицом, впервые зайдя в эту тему, так с ним и останешься.
    • @Qdanah Во, нормально можешь ведь когда захочешь, и без дерьма. 
    • И пикничок ранний ,тема"вечер" под гитару:  
    • Вспомнился старый афоризмы.  Аудиофилы слушают только шум в паузах, по моему это уже давно не актуально, современны источники нормального качества дают настолько низкий шум что этим можно пренебречь, гораздно полезнее функция отключения усилителя скажем при простое 10 минут и включение его при появлении звука, это экономит энергию.  Регулятор громкости, только один фиг придётся повторять регулятор, Регулятор громкости Никитина http://forum.vegalab.ru/showthread.php?t=48665 .
    • Вот тебе анекдот попроще. Вдруг поймешь. Великий знаток трольботов...  
    • Не так, к незнакомым трoлль-ботом. 
  • Покупай!

×
×
  • Create New...