 |
|
|
|
| Автор |
Сообщение |
dimonbest Частый гость (>5)

Зарегистрирован: 12.04.2007 Сообщения: 14
|
|
| Вернуться к началу |
|
 |
MIDAS Знатный посетитель (>20)

Зарегистрирован: 02.04.2007 Сообщения: 40 Откуда: Україна
|
Добавлено: 15 Апр 2007, 19:19 Заголовок сообщения: |
|
|
Слушай, а сейчас правда вопрос не по теме задам. Вот мне надо сделать некоторую конструкцию с 2 светодиодами и 2 кнопками и работа таймера стоит мне для этогопокупать AТMega8 или 16 если нет посоветуй , а то я вэтом деле новачок
_________________ WRTC
/*With Respect To C*/ |
|
| Вернуться к началу |
|
 |
dimonbest Частый гость (>5)

Зарегистрирован: 12.04.2007 Сообщения: 14
|
Добавлено: 15 Апр 2007, 19:23 Заголовок сообщения: |
|
|
Эта конструкция очень простая, достаточно будет контроллера серии tiny , например ATTiny2313.
Можно в принципе и AT90S2313, тем более что мануал на русском, правда эта серия уже снята с производства
|
|
| Вернуться к началу |
|
 |
MIDAS Знатный посетитель (>20)

Зарегистрирован: 02.04.2007 Сообщения: 40 Откуда: Україна
|
Добавлено: 16 Апр 2007, 17:50 Заголовок сообщения: |
|
|
Вот тепер решил в свой проєкт ещё добавить кнопочку , написал коротенькую прогу для обработки прерывания и вот как всегда по традиции не работает
| Код: |
#include <mega8.h>
interrupt [EXT_INT0] void ext_int0_isr(void) //Функция обработкы прерывания от INT0
{
PORTB^=0xFF; //Меняем горящий на негорящий и наоборот
}
void main(void)
{
DDRB=0xFF; //порт В выход
GICR=0x40; //устанавлеваем 6-ой бит(1) INT0 тем самым разрешаем прерывание по этому выводу
MCUCR=0x02; //устанавлеваем 2-ой бит(1) ISCO1 прерывание вызывается по ниспадающему фронту сигнала на INT0
/*Как это ниспадающий фронт????????? */
#asm("sei") //Общее разрешение прерываний
while (1); //Ожидаем прерывание от INT0
}
|
Или опять, что-то намудрил
А вот навожу проект VMLABa
| Код: |
.MICRO "ATmega8"
.TOOLCHAIN "GENERIC"
.TARGET "rt.hex"
.COFF "rt.cof"
.SOURCE "rt__.c"
.TRACE
.POWER VDD=5 VSS=0
.CLOCK 1meg
.STORE 250m
D1 VDD SVTD
R1 SVTD PB0 560
K0 PD6 VSS LATCHED
.PLOT V(PB0) V(PD6)
|
У меня есть догатка, что я кнопку не туда куда надо присобачил, если так исправте и не ругпйте все мы когда то учились
Кстати, спасибо за даташит, ЭТО такая полезная штука
_________________ WRTC
/*With Respect To C*/ |
|
| Вернуться к началу |
|
 |
dimonbest Частый гость (>5)

Зарегистрирован: 12.04.2007 Сообщения: 14
|
Добавлено: 16 Апр 2007, 19:17 Заголовок сообщения: |
|
|
Для начала нарисуй схемку чтобы можно было что то сказать.... а дальше будем думать...
|
|
| Вернуться к началу |
|
 |
AndryG Модератор
Зарегистрирован: 24.07.2006 Сообщения: 411 Откуда: Helios-3
|
Добавлено: 17 Апр 2007, 7:20 Заголовок сообщения: |
|
|
Открываем первые страницы DataSheet (ИСПОЛЬЗУЕМОГО КОНТРОЛЛЕРА) и смотрим, на каком выводе вход INT0 ... 100% это НЕ PD6 ... вроде бы PD2 ... но лучше проверьте.
_________________ AndryG
Последний раз редактировалось: AndryG (17 Апр 2007, 13:52), всего редактировалось 1 раз |
|
| Вернуться к началу |
|
 |
MIDAS Знатный посетитель (>20)

Зарегистрирован: 02.04.2007 Сообщения: 40 Откуда: Україна
|
Добавлено: 17 Апр 2007, 12:42 Заголовок сообщения: |
|
|
Спасибо поменял тепер проэкт выглядит вот так
| Код: |
.MICRO "ATmega8"
.TOOLCHAIN "GENERIC"
.TARGET "rt.hex"
.COFF "rt.cof"
.SOURCE "rt__.c"
.TRACE
.POWER VDD=5 VSS=0
.CLOCK 1meg
.STORE 250m
D1 VDD SVTD
R1 SVTD PB0 560
K0 PD2 VSS
.PLOT V(PB0) V(PD2)
|
НО всё равно не работает
_________________ WRTC
/*With Respect To C*/ |
|
| Вернуться к началу |
|
 |
AndryG Модератор
Зарегистрирован: 24.07.2006 Сообщения: 411 Откуда: Helios-3
|
Добавлено: 17 Апр 2007, 14:03 Заголовок сообщения: |
|
|
Ниспадающий фронт ... это когда ниспадает с единицы в ноль.
Вы кнопкой замыкаете PIND.2 на землю ... попробуйте в главном цикле проверять состояние PIND.2 ... если там единица, то зажигаете светодиод ... если ноль - тушите .... я уверен на 90%, (9.9% на глюки симулятора оставляю ) что вы никогда не получите единицы! так-как вывод висит в воздухе, а потом Вы его на землю замыкаете ... вот и не получаете Вы фронта.
Выхода два:
либо включиьть внутренний подтягивающий резистор (PORTD |= 0x04)
либо прицепить внешний резистор, прописав его в проекте симулятора (R2 PВ2 МСС 4700)
Внимательно анализируйте схему ... и не забывайте о "мелочях" ... и будет поменьше красных рожиц в постах
И еще ... http://www.remexpert.com/forum/viewtopic.php?p=3369#3369 -- уже наступали здесь на такие грабли ... для ког о ветка ведется
_________________ AndryG |
|
| Вернуться к началу |
|
 |
MIDAS Знатный посетитель (>20)

Зарегистрирован: 02.04.2007 Сообщения: 40 Откуда: Україна
|
Добавлено: 17 Апр 2007, 16:39 Заголовок сообщения: |
|
|
Извините пожалуйста за то, что я такой не понятливый. Но не пояму я почему "R2 PВ2 МСС 4700", я понимаю еслибы ещё так "R2 PВ2 VDD 4700"(Я в справке Лаба не нашёл МСС) У меня когда я прописываю строчку которую мне посоветовали в VMLAB, он выдаёт сообщение об ошибки. Пробовал в свою прогу добавлять "PORTD |= 0x04" Эфект тот же, а точнее его ОТСУТСТВИЕ. Пожалуйста помогите разобратся! AndryG я побывал в той ветке, посмотрел, там ты тоже советуеш подключим внешний подтягивающий резистор проанализировав то что там написано понял в проект VMLABа нужно добавить "R2 PВ2 VDD 4700", на моё удивление не помогло, хотя у tellurianа сработало. Ничего не пойму, МИСТИКА (ИЛИ я просто тупой)
_________________ WRTC
/*With Respect To C*/ |
|
| Вернуться к началу |
|
 |
avr123.nm.ru Знатный посетитель (>20)

Зарегистрирован: 07.08.2006 Сообщения: 67
|
Добавлено: 17 Апр 2007, 16:43 Заголовок сообщения: |
|
|
| MIDAS писал(а): | | написал коротенькую прогу для обработки прерывания и вот как всегда по традиции не работает |
Посмотри о прерываниях в AVR - proavr.narod.ru/03.htm
там приложены примеры с INT0 INT1 и симуляция с кнопками в VMLAB.
|
|
| Вернуться к началу |
|
 |
|
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете добавлять вложения в этом форуме Вы можете просматривать вложения в этом форуме
|
|