Главная » Статьи » Как подключить

Когда не хватает ног. Часть 2. Сдвиговый регистр 74HC595
 

 В прошлый раз был рассмотрен вариант увеличения выходов микроконтроллера при помощи микросхемы – дешифратора 1533ИД3, сегодня рассмотрим более продвинутый вариант на сдвиговом регистре 74HC595. Использовав всего одну микросхему можно заиметь в свое распоряжение дополнительно 8 выходов, использовав всего 3 ноги микроконтроллера. А благодаря возможности расширения, добавив вторую микросхему, количество выходов можно увеличить до 16. Если мало, можно добавить третью и получить в пользование уже 24 выхода и такой трюк можно повторять сколько угодно раз. При этом количество занимаемых ног микроконтроллера так и останется 3, красота! 
 Итак, рассмотрим более подробно назначение выводов микросхемы и научимся управлять сдвиговым регистром 74hc595 в Bascom-AVR.
 
 Для начала ознакомимся с выводами микросхемы, а точнее с их функциональностью. Ниже представлена вырезка из даташита на 74hc595 с обозначением выводов микросхемы:



  • Q0…Q7 – выходы которыми будем управлять. Могут находится в трёх состояниях: логическая единица, логический ноль и высокоомное Hi-Z состояние
  • GND – земля
  • Q7′ – выход предназначенный для последовательного соединения регистров.
  • MR – сброс регистра.
  • SH_CP – вход для тактовых импульсов
  • ST_CP – вход «защёлкивающий» данные
  • OE – вход переводящий выходы из HI-Z в рабочее состояние 
  • DS – вход данных
  • VCC – питание 5 вольт

 Логика работы с регистром

 Когда на тактовом входе SH_CP появляется логическая единица, бит находящийся на входе данных DS считывается и записывается в сдвиговый регистр. Этот бит записывается в самый младший разряд. При поступлении на тактовый вход следующего импульса высокого уровня, в сдвиговый регистр записывается следующий бит со входа данных. А тот бит который был записан ранее сдвигается на один разряд влево, а его место занимает вновь пришедший бит. Следующий тактовый импульс запишет третий бит, а два предыдущих сдвинутся дальше. Когда все восемь бит заполнились и приходит девятый тактовый импульс то регистр снова начинает заполнятся с младшего разряда и всё повторятся вновь. Что бы данные появились на выходах Q0…Q7 нужно их «защёлкнуть». Для этого необходимо подать логическую единицу на вход ST_CP

 - MR осуществляет сброс регистра, устанавливая все выходы Q0…Q7 в состояние логического нуля. Для осуществления сброса нужно подать логический ноль на этот вход и подать положительный импульс на вход ST_CP. Очень полезная функция, так как при подаче питания на микросхему на выходе появляется некое произвольное значение. При работе с регистром на этом выводе должна находится логическая единица. 
 - OE (output enable) если подать сюда логическую 1, то выходы будут находится в высокоомном HI-Z состоянии. Когда подаем на этот вход логический 0, выходы будут находится в рабочем состоянии.
 - Q7′  предназначен для последовательного соединения сдвиговых регистров.

 Но лучше один раз увидеть, чем два раза прочитать =) поэтому смотрим на анимацию:





 Работа с регистром в лоб

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

$regfile = "attiny2313.dat"
$crystal = 1000000

Config Portb = Output

Sh_cp Alias Portb.3                'нога для тактовых импульсов
Ds Alias Portb.2                   'нога для вывода данных
St_cp Alias Portb.0                'нога для "защелкивания" данных в регистр хранения


'вывод через регистр числа 146 (в бинарном представлении 10010010)

St_cp = 0                          'выставляем ногу в режим записи данных

Ds = 1                             'выставляем первый бит
Sh_cp = 0                          'даем импульс на тактовый выход
Sh_cp = 1

Ds = 0                             'выставляем второй бит
Sh_cp = 0
Sh_cp = 1

Ds = 0                             'выставляем третий бит
Sh_cp = 0
Sh_cp = 1

Ds = 1                             'выставляем четвертый бит
Sh_cp = 0
Sh_cp = 1

Ds = 0                             'выставляем пятый бит
Sh_cp = 0
Sh_cp = 1

Ds = 0                             'выставляем шестой бит
Sh_cp = 0
Sh_cp = 1

Ds = 1                             'выставляем седьмой бит
Sh_cp = 0
Sh_cp = 1

Ds = 0                             'выставляем восьмой бит
Sh_cp = 0
Sh_cp = 1

St_cp = 1                          'защелкиваем введенные данные

End


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



Работает, на выходе регистра появилось отправленное число!

Работа с регистром таким образом хоть и возможна но слишком громоздка и занимает много программной памяти. Но зато наглядно демонстрирует всю методику работы с данной микросхемой. Рассмотрим более подходящий метод.


Управление регистром 74HC595 в Bascom через команду ShiftOut

 В Bascom-AVR для работы со всевозможными последовательными интерфейсами есть замечательная команда SHIFTOUT
 Эта команда сама разложит число на битовые составляющие и последовательно выведет их на любой пин микроконтроллера, заодно она может выдавать тактовые импульсы. Для работы со сдвиговыми регистрами самое то! Синтаксис команды:

SHIFTOUT Datapin , Clockpin , var , option


Datapin – порт микроконтроллера для вывода данных

Clockpin – порт микроконтроллера для вывода тактовых импульсов
Var – данные которые хотим отправить в регистр

Option – число от 0 до 3, этим параметром выбирается в каком порядке будут вводиться данные в регистр и активный уровень на линии Clock при котором происходит запись бита:
option=0 – старший бит идет первым,
 Clock активный уровень низкий
option=1 –
старший бит идет первым, Clock активный уровень высокий
option=2 –
младший бит идет первым, Clock активный уровень низкий
option=3 –
младший бит идет первым, Clock   активный уровень высокий

В нашем случае для работы с регистром 74HC595 параметр option нужно ставить 1 или 3.

 Для того чтобы защелкнуть данные в регистре, применим команду PulseOut. Эта команда выводит импульс на ногу микроконтроллера с заданной длительностью. Конфигурация команды выглядит следующим образом:

Pulseout Portb , 0 , 5

здесь выводится импульс на PortB.0 длительностью 5 микросекунд (при частоте работы мк 4 МГц)



 Теперь давайте выведем число 10010001 (145 в десятичной системе) на выход регистра, подключенному к микроконтроллеру по вышеприведенной схеме:

$regfile = "attiny2313.dat"
$crystal = 1000000

Dim A As Byte
Config Portb = Output

= 145

Gosub Hc595                                 'уходим на подпрограмму отправки данных

End

Hc595:                                      'подпрограмма отправки данных

Shiftout Portb., Portb., A , 1          'отправляем данные в регистр
Pulseout Portb , 0 , 5                      'защелкиваем данные
Return


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




Как видно управление сдвиговым регистром 74HC595 в Bascom состоит всего из двух строк кода, и не представляет никаких сложностей.


Увеличение разрядности

 Как говорилось ранее, регистры могут легко состыковаться друг с другом, тем самым давая возможность увеличить количество портов вывода практически до бесконечности.
 Для того чтобы добавить дополнительный регистр, необходимо соединить вместе выводы для тактовых импульсов SH_CP и выводы для защелкивания данных ST_CP. Вход данных первого регистра подключается к микроконтроллеру и туда мы будем гнать данные, а вход второго регистра соединяется к выводу Q7’ первого регистра.
 В программе управления необходимо изменить тип переменной, которую будем выводить через регистры. Так как соединив вместе два регистра мы получили в управление 16 ножек, то переменная должна хранить 16 бит данных (или 2 байта). Такой объем данных хранит переменная типа Word. Этот тип мы и будем использовать, и для примера выведем число 1111001001001100 (в десятичном виде это будет число 62028). 

$regfile = "attiny2313.dat"
$crystal
 = 1000000

Dim A As Word                                     'выбираем 2х байтный тип переменной

Config Portb = Output

= 62028                                         'выведем вот это число
Shiftout Portb.2 , Portb., A , 1                'отправляем данные в регистр
Pulseout Portb , 0 , 5                            'защелкиваем данные

End



соединение двух регистров 74HC595


 Старший байт (левая часть 11110010) выводится через второй регистр (IC2), а младший байт (01001100) выводится через первый регистр, соединенный к микроконтроллеру напрямую (IC1).
 
 Думаю проблем с подключением 3, 4, 5 регистров в ряд возникнуть не должно ;)

Удачи!

Категория: Как подключить | Добавлено: 20.08.2011
Просмотров: 79086 | Комментарии: 37 | Теги: логика, 74HC595 | Рейтинг: 4.4/21
Всего комментариев: 371 2 »
0  
37 exersizze   (20.09.2015 22:39)
Не люблю отвечать ссылками но задача тривиальная. В поиске выдает кучу результатов, например вот http://we.easyelectronics.ru/Soft/8-kanalnyy-shim-na-attiny13.html

36 Leosix   (16.09.2015 20:27)
Приветствую Товарищи эксперты!
Подскажите пожалуйста как через сдвиговик гнать ШИМ?
Допустим 6 светодиодов (бегущий огонек) должны загораться и гаснуть плавно
как это реализовать?

0  
35 exersizze   (09.09.2014 01:37)
Ev3658, для визуального понимания советую поставит протеус и помоделировать в нем каждый такт. Сразу большинство вопросов отпадут, можно будет своими
глазами наблюдать за логикой.
Цитата
Вот это не ясно, почему в одной строке два порта - Shiftout Portb.2 , Portb.3 , A , 1
читаем внимательно: команда SHIFTOUT может выводить тактовые импульсы на ножку Clockpin, в данном случае это и есть  PortB.3

Цитата
Вообщем Q7' как открывается?

В Q7 ' данные лезут в след за Q7, сразу автоматом.


Цитата
Если много использовать регистров сдвига, защёлкивать каждый раз данные на регистре или после посылки во все регистры?
защелкивать данные после того как загружены во все регистры (защелкиваем же все регистры одновременно)


Цитата
Посылаемые данные как попадают в регистры?
последовательно, от первого регистра до последнего.

34 Ev3658   (06.09.2014 22:37)
Блин, честно, чайник я ещё, можно чуток обчайниковать статейку?
Вот это не ясно, почему в одной строке два порта - Shiftout Portb.2 , Portb.3 , A , 1
Понимаю, что переменная двухбайтная, но если взглянуть на картинку, хотелось бы в коде послать двоичное и на картинке его увидеть.
И ещё, так как уже всё спаял, начинаю алхимичить. Вообщем Q7' как открывается? После 8го такта забитого в регистр автоматом? Или после защёлкивания?
Если много использовать регистров сдвига, защёлкивать каждый раз данные на регистре или после посылки во все регистры?
Посылаемые данные как попадают в регистры? По очереди или пока до последнее не дойдёт и так конечные данные окажутся на первом регистре?

33 exersizze   (23.12.2013 18:02)
Так он не в адрес статьи, а товарищу Leosix отписал.

32 Oboltus   (23.12.2013 12:03)
31 Valera18, а зачем? Честь Вашей внимательности, конечно, но цель статьи - научить работать со сдвиговыми регистрами и конкретно с командой SHIFTOUT. Ну есть там ошибка, и что? Вы будете ставить свои значения и считать для своего проекта. Все предельно понятно и четко рассказано.

31 Valera18   (29.09.2013 20:35)
Для Leosix

Заметил ошибку в подсчёте значения "А", проверьте весь подсчёт.
Из ходя из первого:
Do
If Pind.1 = 1 Then
B = 32768
A = 32768
Do
B = B / 2
A = A + B
Shiftout Portb.2 , Portb.3 , A , 1
Pulseout Portb , 0 , 5
Waitms 100
Loop Until A = 65535

при подсчёте выходит А=65536, а у Вас чтобы выйти из цикла Loop Until A = 65535. Вам нужно изменить на Loop Until A = 65536. Проверьте остальные подсчёты.

Во втором цикле нет выхода из Do Loop:
Waitms 700
A = 65535
B = 32768 * 2
Do
B = B / 2
A = A - B
Shiftout Portb.2 , Portb.3 , A , 1
Pulseout Portb , 0 , 5
Waitms 100
Loop (Чтобы выйти нужно Loop Until A = "значение")
Loop
End If

Или может Я чего-то не понял?

30 Valera18   (29.09.2013 11:39)
Для Leosix

Лучше так:

$regfile = "attiny2313.dat"
$crystal = 1000000
Dim A As Long
Dim B As Long
Config Portb = Output
Config Pind.1 = Input : Pind.1 = 1
Config Pind.2 = Input : Pind.2 = 1
Do
If Pind.1 = 0 Then
.....
.....
end if

If Pind.2 = 0 Then
.....
.....
end if

Один контакт кнопки подключён к земле (-), а другой к порту МК.
Добавлю: для кнопок лучше использовать Debounce Pind.1 , 0 , K1 , Sub
подробно можно прочитать тут: http://avrhelp.mcselec.com/debounce.htm

+1   Спам
29 Leosix   (29.09.2013 10:55)
Здравствуйте. Написал код для автоматического включения подсветки на лестнице (по 1 ступеньке) при приближении человека.
Но программа не реагирует на внешние сигналы вход Д1 и Д2.
Это мой первый опыт в программировании, оцените код пожалуйста)

$regfile = "attiny2313.dat"
$crystal = 1000000
Dim A As Long
Dim B As Long
Config Portb = Output
Config Pind.1 = Input
Config Pind.2 = Input
Do
If Pind.1 = 1 Then
B = 32768
A = 32768
Do
B = B / 2
A = A + B
Shiftout Portb.2 , Portb.3 , A , 1
Pulseout Portb , 0 , 5
Waitms 100
Loop Until A = 65535
Waitms 700
A = 65535
B = 32768 * 2
Do
B = B / 2
A = A - B
Shiftout Portb.2 , Portb.3 , A , 1
Pulseout Portb , 0 , 5
Waitms 100
Loop
Loop
End If

If Pind.2 = 1 Then
B = 2
A = 1
Shiftout Portb.2 , Portb.3 , A , 1
Pulseout Portb , 0 , 5
Waitms 100
Do
A = A + B
Shiftout Portb.2 , Portb.3 , A , 1
Pulseout Portb , 0 , 5
Waitms 100
B = B * 2
Loop Until A = 65535
Waitms 700
A = 65534
Shiftout Portb.2 , Portb.3 , A , 1
Pulseout Portb , 0 , 5
Waitms 100
A = 65532
Shiftout Portb.2 , Portb.3 , A , 1
Pulseout Portb , 0 , 5
Waitms 100
B = 2
Do
B = B * 2
A = A - B
Shiftout Portb.2 , Portb.3 , A , 1
Pulseout Portb , 0 , 5
Waitms 100
Loop
End If
End

28 exersizze   (19.09.2012 14:29)
Для вывода большого кол-ва бит, просто пропихиваем их все по одному, и когда закончили даем импульс на ногу SТ

27 Misha555   (18.09.2012 18:45)
$regfile = "m32def.dat" '
$crystal = 16000000
Config Lcdpin = Pin , Rs = Portb.0 , E = Portb.1 , Db4 = Portb.2 , Db5 = Portb.3 , Db6 = Portb.4 , Db7 = Portd.7
Config Lcd = 16 * 2
Wait 1
Cursor Off
Cls
Locate 1 , 5
Lcd "ZHARKOFF"
Locate 2 , 6 '
Lcd " test"
Wait 2
Config Portc = Input
Config Portc.0 = Input : Di1 Alias Portc.0
'Set Portc.0 '
Config Portc.1 = Input : Di2 Alias Portc.1
'Set Portc.1 '
Config Portc.2 = Input : Di3 Alias Portc.2
'Set Portc.2 '
Config Portc.3 = Input : Di4 Alias Portc.3
'Set Portc.3 '
Config Portc.4 = Input : Di5 Alias Portc.4
'Set Portc.4 '
Config Portc.5 = Input : Di6 Alias Portc.5
'Set Portc.5 '
Config Portc.6 = Input : Di7 Alias Portc.6
'Set Portc.6 '
Config Portc.7 = Input : Di8 Alias Portc.7
'Set Portc.7
Config Porta = Output
Config Porta.0 = Output : Do1 Alias Porta.0
Config Porta.1 = Output : Do2 Alias Porta.1
Config Porta.2 = Output : Do3 Alias Porta.2 '
Config Porta.3 = Output : Do4 Alias Porta.3
Config Porta.4 = Output : Do5 Alias Porta.4
Config Porta.5 = Output : Do6 Alias Porta.5
Config Porta.6 = Output : Do7 Alias Porta.6
Config Porta.7 = Output : Do8 Alias Porta.7
Config Portd.4 = Output
Config Portd.5 = Output
Config Portd.6 = Output
Sh_cp Alias Portd.5
Ds Alias Portd.4
St_cp Alias Portd.6
St_cp = 0
Ds = Di1
Sh_cp = 0
Sh_cp = 1
Ds = Di2 '
Sh_cp = 0 '
Sh_cp = 1
Ds = Di3 '
Sh_cp = 0 '
Sh_cp = 1
Ds = Di4 '
Sh_cp = 0 '
Sh_cp = 1
Ds = Di5 '
Sh_cp = 0 '
Sh_cp = 1
Ds = Di6
Sh_cp = 0
Sh_cp = 1
Ds = Di7
Sh_cp = 0 '
Sh_cp = 1
Ds = Di8
Sh_cp = 0 '
Sh_cp = 1
Ds = Do1 '
Sh_cp = 0 '
Sh_cp = 1
Ds = Do2 '
Sh_cp = 0 '
Sh_cp = 1
Ds = Do3 '
Sh_cp = 0
Sh_cp = 1
Ds = Do4 '
Sh_cp = 0 '
Sh_cp = 1
Ds = Do5 '
Sh_cp = 0
Sh_cp = 1
Ds = Do6 '
Sh_cp = 0 '
Sh_cp = 1
Ds = Do7 '
Sh_cp = 0 '
Sh_cp = 1
Ds = Do8 '
Sh_cp = 0 '
Sh_cp = 1
St_cp = 1
End

26 Misha555   (18.09.2012 18:44)
В принципе я понял. Но та написана только на первые 8-бит (1 сдвиговый регистр). А как ввести данные на следующий регистр (следующие 8 бит)? Или я что-то не правильно понял? Может полученое 8+8=16 битное число нужно перевести в десятичное и потом вложить в последний пример програмки
Вот что у меня вышло. Но увы в Протеусе оно не работает

25 exersizze   (18.09.2012 09:45)
А из чего формируется результат который нужно вывести? Можно эти биты поочереди засовывать в регистр, как в первом примере (с простым ножкодрыганием)

24 Misha555   (17.09.2012 21:01)
Считывать состояние регистра на выходе регистра мне и не нужно. Вы меня не поняли. Попробую обьяснить свой вопрос по другому.
В примере программы уже есть 16-битный код, исходя из которого каждая бита управляет своим светодиодом, тобиш он статический. А в моем случае 16 битный код динамический, и должен формироваться из состояния переменных, которые управляют входом/выходом. Исходя из этого кода будет видно состояние входа или выхода (1 или 0). Переменные уже есть в программе. Нужно только создать механизм создания 16-битного кода для сдвигового регистра

23 exersizze   (17.09.2012 20:11)
Считать состояние на выходе регистра никак не получиться, он работает только на вывод.

22 Misha555   (17.09.2012 17:19)
Здравствуйте уважаемые форумчане. Очень интересная тема. И как раз кстате. Сейчас разрабатываю устройство на базе Atmega32. Свободные есть только три порта. Нужно обеспечить контроль 16 портов (8 входов и 8 выходов)( (0 или 1), но с помощью сдвигового регистра. Я использую вторую схемку из двух сдвиговых регистров. Первый будет индицировать состояние входов, а второй - выходов. Но вот вопрос в том, каким образом вычислить состояние переменной А, исходя из состояния входов-выходов?

21 exersizze   (12.09.2012 19:54)
С учетом того что входы микросхемы имеют очень большое сопротивление (порядка сотен кОм), а выход микроконтроллера может потянуть до 20мА, можно подключать очень много микросхем, сотню-другую думаю потянет.

20 mm   (12.09.2012 15:45)
" Как говорилось ранее, регистры могут легко состыковаться друг с другом, тем самым давая возможность увеличить количество портов вывода практически до бесконечности."
Вопрос а выходы ATTINY 2313 сколько могут "потянуть" 5 ? 10? штук. Спасибо

19 exersizze   (20.05.2012 14:16)
С той библиотекой что уже написана не получится, придется много чего переделывать в коде, хотя это и реально.

18 amv2000   (20.05.2012 14:04)
Появилась мысль совместить 2 светодиодных (3 разрядных) индикатора и дисплей Nokia 3310, я так понимаю 3310 не получится подключить через 74HC595 ибо выводится будет графика?

17 amv2000   (29.01.2012 16:23)
Для мигания разрядов есть такой пример Number(1) = 36 ' на индикацию выводим -tESt-
Number(2) = 29
Number(3) = 16
Number(4) = 5
Number(5) = 29
Number(6) = 36

Blink_flag(1) = 1 ' мигаем первым и шестым разрядом
Blink_flag(6) = 1
Полная ссылка здесь http://www.edm2007.narod.ru/startavr8.html

16 exersizze   (27.01.2012 18:47)
Можно организовать цикл в котором в регистр будут отправляться то полезные данные, то нули. Цикл естественно должен быть с условием входа и выход. Вообще алгоритмов можно придумать кучу чтобы организовать мигание цифр..

15 Алексей_bird   (27.01.2012 14:55)
А как сделать чтобы индикатор моргал, т.е. все цифры одновременно гасли и зажигались с интервалом 0,5-1 сек?? т.е это используется тогда, когда есть несколько индикаторов с разными устанавливаемыми величинами, и при выборе определенной величины мигает тот индикатор, на котором выбран для изменения

14 exersizze   (21.11.2011 19:25)
попробуй поменять алгоритм, если исключить переход по GOTO то все работает.

13 Aleks8383   (20.11.2011 13:00)
Подскажите чего я не так делаю.Делаю простенький телеграфный ключик,а вот команда pulseout не как не хочет работать.В Tir как раз пытаюсь высести импульс требуемой длительности , не выходит вообще тишина,а в toch как щас сделано у меня ,всё работает но хотелось понять почему не идёт pulseout.
Code
$regfile = "attiny13.dat"
$crystal = 4800000
$hwstack = 32
$swstack = 8
$framesize = 16

Config Pinb.1 = Input
Config Portb.2 = Output
Config Pinb.3 = Input
Config Pinb.4 = Input
Config Pinb.5 = Input

Dim A As Word
Dim B As Word
Dim C As Byte

Config Debounce = 10

Enable Interrupts
Enable Int0
On Int0 Vrem

'основной цикл

Do
M1:
Debounce Pinb.3 , 0 , Tir
Debounce Pinb.4 , 0 , Toch
Loop

Tir:
Pulseout Portb , 2 , 300
Goto M1

Toch:
Set Portb.2
Waitms 100
Reset Portb.2
Goto M1

Vrem:
Incr C
Return

+1   Спам
12 amv2000   (17.11.2011 07:51)
http://avr.ru/beginer/avrsbs/entr.html с асмом можно посмотреть подробнее здесь

11 exersizze   (16.11.2011 18:50)
Как будет выглядеть не скажу, а вот принцип работы останется как в первом примере. Тоесть если сможешь, используя асм, подрыгать ногой микроконтроллера, ввести в регистр данные будет несложно.

10 solnce76   (16.11.2011 07:50)
доброго дня всем. у меня такой вопрос а как это будет выглядеть на асме? smile

9 exersizze   (26.08.2011 20:25)
забей на код из первого примера, он кроме того как для ознакомления малопригоден, там постоянно надо вручную прописывать все восемь бит.
я бы сделал так:

$regfile = "attiny2313.dat"
$crystal = 1000000

Dim A As Byte
Dim B As Byte
A = 1   'единичка только на первой ноге
B = 0   'ноль на всех выходах регистра
Config Portb = Output
Do
Shiftout Portb.2 , Portb.3 , A , 1   'зажигаем светик на первой ноге
Pulseout Portb , 0 , 5
Wait 1
Shiftout Portb.2 , Portb.3 , B , 1   'гасим светик на первой ноге
Pulseout Portb , 0 , 5
Wait 1
Loop
End

8 vpashko   (26.08.2011 18:39)
Вот пример кода, здесь светик постоянно горит, что нужно прописать что бы светик мигал???
$regfile = "attiny2313.dat"
$crystal = 1000000
Config Portb = Output
Sh_cp Alias Portb.3
Ds Alias Portb.2
St_cp Alias Portb.0
St_cp = 0

Ds = 1
Sh_cp = 0
Sh_cp = 1

St_cp = 1
End

1-30 31-37
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]






авторизация
Логин:
Пароль:
Комментарии
Задействуем АЦП. Вольтметр на AVR.
30.05.2016 - abomin:
Вариант с операционником пойдёт, т.к. хочу все шесть напряжений контролировать. ...
Задействуем АЦП. Вольтметр на AVR.
30.05.2016 - exersizze:
Ну тогда просто меняем местами плюс с минусом. Отрицательное напряжение бп на зе...
Задействуем АЦП. Вольтметр на AVR.
29.05.2016 - abomin:
Так компутерные БП - шесть напряжений: +5деж.; +3,3; +5; +12; -12; -5.
Задействуем АЦП. Вольтметр на AVR.
29.05.2016 - exersizze:
Можно. На выходе БП постоянное отрицательное напряжение или -/+ ?
Задействуем АЦП. Вольтметр на AVR.
29.05.2016 - abomin:
А можно ли измерить отрицательное напряжение? Хочу тестер компутерных БП сделать...
Диммер с сенсорной кнопкой
25.05.2016 - pchela5:
Ну основная проблема - настройка управляющих регистров. Так даташит на используе...
Диммер с сенсорной кнопкой
25.05.2016 - exersizze:
Ага, язык то один. Дольше придется с аппаратной частью разбираться чем кодить, о...
Диммер с сенсорной кнопкой
25.05.2016 - RD3AVJ:
Действительно похожи языки. То что среда платная - уже хуже. Проблема решена?)))
Диммер с сенсорной кнопкой
24.05.2016 - Scorpushka:
занятно)