Администрация форума не несёт ответственности за достоверность информации и оставляет за собой право редактировать или в особых случаях даже удалять посты без предупреждения. Спасибо за понимание.

Программирование ATMEL в BASCOM.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Программирование ATMEL в BASCOM. » Вопросы - ответы » Помогите с алгоритмом!


Помогите с алгоритмом!

Сообщений 31 страница 60 из 206

31

olegkaras написал(а):

двоеточие конечно мигает но не так как надо.

Двоеточие нужно выводить на экран на пол-секунды.
Пол-секунды светиться, вторые пол-секунды не светиться.

Отредактировано pavel1969 (2018-02-04 19:38:29)

0

32

А так как я хочу разве не лучше ?

0

33

Nord написал(а):

У DS1307 есть выход с секундным импульсом - лучше не пожелаешь в данном случае.

Уже же ж написали - есть секундные импульсы от DS1307.
От них и вся пляска...

0

34

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

Отредактировано olegkaras (2018-02-04 20:56:16)

0

35

Ну тогда первый раз отлови чет или нечет а потом по оператору

TOGGLE var

просто меняй флажок -  0-чет и 1-нечет.

0

36

Спасибо , попробую.

0

37

olegkaras написал(а):

Так это нужно использовать порт мк, и наверное по внешнему прерыванию ловить эти  импульсы.

А вот интересно, а как у вас организована синхронизация мк и часов?

0

38

1

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

Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7 , E = Portb.3 , Rs = Portb.2
Config Lcd = 16 * 2

Config Pind.5 = Input
Config Pind.4 = Input

Config Sda = Portd.1
Config Scl = Portb.0

Dim Seco As Byte
Dim Mine As Byte
Dim Hour As Byte

Initlcd
Cls
Cursor Off

Do
I2cstart
I2cwbyte &HD0
I2cwbyte &H00
I2cstart
I2cwbyte &HD1
I2crbyte Seco , Ack
I2crbyte Mine , Ack
I2crbyte Hour , Nack
I2cstop
Seco = Makedec(seco)
Mine = Makedec(mine)
Hour = Makedec(hour)
Locate 1 , 1
Lcd Hour ; ":" ; Mine ; ":" ; Seco ; "    "

If Pind.5 = 0 Then
Incr Mine
Mine = Makebcd(mine)
I2cstart
I2cwbyte &HD0
I2cwbyte 1
I2cwbyte Mine
I2cstop
Waitms 100
End If

If Pind.4 = 0 Then
Incr Hour
Hour = Makebcd(hour)
I2cstart
I2cwbyte &HD0
I2cwbyte 2
I2cwbyte Hour
I2cstop
Waitms 100
End If

Loop
End

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

0

39

Кстати говоря, курсор обычно мигает не раз в секунду, а в половину (500мс). :D

0

40

там ещё есть 2^15 выход, 32768 гигагерц  :D
на таймер с делилкой повесить, шоб квынты выдавал... :rofl:

0

41

-NMi- написал(а):

там ещё есть 2^15 выход, 32768 гигагерц  
на таймер с делилкой повесить, шоб квынты выдавал...

ГИГА или Гц ?

0

42

пЕнтаГерц. :D

0

43

olegkaras написал(а):

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

Это насилие над ЛСД и часиками.  o.O  Зачем с частотой 4МгЦ постоянно опрашивать часы и выводить на ЛСД?
Есть же ж секундный импульс. Заведи на любое свободное прерывание INT(*), и по этому прерыванию 1 раз в секунду опрашивай часы и выводи на ЛСД.

0

44

pavel1969 написал(а):

Есть же ж секундный импульс. Заведи на любое свободное прерывание INT(*), и по этому прерыванию 1 раз в секунду опрашивай часы и выводи на ЛСД.

Добавлю:
..., а через 500ms в знакоместо, где печатается ":", напечатать " ".
Через секунду все повторится.
Вот и будет двоеточие мигать... ;)

0

45

pavel1969 написал(а):

Это насилие над ЛСД и часиками.    Зачем с частотой 4МгЦ постоянно опрашивать часы и выводить на ЛСД?
Есть же ж секундный импульс. Заведи на любое свободное прерывание INT(*), и по этому прерыванию 1 раз в секунду опрашивай часы и выводи на ЛСД.

                                       
Я планирую по инт0 мерять частоту вращения, по инт1 ловить переход фазы через ноль, по инт2  RC5 и есче нужно частоту мерить от пресостата.
На счет 4Мгц этг всего пример ,но я на это не обратил внимания ,надо будет както снизить время опроса.

Отредактировано olegkaras (2018-02-05 19:48:18)

0

46

olegkaras
INT(2)  у тини2313 нет, но....
Зато у тини2313 есть порт Бы, и там можно повесить аж целых 8 внешних прерываний PCINT(0....7)
Кажись так, но если я не прав, старшие товарищи меня поправят...

0

47

pavel1969 написал(а):

olegkaras
INT(2)  у тини2313 нет, но....
Зато у тини2313 есть порт Бы, и там можно повесить аж целых 8 внешних прерываний PCINT(0....7)
Кажись так, но если я не прав, старшие товарищи меня поправят...

Это всего лишь примеры, проект я планирую делать на Atmega128.

0

48

olegkaras написал(а):

Я планирую по инт0 мерять частоту вращения, по инт1 ловить переход фазы через ноль, по инт2  RC5

"понтов" то хватит для "интов", а???  :rofl:
Хоть чёнить путное написал бы, слова одни да и только...  :D

0

49

olegkaras
Так у Atmega128 на борту целых 8 полноценных прерываний INT.
Мало?  ;)
-NMi-
8-мь штук INT-в, по идее, должно хватить.  :)

0

50

Базаришь, 8 шт хватит, да только хватит ли времени у процессора стока "интов" переварить... 38 кГц однако  :mybb:

0

51

-NMi-
Откуда взялась эта частота? -

38 кГц однако

0

52

pavel1969 написал(а):

olegkaras
Так у Atmega128 на борту целых 8 полноценных прерываний INT.
Мало?  
-NMi-
8-мь штук INT-в, по идее, должно хватить.

Что значит полноценных ? Я так понимаю все они работают последовательно ?

0

53

-NMi- написал(а):

Базаришь, 8 шт хватит, да только хватит ли времени у процессора стока "интов" переварить... 38 кГц однако

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

0

54

olegkaras написал(а):

Я так понимаю все они работают последовательно ?

Это если STM32 раскуришь, там да, по приоритетам прерывания работают. В атмеле всё проще - первый пришёл - первым ушёл.
Ты-б хоть в протеусе чего наковырял железного то, ато у и от тебя только слова пустые исходят...
И про RC5 мне прям вот оОООочень интересно, как же ты его реализуешь на "интах"

0

55

Могу ссылку на гугл диск дать.

0

56

Вот ссылки только и научился раздавать...  :D
Мне не надо, напиши что-нибудь небольшое и РАБОЧЕЕ - посмотрим, на что ты способен. Реально вот только слава от тебя. Покажи свои способности.

0

57

-NMi- написал(а):

Вот ссылки только и научился раздавать...  
Мне не надо, напиши что-нибудь небольшое и РАБОЧЕЕ - посмотрим, на что ты способен. Реально вот только слава от тебя. Покажи свои способности.

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

0

58

Я вот тебе сколько раз уже говорил - не пытайся объять необъятное и тд...
РАЗБИВАЙ задачу на кусочки и собирай всю задачу ЦЕЛИКОМ!
Молодец, сделал регулятор оборотов двигателя. Давай, покажи нам. Надеюсь там полноценный ПИД-регулятор. Ждём.

0

59

olegkaras написал(а):

Я пытаюсь сделать контроллер стиральной машины...

ИМХО, для этого "за глаза" хватит 16-й Меги, если подойти с опытом и знаниями, возможно даже 8-й...

А тут уже ради мигания двоеточия в STM32 полезли... ;)

0

60

Ставлю флакон коня на то, шо атмелина не успеет отработать ПИД регулятор оборотов + RC5 на 35 или 38 кГц одновременно, ибо ещё нужен ЕЩЁ один опорный таймер для отсчёта единиц времени. А ещё нужно ПИД посчитать, а он не целочисленный наверняка а с плавающей точкой.
А с пульта будут валиться стройные пачки импульсов с частотой почти 40 тысяч раз в секунду!
Давай в железе его наваяй, правда я не представляю как в протеусе всё это просчитать...

0


Вы здесь » Программирование ATMEL в BASCOM. » Вопросы - ответы » Помогите с алгоритмом!