ГлавнаяРегистрацияВход Сайт Сокола Сергея Пятница, 03.05.2024, 06:26
  "Домашнее задание" - Страница 2 - Форум Приветствую Вас Гость | RSS

[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 2 из 8
  • «
  • 1
  • 2
  • 3
  • 4
  • 7
  • 8
  • »
Форум » Основной форум сайта » Общее » "Домашнее задание" (c1316886@rtrtr.com)
"Домашнее задание"
miminoДата: Пятница, 01.06.2012, 01:37 | Сообщение # 16
Полковник
Группа: Администраторы
Сообщений: 227
Репутация: 101
Статус: Offline
Извините, совсем замотался, у меня сейчас довольно загруженный период. Постараюсь завтра проверить программу вашу, а то сейчас уже башка не варит как надо, а в ассемблере очень легко ошибиться...
 
miminoДата: Понедельник, 04.06.2012, 23:25 | Сообщение # 17
Полковник
Группа: Администраторы
Сообщений: 227
Репутация: 101
Статус: Offline
Простите! Вот, что бывает, когда голова задуренная... sad
Я по памяти отвечал на вопросы по заданию, и неправильно его воспроизвел. Я думал, что двумя кнопками надо управлять одним светодиодом, а не наоборот.

В таком случае все можно реализовать просто. Если смотреть по коду программы, приведенному в примере, то в регистр r17 надо записать единицы в оба разряда, где находятся светодиоды. И перед началом основного цикла включить один из светодиодов. А потом тест программы можно оставить тем же. Команда eor будет менять состояние обоих светодиодов на противоположное. А поскольку один из них уже был включен, то они будут работать в противофазе, что и требуется.

И извините, что так долго не отвечал. Накопилась куча неотложных дел...
 
GranDADДата: Вторник, 05.06.2012, 10:31 | Сообщение # 18
Лейтенант
Группа: Проверенные
Сообщений: 49
Репутация: 0
Статус: Offline
Первое задание я уже давно сделал biggrin . Только я не знал как записать две единицы вашим способом, (1<<4), так что я тупо нарисал 0b00010001.

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

Ксати успели ли вы просмотреть код поей последней программы? У меня подозрегия что она работает некорректно потому, что я использовал орепетор ret слишком часто. smile

Quote (mimino)

И извините, что так долго не отвечал. Накопилась куча неотложных дел...

Ничего, мы никуда не спешим smile

С уважением GranDaD


Сообщение отредактировал GranDAD - Вторник, 05.06.2012, 12:53
 
miminoДата: Вторник, 05.06.2012, 15:38 | Сообщение # 19
Полковник
Группа: Администраторы
Сообщений: 227
Репутация: 101
Статус: Offline
Таак...
Ну начать с того, что мне не нравится вот эта строка:
Quote
ldi r17,(1<<4) ;Загрузка в регистр r17 "1", смещенной на 4 разряда влево
out DDRB, r17 ;Копирование из r17 в DDRB (РВ4 - выход)

В ней же на выход переводится линия только одного светодиода.
Затем вот тут:
Quote
ldi r16, 0b00000110 ;Загрузка в регистр r16 "1", смещенной на 2 разряда влево

main: ;Основной цикл программы
rcall led

В регистр r16 загружается константа 0b00000110, которая по идее должна включать подтягивающие резисторы на кнопках, но потом сразу идет вызов подпрограммы led, и кнопки остаются в подвешенном состоянии. Возможно, еще поэтому где-то зацикливается.

Проще всего сделать алгоритм так, как я говорил: два независимых обработчика кнопок, следующих один за другим. Только в первом обработчике сделать не так:
Quote
sbic PINB, 2 ;Если РВ2=0 (кнопка нажата), пропустить след. строку
rjmp main ;Возврат к началу цикла

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

А с обилием ret я так и не разобрался, честно говоря, больно мудреный алгоритм получился smile
 
GranDADДата: Среда, 06.06.2012, 22:30 | Сообщение # 20
Лейтенант
Группа: Проверенные
Сообщений: 49
Репутация: 0
Статус: Offline
Эта задача мне никак не дается (пока что)... wacko
Так что я просто перепрышнул через нее и пошел дальше.
Сегодня сделал задачи из пятого урока.
Прикрепить zip архив с кодами не получилось и из-за этого я оставляю прямую ссылку на скачивание.(Что вроде-бы не нарушает правил, если я не прав прошу исправить smile )


Сообщение отредактировал GranDAD - Среда, 06.06.2012, 23:28
 
miminoДата: Пятница, 08.06.2012, 15:02 | Сообщение # 21
Полковник
Группа: Администраторы
Сообщений: 227
Репутация: 101
Статус: Offline
GranDAD, размещение прямых ссылок никаких правил не нарушает smile
Просмотрел я ваши решения. С первым заданием я полностью согласен.
А вот со вторым - нет. Реализовывать таймер, чтоб потом внутри него делать обычную задержку - это просто кощунство! В качестве ухищрений я имел в виду снизить насколько возможно тактовую частоту таймера, то есть выставить наибольший возможный делитель. Если этого не хватит, то при каждом срабатывании таймера наращивать какой-то регистр, а когда он достигнет определенной величины, производить переключение светодиода. И никаких задержек!
Насчет третьего задания... Оно в принципе верно, но неоптимально. Я бы не стал располагать метку on там, где это сделали вы. Зачем каждый раз переиницализировать контроллер? Лучшее ее перенести куда-то, чтобы в ней выполнялось только разрешение прерывания таймера.
 
GranDADДата: Пятница, 08.06.2012, 16:18 | Сообщение # 22
Лейтенант
Группа: Проверенные
Сообщений: 49
Репутация: 0
Статус: Offline
Спасибо за разьеснения.
Тогда во втором задании зделаю так
Code
ldi r16, (1<<CS01)|(1<<CS02);
Итого примерно 5 Гц.
А насчет третьего так
Code
reset:
sbi PORTB, 2     ;Включение подтягивающего резистора на РВ2 (кнопка SB1)
sbi PORTB, 1     ;Включение подтягивающего резистора на РВ1 (кнопка SB2)
ldi r16, RAMEND  ;Загрузка в регистр r16 адреса верхней границы ОЗУ
out SPL, r16        ;Копирование значения из r16 в регистр указателя стека SPL
ldi r16, (1<<CS01)|(1<<CS02);Загрузка двух "1", смещенных на CS00 и CS02
out TCCR0B,r16   ;Копирование значения из регистра r16 в регистр TCCR0B
ldi r17,(1<<4)     ;Загрузка в регистр r17 "1", смещенной на 4 разр. влево
out DDRB, r17     ;Копирование из r17 в DDRB (РВ4 - выход)
clr r16            ;Очистка регистра r16
on:
ldi r16, (1<<TOIE0) ;Загрузка в регистр r16 "1", смещенной на TOIE0
out TIMSK0,r16     ;Копирование значения из регистра r16 в регистр TIMSK0
sei                ;Глобальное разрешение прерываний


Сообщение отредактировал GranDAD - Пятница, 08.06.2012, 17:37
 
miminoДата: Пятница, 08.06.2012, 16:28 | Сообщение # 23
Полковник
Группа: Администраторы
Сообщений: 227
Репутация: 101
Статус: Offline
Так во втором же надо не 5 Гц, а 0,5 Гц. В этом вся и хитрость smile

Насчет третьего уже получше. Хотя можно и sei перенести выше, ничего страшного не произойдет.
 
GranDADДата: Пятница, 08.06.2012, 16:39 | Сообщение # 24
Лейтенант
Группа: Проверенные
Сообщений: 49
Репутация: 0
Статус: Offline
Ой ощибочка вышла. На самом деле частота равна 0.47 то есть примерно 0.5 smile

Сообщение отредактировал GranDAD - Пятница, 08.06.2012, 16:42
 
miminoДата: Пятница, 08.06.2012, 17:04 | Сообщение # 25
Полковник
Группа: Администраторы
Сообщений: 227
Репутация: 101
Статус: Offline
Странно, я думал, не удастся базовыми средствами получить такую частоту. Ну ладно, хай буде так!

Как там следующий этап? smile
 
GranDADДата: Пятница, 08.06.2012, 17:12 | Сообщение # 26
Лейтенант
Группа: Проверенные
Сообщений: 49
Репутация: 0
Статус: Offline
Сейчас пытаютсь сделать первое задание. Есть кое какие затруднения так как у схему я еще физически не собирал (жду когда Attiny13 в DIP корпусе приедет).

А в Proteus'e яркость не меняеться smile

Quote (mimino)
Странно, я думал, не удастся базовыми средствами получить такую частоту. Ну ладно, хай буде так!

Кстати несчет этого решения я тоже не уверен, просто решил твою таблицу продолжить (001,010,011,100,101,110) и записать 1 и в CS02 и в CS01 и тогда я предроложил что получиться как бы больший делитель (1024*4=4096)

P.S Ух как повезло. Только что забрал с почты новенкий Attiny13a. У меня несколько вопросов по поводу твоей платы из первого шага. На что лучше заменить R2-R5 (220ohm) 100ohm или 470 ohm. И что это за конденсатор такой C1 10,0x6,3В


Сообщение отредактировал GranDAD - Пятница, 08.06.2012, 19:42
 
miminoДата: Пятница, 08.06.2012, 20:05 | Сообщение # 27
Полковник
Группа: Администраторы
Сообщений: 227
Репутация: 101
Статус: Offline
Quote
Кстати несчет этого решения я тоже не уверен, просто решил твою таблицу продолжить (001,010,011,100,101,110) и записать 1 и в CS02 и в CS01 и тогда я предроложил что получиться как бы больший делитель (1024*4=4096)

Не, максимальный делитель 1024. А дальше там комбинации, которые отвечают за тактирование таймера от внешних импульсов. Так что сие неправильно.
Quote
На что лучше заменить R2-R5 (220ohm) 100ohm или 470 ohm.

Лучше на 470 Ом, если светодиоды красные и на 100 Ом, если зеленые или желтые.
Quote
И что это за конденсатор такой C1 10,0x6,3В

Такая запись означает, что это электролитический конденсатор емкостью 10 мкф, рассчитанный на напряжение не менее 6,3 В.
 
GranDADДата: Суббота, 09.06.2012, 00:57 | Сообщение # 28
Лейтенант
Группа: Проверенные
Сообщений: 49
Репутация: 0
Статус: Offline
Понятно спасибо. Сейчас на макетной плате спаяю и поробую все примеры из первых 5 уроков smile

Добавлено (09.06.2012, 00:57)
---------------------------------------------
Почему то не хочет прошиваться. Какую пограмму используете вы для прошивки мк?


Сообщение отредактировал GranDAD - Суббота, 09.06.2012, 00:58
 
miminoДата: Суббота, 09.06.2012, 21:30 | Сообщение # 29
Полковник
Группа: Администраторы
Сообщений: 227
Репутация: 101
Статус: Offline
Смотря каким программатором шью. Если USBasp, то AVRDUDE, а если своим, то соответственно собственной программой. Почитайте там одну из первый статей, я писал об этом, и даже ссылки давал на скачивание. smile
 
GranDADДата: Суббота, 09.06.2012, 21:50 | Сообщение # 30
Лейтенант
Группа: Проверенные
Сообщений: 49
Репутация: 0
Статус: Offline
Все уже решилось smile
Там чип либо с самого начала был бракованный либо я его спалил.
Пришлость делать переходник sop8 в dip8 и использовать мелкие attiny. Сейчас вроде нормально прошивается. Теперь использую eXtreme Burner - AVR так как в AVRDUDE всегда ошибки появляются
 
Форум » Основной форум сайта » Общее » "Домашнее задание" (c1316886@rtrtr.com)
  • Страница 2 из 8
  • «
  • 1
  • 2
  • 3
  • 4
  • 7
  • 8
  • »
Поиск:

 

Copyright MyCorp © 2024
Бесплатный конструктор сайтов - uCoz