200 сообщений в этой теме

brown    0

Все вроде бы правильно, но! вторую команду lcdout я бы переставил (см.

ниже), так как на ее исполнение требуется на много больше чем 100мкС.

это ошибка!? Проверь Протеусом-сообщи результат! Сам до него ни как не

доберусь;(

Может проще использовать TMR0 с предделителем?

DEFINE LCD_DREG PORTC 'LCD data port B

DEFINE LCD_DBIT 4 'LCD data starting bit 0 or 4

DEFINE LCD_RSREG PORTC 'LCD register select port D.1

DEFINE LCD_RSBIT 1 'LCD register select bit 1

DEFINE LCD_EREG PORTC 'LCD enable port D.3

DEFINE LCD_EBIT 3 'LCD enable bit

DEFINE LCD_BITS 4 'LCD bus size 4 or 8

DEFINE LCD_LINES 2

DEFINE LCD_COMMANDUS 2000 'Command delay time in us

DEFINE LCD_DATAUS 50 'Data delay time in us

DEFINE OSC 20

od var byte

w1 var word

od100 var byte

od1km var word

F var word

st var bit

i var word

@ device WDT_OFF

OPTION_REG = $C7

trisB=255

LCDOUT $FE, 1,"Privet Andrey",#portb

pause 500

st=1

F=0

w1=1

intcon=$C0

T1CON=0

On Interrupt Goto signal

m:

if st=1 then

if PortB.7=1 and w1=1 then start

if PortB.7=0 and w1=0 then stoping

endif

goto m

start:

TMR1H=254

TMR1L=12

T1CON=1

PIE1=1

w1=0

high portc.0

goto ex

stoping:

PIE1=0

T1CON=0

od1km=F*3

LCDOUT $FE, 2, #od1km, " ", #F, " "

w1=1

F=0

low portc.0

ex:

st=1

goto m

Disable

signal:

f=f+1

TMR1H=254

TMR1L=12

PIR1=0

st=1

Resume

Enable

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Yrok    0

О!!

Спасибо за ответ!!!

Я уже подумал ветка заброшена--вот и несмотрел.

Попробовал переставленный вариант--тоже неправильные показания!!!

При входных импульсах 10мс--показывает 82(отрезка)

при 12мс--99

что делать незнаю???!!!!!

бился и так и эдак результат нулевой.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Nuken    0

В РВР есть PULSIN для измерения длительности импульса. Если используется кварц на 20 МГц, то возвращается результат с инкрементом 2 мкс (например, если результат 200, то длина импульса 200х2 мкс).

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Yrok    0

Дело в том что при исполнении команды Pulsin--ничего параллельно делать нельзя--микроконтроллер тупо будет ждать конца импульса считая отрезки по 2 мксек.

А если длина импульса 1-50 мсек--а при этом надо еще следить за другим входом и регистрировать на нем количество приходящих импульсов--тогда команда Pulsin неподходит.

Поэтому пришлось написать свою программу подсчета длительности импульса--и теперь надо разобраться почему она неправильно считает.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Nuken    0

1)

m:

if st=1 then

if PortB.7=1 and w1=1 then start

if PortB.7=0 and w1=0 then stoping

endif

goto m

Вот тут нету ошибки? Один ENDIF и 3 IF. На сколько помню, каждому IF должен бвть свой ENDIF.

2) В самих доках по PBP написано, что нужно использовать GOTO Label как можно меньше и лучше юзать GOSUB ... RETURN. Это тоже может вызывать глюки. Допишите в каждую подрограмму st=1 и вызывайте из подрограммы m start и stoping через GOSUB ... RETURN.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Yrok    0
m:

if st=1 then

if PortB.7=1 and w1=1 then start

if PortB.7=0 and w1=0 then stoping

endif

goto m

ошибки нет--если после if исполняется один оператор то endif ставить ненадо!!!

поменял на gosub и return

теперь при входных импульсах 10мс--показывает 88-89 отрезков(результат бегает от 88-89)

т.е. регистрирует входной импульс длительностью 8.8-8.9 мсек---короче теряется 1.1-1.2 мсек

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
narzan    0
m:

if st=1 then

if PortB.7=1 and w1=1 then start

if PortB.7=0 and w1=0 then stoping

endif

goto m

ошибки нет--если после if исполняется один оператор то endif ставить ненадо!!!

поменял на gosub и return

теперь при входных импульсах 10мс--показывает 88-89 отрезков(результат бегает от 88-89)

т.е. регистрирует входной импульс длительностью 8.8-8.9 мсек---короче теряется 1.1-1.2 мсек

Комментарий: после конструкции If ... Then лучше всегда ставить endif, т.к. возможны недокументированные глюки, что я неоднократно замечал, читая получившийся после компиляции файл ассемблера.

Все временные интервалы лучше задавать через прерывание по таймеру и по возможности прогонять на симуляторе.

В Вашем случае необходимо использовать АППАРАТНОЕ прерывание, а именно конструкцию DEFINE INTHAND метка, и далее на ассемблере сохранение регистров при входе в прерывание и восстановление при выходе из прерывания. Читайте мануал, там есть пример, как это сделать.

Изменено пользователем narzan

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Привет программисты! Помогите начинающему Делаю автомат управления освещением аквариума на PIC16F874 и LCD WH0802. Пишу на PicBasic. Половину программы написал, а дальше что-то не могу. Короче как автомат должен работать: Включаю, на дисплее надпись "введите время", выставляю, потом надпись "установите интервал" ( например включение света от 8.00 до 21.00 ), после того как все настроил на дисплее идет время и в зависимости от времени включается/выключается свет. Программу часов я написал, всякие надписи типа "введите время" я смогу сделать, настроить интервал включения тоже сам смогу, но я не знаю как выставлять время. Алгоритм проги, которую я написал:

объявил переменные:

i var byte

w var byte

a var byte

i - часы

w - минуты

a - секунды

теперь сама программа

main:

for i = 0 to 23

for w = 0 to 59

for a = 0 to 59

LCDOUT $FE, 1, #i, ":", #w, ":", #a

pause 1000

next a

next w

next i

goto main

прога рабочая, проверено.

Я пробовал выставлять время так:

if portc.0 = 0 then M = M (переменная) + 1

if portc.1 = 0 then w = m

т.е. если кнопка, подключенная к портС.0 нажата например 5 раз, то

переменная М = 5, если нажата вторая кнопка, то минуты = 5, но так не катит. Подскажите, как можно настраивать время

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
evgenb    0

Данила

Для развития проекта, его лучше выложить со схемой в протеусе.

И потихоньку совершенствовать. по ходу учится.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Dm17    0

Опишите плз. полный алгоритм действий для 1-wire!!!

Для ds1820 уже разобрался (содрал пример с сайта), но вот как считать напругу с ds2450 не могу понять.

Если не сложно набросайте пример работы с ds2450 под picbasic pro

PLZ

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
pacan40    0

тоже начал мучать picbasic, тут возник вопрос: как подцепить и написать прогу под управление валкодером в пикбесике, конкретно под tda7313?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
sot    0

Народ как в Pic Basic вывести на LSD байт в шестнадцатиричном виде?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
capitan DIC    0

Люди! не могу разобраться с командой : FOR....NEXT. Кто нибудь для примера, дайте простенькую прогу с этой командой.

И желательно с пояснением!

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
oneeyeman    0

подскажите пожалуйста в чем проблема?

элементарная програмка (включения и выключения светодиода)

loop:

high 10

pause 1000

low 10

pause 1000

goto loop

компилируется и на пик симуляторе запускается только на половину...

светодиод загорается но тухнуть не хочет...

пытаюсь написать ее же и скомпилировать в прилогающемся к пик симулятору бейсик компиляторе

так пишет что в строчке "pause 1000" ошибка...

в чем дело?

помогите разобраться пожалуйста?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
wowa    4

Уведите какой именно BASIC компилятор используете...

А есть там вообще подпрограма pause? и какой параметр берёт на вход? Может быть это в секундах? Тогда всё правильно у вас работает :) Потухнет через через 16 с копейкой секунд :) Какую именно ошибку выдайт в этой строке? Я на бейсике не писал ничего с времён школы.. лет 20 уже...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Lev@    1
тоже начал мучать picbasic, тут возник вопрос: как подцепить и написать прогу под управление валкодером в пикбесике, конкретно под tda7313?

Тоже сижу мучаю прогу под ЭНКОДЕР (2 шт, подключены к RB4:7)- PicBasicPRO

На даный момент имею:

'****************************************************************
'*  Name	: Обработчик сигналов энкодера					  *
'*  Author  : Lev@											  *
'*  Notice  : Copyright © 2009 Lev@						   *
'*		  : All Rights Reserved							   *
'*  Date	: 20.10.2009										*
'*  Version : 1.0											   *
'*  Notes   :												   *
'*		  :												   *
'****************************************************************
REGIN VAR BYTE
FLAGIN VAR BYTE

TRISB = %11110000	   	' Направление порта В			   
OPTION_REG = %10000000	  ' Подтягив. резисторы
ON INTERRUPT GOTO INT   	' При прерывании переход к подпрограмме
INTCON = %10001000		  ' Разрешение глоб. прерываний, прерывания по изм. RB7:RB4   
REGIN=0			  ' Очистка всех ячеек регистров
FLAGIN=0						  

' Заносим состояние входов в память
IF PORTB.4=1  THEN 
REGIN.0=1	
ELSE 
REGIN.0=0
ENDIF
IF PORTB.5=1  THEN 
REGIN.1=1	
ELSE 
REGIN.1=0
ENDIF
IF PORTB.6=1  THEN 
REGIN.2=1	
ELSE 
REGIN.2=0
ENDIF
IF PORTB.7=1  THEN 
REGIN.3=1	
ELSE 
REGIN.3=0
ENDIF			   

Main:					   ' < Основная программа
GOTO Main			   	' Зацикливание осн. программы >

DISABLE					 ' < Запрет всех прерываний
INT:					' Метка подпрограммы - обработчика прерываний
IF INTCON.0 = 0 THEN ET ' Проверка флага прерываний - было ли прерывание по изм. RB7:RB4

IF PORTB.4 <> REGIN.0 THEN 
 FLAGIN.0=1			  ' Установить флаг прерывания от соотв. входа RB4
   IF FLAGIN.1=1 THEN	 ' Проверка наличия изменения сигнала на парном выводе
	 PORTB.0=1			' Если да - импульс
	 PAUSE 100			' Формируем задежку импульса 0,1с
	 PORTB.0=0			' Конец импульса
	 FLAGIN.0=0			' Обнуляем флаг прерывания от соотв. входа RB4
	 FLAGIN.1=0			' Обнуляем флаг прерывания от соотв. входа RB5
   ENDIF
ENDIF
 IF PORTB.5 <> REGIN.1 THEN 
 FLAGIN.1=1			  ' Установить флаг прерывания от соотв. входа RB5
   IF FLAGIN.0=1 THEN	 ' Проверка наличия изменения сигнала на парном выводе
	 PORTB.1=1			' Если да - импульс
	 PAUSE 100			' Формируем задежку импульса 0,1с
	 PORTB.1=0			' Конец импульса
	 FLAGIN.0=0		   ' Обнуляем флаг прерывания от соотв. входа RB4
	 FLAGIN.1=0		   ' Обнуляем флаг прерывания от соотв. входа RB5
   ENDIF
ENDIF
IF PORTB.6 <> REGIN.2 THEN 
 FLAGIN.2=1			  ' Установить флаг прерывания от соотв. входа RB6
   IF FLAGIN.3=1 THEN	 ' Проверка наличия изменения сигнала на парном выводе
	 PORTB.2=1			' Если да - импульс
	 PAUSE 100			' Формируем задежку импульса 0,1с
	 PORTB.2=0			' Конец импульса
	 FLAGIN.2=0			' Обнуляем флаг прерывания от соотв. входа RB6
	 FLAGIN.3=0			' Обнуляем флаг прерывания от соотв. входа RB7
   ENDIF
ENDIF
IF PORTB.7 <> REGIN.3 THEN 
 FLAGIN.3=1			  ' Установить флаг прерывания от соотв. входа RB7
   IF FLAGIN.2=1 THEN	 ' Проверка наличия изменения сигнала на парном выводе
	 PORTB.3=1			' Если да - импульс
	 PAUSE 100			' Формируем задежку импульса 0,1с
	 PORTB.3=0			' Конец импульса
	 FLAGIN.2=0			' Обнуляем флаг прерывания от соотв. входа RB6
	 FLAGIN.3=0			' Обнуляем флаг прерывания от соотв. входа RB7
   ENDIF
ENDIF
ET:					' Подготовка к выходу из обработчий
INTCON.0=0		 ' Сброс флага прерываний по изм. RB7:RB4
RESUME
ENABLE					  ' Разрешение всех прерываний >
END

Это еще не конец. Еще допишу правильный выход из обработки. Потом скорее всего в асемблере откоректирую... :)

подскажите пожалуйста в чем проблема?

элементарная програмка (включения и выключения светодиода)

loop:

high 10

pause 1000

low 10

pause 1000

goto loop

компилируется и на пик симуляторе запускается только на половину...

светодиод загорается но тухнуть не хочет...

пытаюсь написать ее же и скомпилировать в прилогающемся к пик симулятору бейсик компиляторе

так пишет что в строчке "pause 1000" ошибка...

в чем дело?

помогите разобраться пожалуйста?

Если используешь Basic Compiler встроенный в PIC Simulator IDE - то там нету такой процедуры - юзай хелп к нему. А можешь как я - учить PicBasicPRO к нему есть поболее документации. (Кста Ты ею и пользуешься судя по всему, токо Basic Compiler это совсем другой язык)

Качай вот сдесь компилятор сцылка

Изменено пользователем wowa

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Lev@    1

Вопрос:

Допустим есть B VAR BYTE как сделать побитную выборку? т.е. х=В0, В1, ... В7

Изменено пользователем Lev@

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Alex    560

Не знаю синтаксиса языка PicBasic, но побитную выборку можно сделать с помощью лог. операций AND и OR

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Lev@    1
Не знаю синтаксиса языка PicBasic, но побитную выборку можно сделать с помощью лог. операций AND и OR

сам только учусь.

по логике вещей должно быть что-то похожее на

x VAR bit
B VAR byte

For i=0 to 7
x=B(i)
Next i

Но почему-то не хочет так работать...

Изменено пользователем Lev@

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А с чего это оно будет работать ? У вас В это что массив какой-то ? :)

Не знаю как в барсике, но в СИ если нужно работать с числом на уровне битов можно использовать битовое поле.

Изменено пользователем a_sergeevich

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Lev@    1

И как это сделать?

Правилами запрещено цитировать предедущий пост. Пока вам предупреждение. Wowa.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Для Си кратко:

Битовые поля

Внутри структурных типов могут быть организованы, так называемые, битовые поля. Такое поле начинается с младшего бита того слова, в котором оно будет размещаться. Битовые поля размещаются внутри 8-ми битных слов. Если поле не удается разместить в текущем байте структуры, то размещение продолжается в следующем байте. Битовые поля никогда не пересекают границу между 8-ми битовыми областями, выделенными для данной структуры. Например:

struct {

unsigned hi : 1;

unsigned dummy : 6;

unsigned lo : 1;

} foo @ 0x10;

В данном случае структура будет занимать один байт по адресу 0х10. При этом поле hi будет соответствовать нулевому биту, а lo – 7-му биту регистра по адресу 0х10. Младший бит поля dummy будет располагаться в первом, а старший – в 6-м битах регистра 0х10. Если структура описана, как показано выше, то она будет размещена по абсолютному адресу, и память под ее размещение выделяться не будет.

Если необходимо определить битовое поле, которое содержит неиспользуемые области, то можно указать безымянные поля:

struct {

unsigned hi : 1;

unsigned : 6;

unsigned lo : 1;

} foo @ 0x10;

Как это сделать на РВР я не знаю. Я честно сразу, когда заинтересовался пиками, тоже ломанул на РВР, но потом понял его ущербность и перешёл на Си и компиль-среда разработки микроСи, но сейчас учусь на HI-TEC там библиотек готовых меньше, что сподвигает более углубленному изучению :) и об этом решении ни грамма не жалею. Иногда то, что на первый взгляд выглядит просто потом выходит боком, да и консультацию по Си дадут 100% на форуме быстрее чем на барсике, а по нему могут вообще не дать, но это ИМХО.

Ещё Вам тут правильно подсказали, что чтение отдельных битов можно осуществлять с помощью побитовых операций в Си это & (И), |(ИЛИ) не путать с логическими операциями !!!.

Т.е смысл в том, что с помощью операции & и маски мы ненужные биты выключаем, а нужный считываем, например:

n = 00110101;

допустим нам надо узнать значение нулевого бита, тогда применяя маску 00000001

с = n & 00000001; мы передадим в "с" значение нулевого бита т.е 1, затем уже делаем с ним что нам надо.

00110101

&&&&&&&

00000001

---------

00000001

Чтобы включить биты (т.е, которые установлены в ноль) используем побитовую операцию ИЛИ (|)

n = 00110101;

c = 00000001;

c = c | n;

в результате "с" равно 00110101 т.е с == n

00000001

|

00110101

---------

00110101

Надеюсь объяснил понятно, уж аналог Си-шных побитных операций в барсике найдёте сами :)

Удачи и все же совет переходите на Си.

Изменено пользователем wowa

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Lev@    1

Тогда это еще проще сделать на ASM - с помощью сравнения с "1" или "0" BTFSC и BTFSS ! Будет самый простой и КОРОТКИЙ код! ;)

Изменено пользователем Lev@

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В микроСи вообще доступ к битам осуществляется просто и наглядно:

char D;

bit0 = D.F0;

bit1 = D.F1 ну и т.д.

Честно асм вообще не знаю не лежит у меня к нему душа, как то на Си для себя мне проще и быстрее да и замарок меньше, хотя если Вы знаете асм накой Вам вообще этот барсик сдался ? :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Похожие публикации

    • Автор: Катерина
      Очень-очень нужны инженеры по схемотехнике!!! 
      АО «НПО «Орион» сейчас находится в поиске крутых и грамотных специалистов для разных проектов! Мы занимаемся разработкой микрофотоэлектроники как на гражданку, так и на оборонку. Это и  тепловизоры, и SWIR-камеры, инфракрасные термосканы и конструктор Smart Blocks на базе Ардуино, а также фотоприемные устройства, лазерные целеуказатели, очки ночного виденья, микрокриогенные системы и другое.
      Нам нужен такой человек, который по сформулированному техническому заданию сможет с нуля разработать и спроектировать схему «на железе» для того или иного проекта. Также создать макет электронной схемы, протестировать и испытать его. Ну и естественно сопроводить процесс производства от опытного до серийного. Работа в паре с инженером-конструктором. Очень круто, если вы уже проектировали ПЛИС и микроконтроллеры.
      Наши плюшки:
      Интересные проекты, некоторые из них в России еще никогда не разрабатывались. У вас будет возможность для творчества, новых разработок и предложений. Стабильность и гарантию! Не смотря на наши проекты и разработки в гражданском направлении, предприятие у нас государственное и соблюдает все нормы трудового законодательства. Очень вкусную столовую на территории с завтраками и обедами (средняя стоимость ~ 150 рублей). Уникальную возможность – увидеть производство матриц фоточувствительных элементов от подложки до готовой матрицы, которую потом Вы и будете разводить на схеме. Множество спортивных и культурных мероприятий в большом и дружном коллективе. А также для пешеходов – доступность от метро Выхино (7 минут пешком или 1 остановка на автобусе). Бонусом водителям автомобилей - две бесплатные корпоративные парковки. Локация: Москва, ст. метро Выхино;
      График работы: 5/2 с 9:00 до 17:45 (+/- час);
      З/п по результатам собеседования
      Контакты: hr@npo-orion.ru
      +7 499 786 3669 (Екатерина) 
    • Автор: 55nlo
      Нужно написать программу "календарь" на АСМ
      Примерное ТЗ 
       
       
      1    5     по значению R0 (ввода)  в R20 вводим табличные значения        табл.1        
      1    6     по значению R0 (ввода)  в R21 вводим табличные значения        табл.1        
      1    7    NOP     (возможно доп. Команда)                 
      1    8    NOP     (возможно доп. Команда)           
      1    9    значение ОЗУ (адрес Rz) копируем в регистр R18(остаток)                
      1    10    R18(остат) прибавляем R24(лист) результат в R18(остат)                 
      1    11    провер. R18(остат) < 8, то п.12, нет то  R18(остат) -7, результат в R18(остат) и к п.12.                
      1    12    R 18(остат)  копируем в ОЗУ адрес Rz                
      1    13    адрес Rz увеличиваем на 1                
      1                        
      1    14    R19(стр.) увелич. на 1, проверяем Rстр =13.если не равно, п. 15. если  равно, то                 
      1             R19 стр. обнуляем, Rлиста увеличиваем на 1,             
      1            Rлиста если не =13, то к п. 9, если равно 13,             
      1            то  R17(листа) обнуляем и перех к п. 2.5(2-й участок, следующий)            
      1                        
      1    15    R18(ост.)+ 1 = в R18(ост.)                
      1    16    проверяем R18(ост) больше 10, если больше то -10, результат в R18(ост) и в п. 17 нет, то п. 17                
      1    17    значение ОЗУ (адрес Rz  текущий) копируем в R25сравн.                
      1    18    R25(сравн.) увелич на 1                
      1    19    R1(книги) установить значение "2"                
      1    20    NOP           (возможно доп. Команда)     
      1    21    NOP          (возможно доп. Команда)            
      1    22   R18(ост) =R20? если не равно ,то к 23, равно, то R сравн. обнуляем заносим 0 в ОЗУ и к п.13            
      1    23    R18(ост)=R21,если не равно, то к 24,    равно    то R сравн. обнуляем, заносим 0 в ОЗУ и к п.13            
      1    24    R25(сравн.) в ОЗУ (текущий) адрес Rz                
      1    25    R25(сравн.) более 20, то к п. 26. менее.то перех к п. 13                
      1    26    R учета =Rсравн.? да к п. 27 нет к п. 13                
      1    27    R7 обнуляем                
      1    28    R18(остат) копируем в Rморзе                 
      1    29    R7+ Rлиста в R7                
      1    30    проверяем R7  больше 12, если больше то -12, результат в R7 и к п. 31, нет к п. 31                
      1    31    R7  значение конвертируем через таблицу  в R7          табл.1м        
      1    32    Выполняем  прогу "М".                
      1    33    переходим к п.13             
       + ДВЕ ТАБЛИЦЫ ПО 40 СТРОК.   
    • Автор: Dominico
      Необходимо выполнить реверсивный счетчик в 10 разрядов для подключения его к ЦАП 572ПА1, чтобы в итоге получить треугольный ступенчатый сигнал. С программировнием на "ваше высочество", но хочу попробовать. Подскажите пожалуйста, на каком микроконтроллере это можно лучше сделать, и в каком направление "копать"
    • Автор: CUBE
      Не могу запустить асинхронный режим. 
      Ниже будет представлен код которым пытаюсь отладить. Там в 1 коде идёт работа от внутреннего источника таков (стоит 1МГц).  После 5 миганий таймер должен перейти в асинхронный режим и мигать с частотой в 1 Гц. У меня происходит 5 миганий потом ничего. Фьюзы менять пробовал, ничего не дало, сейчас дефолт. Корпус кварца к земле тянуть пробовал - безрезультатно. 
      Возможно что-то в подключении накосячил, если не видно на фото ниже, спрашиваете, нужно будет - нарисую схему. 
      Компилятор Atmel Studio 7
      Шью через Sind Prog 2.1.1 + USBasp 2.0
      Вот код: 
      .macro outi 
       ldi r16, @1 
       out @0, r16 
      .endm 
      .org $000 
      rjmp reset 
      .org $001 
      reti 
      .org $002 
      reti 
      .org $003 
      reti 
      .org $004 
      rjmp timer2_ovf 
      .org $005 
      reti 
      .org $006 
      reti 
      .org $007 
      reti 
      .org $008 
      reti 
      .org $009 
      reti 
      .org $00A 
      reti 
      .org $00B 
      reti 
      .org $00C 
      reti 
      .org $00D 
      reti 
      .org $00E 
      reti 
      .org $00F 
      reti 
      .org $011 
      reti 
      .org $012 
      reti 
      .ORG INT_VECTORS_SIZE 
       
      reset: 
      .equ portout=portd 
      .equ ddrout=ddrd 
      .def led=r17 
      .def mask=r18 
      .def counter=r19 
       outi spl,low(ramend) 
       outi sph,high(ramend) 
       
       outi ddrout, 0xff 
       
       outi tccr2, 0b00000111 
       outi timsk, 1«toie2 
       
        
       
        
       ldi led,1«5 
       ldi mask,1«5 
       sei 
      cycle: 
      cpi counter, 10 
      breq offtim 
       rjmp cycle 
       
      timer2_ovf: 
      inc counter 
       out portout, led 
       eor led, mask 
      reti 
        
      offtim: 
      outi timsk, 0«toie2 
      rjmp asinxron 
       
      asinxron: 
       outi assr, 0b00001000 
      back: 
       in r16, assr 
       cpi r16, 0b00001000 
       brne back 
       
        outi tccr2, 0b00000101 
        outi tcnt2, 0 
        outi ocr2, 0 
        outi timsk, 1«toie2 
       
       
      m1: 
      rjmp m1


      Верх меги на фото слева. 
    • Автор: griin
      Купил на аллиэкспресс wifi выключатель. Установил программу, опробовал. Все работает. Вопрос - Как подсмотреть протокол обмена командами.(т.е. на каком порту, HTTP....?)