Страница 11 из 132

Добавлено: Ср июл 16, 2008 03:29:00
Dock
кто может подсказать по воопросу int0, всю ночь просидел, так и не смог понять как это сделать.

Добавлено: Ср июл 16, 2008 08:11:28
delay
Я вам привел готовую программу. Только выход там PORTB0. Можно сделать любой. Подключите туда свои светодиоды, прошейте файл ogni.hex из папки EXE.
Только нужно подробнее знать ваши условия. Сигнал включения присутствует постоянно или это импульс на которкое время. В данной программе учитывается, что он присутствует на все время свечения(хотя не понятно зачем тогда нужен МК). Если это импульс и каждый следующий импульс включает - выключает светодиоды, то программку нужно изменить. По сути МК будет работать триггером.
Или вы уже написали программу для управления другими светодиодами и вам осталось добавить в нее управление этими двумя, которые вы хотите осуществить через INT0? Тогда я вам не помощник. Асм не знаю. Здесь есть немало спецов по асму.

Добавлено: Ср июл 16, 2008 08:36:53
Dock
сигнал с приёмника поступает постоянно..
прошивка написана уже на всё, кроме этого прерывания и проверена на работоспособность.
посмотрел я то что вы дали но Си пока не знаю..
даже изменить выход на pb1 не смог.. просто не понимаю этот язык.
спасибо за помощь, буду ждать умельцев asm

Добавлено: Ср июл 16, 2008 08:41:44
Dock
delay писал(а): В данной программе учитывается, что он присутствует на все время свечения(хотя не понятно зачем тогда нужен МК)..
от приёмника на схему подаётся +, -, сигнал. т.е. сигнал 1 или 0.
если переключатель в передатчике в верхнем положении это 1 на примнике (именно на это мканале) в нижнем соотетственно 0.
т.е. int0 должен включать или выключать светодиод по сигналу 1 и 0.

Добавлено: Ср июл 16, 2008 08:48:02
delay
Так поставьте транзисторный ключ со светодиодами прямо с этого выхода приемника. В чем проблема то? Зачем вам это в МК запускать?

Добавлено: Ср июл 16, 2008 19:03:17
Dock
тогда и нет смысла изучать МК. проще поставить транзистор и пустит питание постянное с одной ножки МК. пр 0 будет 0 при 1 будет 1.. хоть это и простойший вариант то не для этого я покупал МК.

Добавлено: Ср июл 23, 2008 03:13:15
Dock
неужели нет спецов кто пишет на ASM? хм мда....

Добавлено: Чт июл 31, 2008 07:36:00
BerZerK-ku
Dock писал(а):неужели нет спецов кто пишет на ASM? хм мда....
Да тут спец и не нужен, достаточно знаний основ. Вот мой вариант :)

Добавлено: Вс авг 10, 2008 00:57:29
poff
Доброго времени суток. Никгда не доводилось испльзовать все регистры РОН в 2313, просто было не нужно. Но вот в очередном проекте понадобилось 30 регистров РОН. Программирую в асме.
Вот перечень который я обозначил:

.def temp =R16
.def temp1 =R17
.def temp2 =R18
.def temp3 =R19
.def temp4 =R20
.def temp5 =R21
.def temp6 =R22
.def temp7 =R23
.def temp8 =R24
.def temp9 =R25
.def temp10 =R26
.def temp11 =R27
.def temp12 =R28
.def temp13 =R29
.def temp14 =R30
.def temp15 =R31
.def temp16 =R0
.def temp17 =R1
.def temp18 =R2
.def temp19 =R3
.def temp20 =R4
.def temp21 =R5
.def temp22 =R6
.def temp23 =R7
.def temp24 =R8
.def temp25 =R9
.def temp26 =R10
.def temp27 =R11
.def temp28 =R12
.def temp29 =R13
.def temp30 =R14
.def temp31 =R15

Компилятор утверждает, что регистры свыше Temp15 - INVALID.
В чем проблема?
Заранее благодарен...

Добавлено: Пн авг 11, 2008 10:29:23
lag1
Помогите старому чайнику. (МК начал заниматься уже "на старости лет") :cry: . Надо исключить прерывания от сторожевого таймера. Достаточно ли для этого только проследить, чтобы небыло галочки возле фьюза WDTON, или надо еще что-то записывать в регистр WDTCR. Спасибо.

Добавлено: Пн авг 11, 2008 14:20:24
Барсик
lag1 писал(а):...Надо исключить прерывания от сторожевого таймера.
Просто не ставьте галку у фьюза WDTON. Этого вполне достаточно. Эту галку лучше вообще никогда не ставить, т.к. если понадобится, то его можно легко включить программно и в нужный момент. (и выключить тоже. Но это чуть сложнее). А если установлен фьюз, то Watchdog таймер включается сразу.

Добавлено: Пн авг 11, 2008 22:14:22
tembl4
Здрасте :) приведите мне пожалуйсто код простейшего сикундомера на асме для at90s2313 (если не трудно) :))

Снова о прерываниях

Добавлено: Вт авг 12, 2008 21:20:25
lag1
Здравствуйте. У меня еще один вопрос о прерываниях. В программе из обучалки советуют расставить в начале программы ссылки на все прерывания. Пример дан для AT90S2313. А может кто подсказать, как это будет выглядеть для ATTiny2313. И еще, если можно, несколько слов о том, как может повлиять уже на работу программы то, что если мы не будем в начале программы делать ссылки на все возможные прерывания, а пропишем только используемые в программе. Спасибо.

Добавлено: Чт авг 14, 2008 17:56:27
tembl4
помоему их можно просто не ставить.. :? (если не будете их использовать..

Добавлено: Чт авг 14, 2008 21:45:41
sachok
Это должна выйти бегущая точка. Но есть один момент, нужно что бы при зажигании 8 светодиода PC7, он оставался далее включенным. Но она не работает как нада. 8 светодиод включается и тухнет, а нада что бы продолжал светится.Помогите.
Схема подключения:
Изображение

Добавлено: Пт авг 15, 2008 06:45:40
BerZerK-ku
sachok писал(а):Это должна выйти бегущая точка. Но есть один момент, нужно что бы при зажигании 8 светодиода PC7, он оставался далее включенным. Но она не работает как нада. 8 светодиод включается и тухнет, а нада что бы продолжал светится.Помогите.

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

// остальное делается посредством прерываний
// по переполнению Таймера/Счетчика 1
while(PORTB != 0x7f);
замени эту строку на while(1) или for(;;).

Добавлено: Пт авг 15, 2008 09:30:11
sachok
замени эту строку на while(1) или for(;

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

while(1)
это на сколько я знаю - бесконечный цикл из которого мне нужно выйти. при использовании выдает warning.

Добавлено: Пт авг 15, 2008 10:10:50
BerZerK-ku
это на сколько я знаю - бесконечный цикл из которого мне нужно выйти.
А зачем выходить? что будет делать МК после выхода из этого цикла?
при использовании выдает warning.
for( ; ; ); вот так должно было быть, если бы значки автоматически не преобразовывались в смайлы. Это другой вариант while(1);

Добавлено: Пт авг 15, 2008 10:25:03
sachok
Я начинающий поэтому может не все понимаю. С такой прошивкой светодиоды засвечиваются по порядку от 1 по 8. 8 светится в протежении заданного времени и тухнет. А мне надо что бы он продолжал светится, тоесть программа остановилась. Вот проект в proteus:

Добавлено: Пт авг 15, 2008 11:20:17
tych
В проекте НЕ ПРОШИВКИ ни исходника !

Чтоб прога остановилась в нужном месте, добавьте там:

1. выключить перерывания
2. сделать бесконечный цикл (с командой WDT внутри - если сторожевой таймер включен.)

Пример со светодиодами есть в задаче 1 курса по AVR - моя дом. страничка - там подробно все расписано.