ВСЁ по прошивке и программированию AT90S2313/ATTiny2313
- delay
- Нашел транзистор. Понюхал.
- Сообщения: 173
- Зарегистрирован: Чт мар 20, 2008 20:33:43
- Контактная информация:
Я вам привел готовую программу. Только выход там PORTB0. Можно сделать любой. Подключите туда свои светодиоды, прошейте файл ogni.hex из папки EXE.
Только нужно подробнее знать ваши условия. Сигнал включения присутствует постоянно или это импульс на которкое время. В данной программе учитывается, что он присутствует на все время свечения(хотя не понятно зачем тогда нужен МК). Если это импульс и каждый следующий импульс включает - выключает светодиоды, то программку нужно изменить. По сути МК будет работать триггером.
Или вы уже написали программу для управления другими светодиодами и вам осталось добавить в нее управление этими двумя, которые вы хотите осуществить через INT0? Тогда я вам не помощник. Асм не знаю. Здесь есть немало спецов по асму.
Только нужно подробнее знать ваши условия. Сигнал включения присутствует постоянно или это импульс на которкое время. В данной программе учитывается, что он присутствует на все время свечения(хотя не понятно зачем тогда нужен МК). Если это импульс и каждый следующий импульс включает - выключает светодиоды, то программку нужно изменить. По сути МК будет работать триггером.
Или вы уже написали программу для управления другими светодиодами и вам осталось добавить в нее управление этими двумя, которые вы хотите осуществить через INT0? Тогда я вам не помощник. Асм не знаю. Здесь есть немало спецов по асму.
- Dock
- Первый раз сказал Мяу!
- Сообщения: 37
- Зарегистрирован: Сб дек 22, 2007 17:13:24
- Контактная информация:
delay писал(а): В данной программе учитывается, что он присутствует на все время свечения(хотя не понятно зачем тогда нужен МК)..
от приёмника на схему подаётся +, -, сигнал. т.е. сигнал 1 или 0.
если переключатель в передатчике в верхнем положении это 1 на примнике (именно на это мканале) в нижнем соотетственно 0.
т.е. int0 должен включать или выключать светодиод по сигналу 1 и 0.
-
BerZerK-ku
- Мучитель микросхем
- Сообщения: 492
- Зарегистрирован: Вт июл 22, 2008 08:10:54
Dock писал(а):неужели нет спецов кто пишет на ASM? хм мда....
Да тут спец и не нужен, достаточно знаний основ. Вот мой вариант
- Вложения
-
- code.txt
- (2.74 КБ) 505 скачиваний
Доброго времени суток. Никгда не доводилось испльзовать все регистры РОН в 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.
В чем проблема?
Заранее благодарен...
Вот перечень который я обозначил:
.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.
В чем проблема?
Заранее благодарен...
lag1 писал(а):...Надо исключить прерывания от сторожевого таймера.
Просто не ставьте галку у фьюза WDTON. Этого вполне достаточно. Эту галку лучше вообще никогда не ставить, т.к. если понадобится, то его можно легко включить программно и в нужный момент. (и выключить тоже. Но это чуть сложнее). А если установлен фьюз, то Watchdog таймер включается сразу.
Снова о прерываниях
Здравствуйте. У меня еще один вопрос о прерываниях. В программе из обучалки советуют расставить в начале программы ссылки на все прерывания. Пример дан для AT90S2313. А может кто подсказать, как это будет выглядеть для ATTiny2313. И еще, если можно, несколько слов о том, как может повлиять уже на работу программы то, что если мы не будем в начале программы делать ссылки на все возможные прерывания, а пропишем только используемые в программе. Спасибо.
- sachok
- Опытный кот
- Сообщения: 849
- Зарегистрирован: Сб янв 05, 2008 11:05:15
- Откуда: Україна м.Луцьк
- Контактная информация:
Это должна выйти бегущая точка. Но есть один момент, нужно что бы при зажигании 8 светодиода PC7, он оставался далее включенным. Но она не работает как нада. 8 светодиод включается и тухнет, а нада что бы продолжал светится.Помогите.
Схема подключения:

Схема подключения:

- Вложения
-
- код.txt
- (1.41 КБ) 526 скачиваний
Я не Сашок!!!
-
BerZerK-ku
- Мучитель микросхем
- Сообщения: 492
- Зарегистрирован: Вт июл 22, 2008 08:10:54
sachok писал(а):Это должна выйти бегущая точка. Но есть один момент, нужно что бы при зажигании 8 светодиода PC7, он оставался далее включенным. Но она не работает как нада. 8 светодиод включается и тухнет, а нада что бы продолжал светится.Помогите.
Код: Выделить всё
// остальное делается посредством прерываний
// по переполнению Таймера/Счетчика 1
while(PORTB != 0x7f);
замени эту строку на while(1) или for(;;).
- sachok
- Опытный кот
- Сообщения: 849
- Зарегистрирован: Сб янв 05, 2008 11:05:15
- Откуда: Україна м.Луцьк
- Контактная информация:
замени эту строку на while(1) или for(;
Код: Выделить всё
while(1)Код: Выделить всё
for();Я не Сашок!!!
-
BerZerK-ku
- Мучитель микросхем
- Сообщения: 492
- Зарегистрирован: Вт июл 22, 2008 08:10:54
это на сколько я знаю - бесконечный цикл из которого мне нужно выйти.
А зачем выходить? что будет делать МК после выхода из этого цикла?
при использовании выдает warning.Код: Выделить всё
for();
for( ; ; ); вот так должно было быть, если бы значки автоматически не преобразовывались в смайлы. Это другой вариант while(1);
- sachok
- Опытный кот
- Сообщения: 849
- Зарегистрирован: Сб янв 05, 2008 11:05:15
- Откуда: Україна м.Луцьк
- Контактная информация:
Я начинающий поэтому может не все понимаю. С такой прошивкой светодиоды засвечиваются по порядку от 1 по 8. 8 светится в протежении заданного времени и тухнет. А мне надо что бы он продолжал светится, тоесть программа остановилась. Вот проект в proteus:
- Вложения
-
- Новая папка.rar
- (12.44 КБ) 360 скачиваний
Последний раз редактировалось sachok Пт авг 15, 2008 12:01:08, всего редактировалось 1 раз.
Я не Сашок!!!
- tych
- Э...
- Сообщения: 2792
- Зарегистрирован: Ср апр 04, 2007 08:39:14
- Откуда: Москва
- Контактная информация:
В проекте НЕ ПРОШИВКИ ни исходника !
Чтоб прога остановилась в нужном месте, добавьте там:
1. выключить перерывания
2. сделать бесконечный цикл (с командой WDT внутри - если сторожевой таймер включен.)
Пример со светодиодами есть в задаче 1 курса по AVR - моя дом. страничка - там подробно все расписано.
Чтоб прога остановилась в нужном месте, добавьте там:
1. выключить перерывания
2. сделать бесконечный цикл (с командой WDT внутри - если сторожевой таймер включен.)
Пример со светодиодами есть в задаче 1 курса по AVR - моя дом. страничка - там подробно все расписано.
Думайте сами, решайте сами ... а вот он-лайн перевод на корявый русский http://translate.ru