ВСЁ по прошивке и программированию AT90S2313/ATTiny2313
- KeFirCHic
- Родился
- Сообщения: 15
- Зарегистрирован: Пт авг 14, 2009 15:55:06
- Откуда: Одесса
- Контактная информация:
Делаю часы на ATTiny2313. Данные часов, минут и секунд храню в РОН (R0,R1,R2) . Записываю данные в эти регистры с помощью сложения и проверки на переполнения
mov W,r0
ldi temp, 1
add W,temp
ldi temp,60
cpse W, temp
rjmp w3
clr W
w3: mov r0,W
Изначально я расчитываю на, что в регистр R0 пуст и значение его 0х00. Но после выключения и включения питания там или последнее значение до выкл. питания, или вообще случайные числа. Как-то использовал РОН для косвенной адресации, так это вообще пипец!!! Еслив РОН было левое число, то это равносильно "пойдём туда - хрен его знает куда" ... Спасаюсь тем, что после иницилизации стека вставляю команды очищающия жизненно важных регистров и тогда всё работает ок!
Вопрос:
Как избавиться от этого явления не вставляя лишние команды очистки регистров? Лишние 3-4 команды в начале программы это конечно не так уж и много, но всё-таки! Может это как-то связанно с FUSE переключателями. (Я их не менял. Заводские настройки)
mov W,r0
ldi temp, 1
add W,temp
ldi temp,60
cpse W, temp
rjmp w3
clr W
w3: mov r0,W
Изначально я расчитываю на, что в регистр R0 пуст и значение его 0х00. Но после выключения и включения питания там или последнее значение до выкл. питания, или вообще случайные числа. Как-то использовал РОН для косвенной адресации, так это вообще пипец!!! Еслив РОН было левое число, то это равносильно "пойдём туда - хрен его знает куда" ... Спасаюсь тем, что после иницилизации стека вставляю команды очищающия жизненно важных регистров и тогда всё работает ок!
Вопрос:
Как избавиться от этого явления не вставляя лишние команды очистки регистров? Лишние 3-4 команды в начале программы это конечно не так уж и много, но всё-таки! Может это как-то связанно с FUSE переключателями. (Я их не менял. Заводские настройки)
- Pooher
- Мучитель микросхем
- Сообщения: 491
- Зарегистрирован: Вс янв 07, 2007 01:45:48
- Откуда: Российская Федерация, будь она неладна...
Без команд очищения не обойтись. Любой регистр МК при включении может иметь любое значение. И, кстати, вы в курсе что МК использует указанные регистры для некоторых операций?
Научить нельзя, можно научиться. Пифагор.
Вставь недостающие буквы в слово *у*ня. Если у тебя получилось слово кухня, значит ты интеллигентный человек.
Вставь недостающие буквы в слово *у*ня. Если у тебя получилось слово кухня, значит ты интеллигентный человек.
- GP1
- Поставщик валерьянки для Кота
- Сообщения: 2401
- Зарегистрирован: Пт май 23, 2008 19:32:22
- Откуда: Россия, Волгоград
- Контактная информация:
KeFirCHic писал(а):
ldi temp, 1
add W,temp
ldi temp,60
cpse W, temp
rjmp w3
clr W
w3: mov r0,W
если использовать регистры из старшей половины R16-R31, код можно упростить
Код: Выделить всё
inс W ; я бы обзвал регистры sek, min, hour
cpi W,60
brne w3
clr W ; если счетчик сек 60, то обнуляем и добавляем минуту
inc min
; и так далее
w3:а вообще в часах лучше считать сразу в BCD, потом мороки меньше с переводом.
опять же не забывать очем говорил Pooher!
- Pooher
- Мучитель микросхем
- Сообщения: 491
- Зарегистрирован: Вс янв 07, 2007 01:45:48
- Откуда: Российская Федерация, будь она неладна...
Вариантов много:
1. Спалил LPT.
2. Спалил МК.
3. Неправильные фьюзы.
Ну, при перврм и втором варианте всё понятно.
Третий вариант можно попробовать полечить. Тут первое, что надо сделать, это попробовать подать внешний тактирующий сигнал. Если ничего не заработает, то параллельный программатор Вам в руки.
PS: Пользуйтесь поиском, надоело одно и тоже писать!
1. Спалил LPT.
2. Спалил МК.
3. Неправильные фьюзы.
Ну, при перврм и втором варианте всё понятно.
Третий вариант можно попробовать полечить. Тут первое, что надо сделать, это попробовать подать внешний тактирующий сигнал. Если ничего не заработает, то параллельный программатор Вам в руки.
PS: Пользуйтесь поиском, надоело одно и тоже писать!
Научить нельзя, можно научиться. Пифагор.
Вставь недостающие буквы в слово *у*ня. Если у тебя получилось слово кухня, значит ты интеллигентный человек.
Вставь недостающие буквы в слово *у*ня. Если у тебя получилось слово кухня, значит ты интеллигентный человек.
- Redrik Shuhart
- Друг Кота
- Сообщения: 3641
- Зарегистрирован: Пт апр 03, 2009 22:12:58
- Откуда: Из Украины, Кировоградская облась,
- Redrik Shuhart
- Друг Кота
- Сообщения: 3641
- Зарегистрирован: Пт апр 03, 2009 22:12:58
- Откуда: Из Украины, Кировоградская облась,
Добрый вечер))))Собирал вот такую штуковину http://www.techmaniacs.net/repairs_lab/1694/?pg=1 Всё собрал, выставил фьюзы по этой картинки
Устройство не заработало. Програмировал 5 проводами. На данный момент тинька не подаёт признаков жизни. Программапишет, мол нету ответа от контролера. Собрал СТК200/300 - ничем не помог. Пишет, что нет ответа. Помогите, что делать??
P.S: у меня ATTiny2313? а не A90S2313
Устройство не заработало. Програмировал 5 проводами. На данный момент тинька не подаёт признаков жизни. Программапишет, мол нету ответа от контролера. Собрал СТК200/300 - ничем не помог. Пишет, что нет ответа. Помогите, что делать??
P.S: у меня ATTiny2313? а не A90S2313
- ibiza11
- Поставщик валерьянки для Кота
- Сообщения: 1900
- Зарегистрирован: Сб фев 21, 2009 13:11:40
- Откуда: Москва
проверяйте монтаж. вот цитата с того сайта
так что это нормально. не знаю какая там схема, но судя по фузам, контроллер запрограммирован на работу с внешним кварцем 3-8Мгц. Он у вас установлен?И теперь нажимаем кнопку «Write». После этого оно выдаст какую-то ошибку, типа контроллер не читается, но на это не обращаем внимания:
Ставим плюсы: )
- ibiza11
- Поставщик валерьянки для Кота
- Сообщения: 1900
- Зарегистрирован: Сб фев 21, 2009 13:11:40
- Откуда: Москва
проверяйте монтаж, генерацию. скорее всего там проблемы. не забываем про питание. контроллер работает до 16 МГц, если это не tiny2313V (этот до 8 МГц). почитайте даташит на микроконтроллер. если с языком проблемы, почитайте книжку "Микроконтроллеры AVR в радиолюбительской практике Белов А.В.2007"
Ставим плюсы: )
