Страница 19 из 304

Добавлено: Сб авг 01, 2009 23:20:37
Секретный кот
kot_fedot писал(а):для переменных, наверное, надо использовать регистры МК. Как это сделать?
Никак. Только в SRAM или EPROM. Или пишите ассемблерную вставку.

Добавлено: Сб авг 01, 2009 23:23:48
kot_fedot
Ну, я так и предполагал... Спасибо! Мур-р-р!

Добавлено: Вс авг 02, 2009 14:28:13
константин_KoSS_89
Ура, разобрался :))) оказываеться просто все мои пульты дома не RC5 а чтото другое....Собрал на TINY2313 RC5 ПДУ и всё заработало :))
Как только мои пульты прикошачить или нужно токо с кодом RC5??? :roll:
Изображение

Добавлено: Вс авг 02, 2009 16:38:27
Секретный кот
константин_KoSS_89 писал(а):Как только мои пульты прикошачить или нужно токо с кодом RC5??? :roll:
Для использования команды GETRC5 – только RC5, каким бы это ни казалось странным :)))
А чтобы прикошачить свои пульты, нужно либо изучать их протоколы, либо делать обучаемый приём. В обоих случаях писать свою обработку, скорее всего на асме. Я как-то начинал заниматься вторым вариантом (обучаемый приёмник), но пока забросил.

Добавлено: Сб авг 08, 2009 10:55:31
pomidor
2константин_KoSS_89

AN #149 - Sony Remote Control Decoding with BASCOM AVR
http://www.mcselec.com/index.php?option ... &Itemid=57

AN #157 - Implementation of IR NEC protocol
http://www.mcselec.com/index.php?option ... &Itemid=57

итд гуглем

Добавлено: Вт авг 25, 2009 13:17:39
sunny-space
Народ а кто делал управление по RC5 на меге16. А то я сделал и не работает. На тиньке повторил с той же программой всё работает отлично.
Если с тинькой хоть я за спиной щёлкал отойдя от стола на пару метров светодиод загорался в любом случаи, то с мегой даже, если в притык, то не работает. Попробовал вывести результат нажатия кнопок в терминал компилятора, то выводит, то нет. И вот думаю может во фьюзах проблема или ещё в чём вообщем кто что скажет?
Attiny2313:
прошитые fuse:

Код: Выделить всё

spien
sut1,sut0
cksel0, cksel1, sksel3
кварц 16 Мгц
ATmega16:
прошитые fuse:

Код: Выделить всё

bootsz0, bootsz1
ccort
spien
sut1,sut0
кварц 16 Мгц
прога:

Код: Выделить всё

$regfile = "m16def.dat"
 $crystal = 16000000
$lib "mcsbyte.lbx"
Config Rc5 = Pinb.4
Config Pinb.3 = Output
Config Portd.0 = Output
Speaker Alias Portd.0
Dim Address As Byte
Dim Command As Byte
Enable Interrupts
$hwstack = 32
$swstack = 10
$framesize = 40

 Do
 Getrc5(address , Command)
 If Address = 0 Then
 Command = Command And &B01111111
 End If
 If Command = 12 Then
 Reset Portb.3

 End If

 If Command = 1 Then
 Set Portb.3
 Else

 Reset Portb.3
 End If

 If Command = 2 Then
 Set Portb.3
 Wait 1
 Reset Portb.3
 Wait 1
 Set Portb.3
 Wait 1
 Reset Portb.3
 End If
 If Command = 3 Then
 Set Portb.3
 End If
 Loop

Добавлено: Вт авг 25, 2009 20:31:10
pomidor
2sunny-space
а если фузы меги16 прошить как у тиньки (в вашем случае) на внутренний 8 МГц генератор, не пробовали? Может в этом собака где-нить порылась

Добавлено: Вт авг 25, 2009 23:22:51
константин_KoSS_89
Поправте если я неправ, но вот это

Код: Выделить всё

$hwstack = 32 
$swstack = 10 
$framesize = 40
Это помоему лишнее, покрайней мере на mega8

Добавлено: Ср авг 26, 2009 14:22:07
sunny-space
pomidor писал(а):2sunny-space
а если фузы меги16 прошить как у тиньки (в вашем случае) на внутренний 8 МГц генератор, не пробовали? Может в этом собака где-нить порылась
пробовал, ни чего не изменилось

Добавлено: Сб авг 29, 2009 08:10:35
dimon-790
Уважаемые коты а кто и как,борется с зависаниями мк?зачастую, приходится собирать девайсы кот-ые работают круглосуточно, и эта проблема имеет место быть(в смысле зависания).

Добавлено: Вс авг 30, 2009 15:24:23
WildCat
во первых питание - очень тщательно отобрать. Два кондера в параллель по питанию. Да и питать через дроссели можно. Во вторых разводка - дорожки покороче, пошире, желательно без углов (это ваще т из ВЧ техники, но все равно). Кварц как можно ближе к чипу, ноги кондерами на землю подтянуть. Ну и если помехи сильные, то экранированием.
Это аппаратная защита. А программно нужно еще доработать код, чтобы он обнулял счетчик watchdog, и фузами этот самый ватчдог включить. Тогда при зависании МК перезапустится.

Добавлено: Вс авг 30, 2009 18:41:36
dimon-790
WildCat,с аппаратной частью всё понятно,а вот про watchdog если можно поподробнее или ссылочку. Заранее спасибо

Добавлено: Пн авг 31, 2009 07:19:06
dimon-790
Всё,разобрался с ватчдогом 8) ещё раз спасибо!

Добавлено: Пн авг 31, 2009 18:14:30
WildCat
кстати ватчдог для долгофункционируещего автономного устройства - просто необходимость. иногда даже внешние ставят, на простой логике, чтоб ломаца было нечему.

Добавлено: Пн авг 31, 2009 20:54:28
pavel123
Пожалуйста, многоуважаемые коты, поподробней про ватчдог.
Шо это такое и счем его едят.
Посмотрел в хелпе, что то не нашол, а ой как интересно узнать...
Просю-сю-сю.... :)) :)) :))

Добавлено: Вт сен 01, 2009 00:32:14
Gryphon
На официальном сайте (mcselec.com) есть документалка (нужно знание английского) в разделе закачек. Называется BASCAVR.PDF пользуюсь уже год, там все подробно расписано и рассказано.

Добавлено: Вт сен 01, 2009 14:51:26
dimon-790
WildCat писал(а):кстати ватчдог для долгофункционируещего автономного устройства - просто необходимость. иногда даже внешние ставят, на простой логике, чтоб ломаца было нечему.
Видал, такие ставили в АОНы на Z80 ,статейки в журналах "радио" были по зтому поводу.В АВР-ках помоему это уже лишнее... :roll: хотя как знать...

Добавлено: Пт сен 11, 2009 19:23:24
Shuriks
константин_KoSS_89 писал(а):Поправте если я неправ, но вот это

Код: Выделить всё

$hwstack = 32 
$swstack = 10 
$framesize = 40
Это помоему лишнее, покрайней мере на mega8
Нет ... Ты не прав... Эти величины напрямую зависят от доступной памяти ОЗУ. Т.е. от количества переменных , количества вызова подпрограмм и т.д.
И эти правила действуют для всех контроллеров .. так у всех есть ОЗУ.

:)

Добавлено: Сб сен 12, 2009 00:51:07
константин_KoSS_89
Спосибо за разяснение.
Ктонебудь может подсказать программу для пульта и приёмника пропорционального управления моделью комнатного верталёта?
Задача: пульт реализует обработку двух переменных резисторов(накрайний случай переключателя и двух кнопок) и передаёт на приёмник посредством IR излучения. Приёмник в свою очередь принимает и реализует два ШИМ сигнала. и.т.д.
Может ктото подобное делал? я набрасал, что думал, но неработает, да и идея программы тупая, использовал протакол RC5. неполучаеться связать програмный ШИМ и приём IR команд, вобще запутался. БрррррМяяяуу.....

Как прервать исполнение команды WAIT?

Добавлено: Вс сен 13, 2009 07:58:36
Omul
Для проекта нужен отсчет времени и запоминание его для дальнейшего употребления.

Написал код:

Код: Выделить всё

On Int0 Key

Key:
B = Getatkbd()
Return




Times:
Cls
Enable Int0
B = 0
For Deleylong = 2 To 999
Lcd "Enter,¨Пробел"
Lowerline
Lcd "Сек-"
Locate 2 , 6
Lcd Deleylong
Wait 1
Cls
If B = 13 Then
Bittime = 0
Exit For
Else
If B = 32 Then
Deleylong = 1
Exit For
End If
End If
Next
Disable Int0
Return
Код работает, но прерываение не хочет прерывать оператор WAIT - то есть чтобы время запомнилось, приходится УДЕРЖИВАТЬ клавишу ENTER в течении 1 секунды, а не КРАТКОВРЕМЕННО НАЖАТЬ ее. Как это победить, а то не очень красиво?