Перейти к содержанию

emal-05

Members
  • Постов

    1
  • Зарегистрирован

  • Посещение

Сообщения, опубликованные emal-05

  1. Хорошо, в программе реализовано следующее:

    Используется ATtiny2313.

    На входы компаратора подаётся входное напряжение и опорное напряжение.

    Два вывода используются как дискретные входы для задания режимов подачей 0 или 1 с помощью перемычек.

    Один вывод выход для управления светодиодом, включение нулём.

    Алгоритм работы:

    Если вх.напряжение превышает опорное, то ничего не делаем.

    Если входное напряжение ниже опорного, то начинаем отсчитывать 1 минуту.

    Если в процессе отсчёта ситуация изменилась(напряжение стало выше опорного), то отсчитанное время начинаем считать в обратную сторону, но только до нуля.

    Если досчитали до 1-й минуты, то начинаем мигать светодиодом 2 раза в секунду.

    Если после этого напряжение станет выше опорного, то мигать не прекращаем, а просто ведём отсчёт в обратную сторону и прекращаем мигать только после достижения нуля.

    То есть направление отсчёта времени зависит от состояния компаратора, а переключения мигает/немигает осуществляется в крайних положениях.

    состояния перемычек

    1, 1 выдержка 1 минута

    1,0 выдержка 30 секунд

    0,х выдержки нет, реакция мгновенная.

    Ну раз пошла такая пьянка, вставлю и я свои пять копеек. Лично я против си и асемблера ничего плохого не имею и вообще считаю глупо спорить какой язык лучше. Каждый язык по своему интересен. Я например пишу на бэйсике(Bascom-AVR)и пока доволен, иногда поверхностно касаюсь си и асемблера, но считаю что без знания архетектуры контроллера ничего хорошего не получиться. Кто считает что Bascom для начинающих, несоглашусь, в нём можно писать и серьёзные проекты. Недавно занимался проектом в котором победила дружба, в устройстве было три микроконтроллера, две штуки Attiny2313A в одной программа была написана на асемблере, в другой на си, а третий Atmtga8A программа написана в Bascome, причём Atmtga8A общается с одой Attiny2313A по USART и всё прекрасно работает.Bascom к тому же позволяет и асемблеровские вставки писать. Вообще есть большое желание изучить и си и асемблер, но как обычно не хватает времени, а для этого как известно времени нужно много.

    Ну и в заключении, вот набросал програмку к вашей задачи. В пол часа конечно не уложился, вместе со схемкой гдето часа 1,5 ушло. В протеусе работает как часы.

    Единственное отступление, что светодиод включается не нулём, а еденицей. Ну не привык я так светодиоды подключать.

    $regfile = "attiny2313.dat"
    $crystal = 8000000
    
    Ddrb.7 = 1
    Ddrd.5 = 0
    Ddrd.6 = 0
    
    Dim A As Bit
    Dim Puls As Bit
    Dim Tim As Byte
    Dim Time_sec As Byte
    
    Config Timer1 = Timer , Prescale = 256
    Stop Timer1
    
    Do
    
    If Pind.5 = 0 Then
    Tim = 0
    Else
     If Pind.6 = 0 Then Tim = 30
     If Pind.6 = 1 Then Tim = 60
    End If
    
    If Acsr.5 = 1 Then Start Timer1
    
    If Tim = 0 Then
     If Acsr.5 = 0 Then
       Portb.7 = 0
         Else
          Portb.7 = Puls
     End If
    End If
    
    If Timer1 > 15624 Then Puls = 1
    
    If Timer1 > 31249 Then
     Timer1 = 0
     Puls = 0
     If Acsr.5 = 1 Then Incr Time_sec
     If Acsr.5 = 0 Then Decr Time_sec
    End If
    
    If Time_sec >= Tim Then
     Time_sec = Tim
     If Tim <> 0 Then A = 1
       Else
         If Time_sec = 0 Then
           Stop Timer1
           A = 0
           Portb.7 = 0
         End If
    End If
    
    If A = 1 Then Portb.7 = Puls
    
    Loop
    
    End
    

    post-158878-0-34526500-1337238765_thumb.jpg

×
×
  • Создать...