реклама на сайте
подробности

 
 
3 страниц V  < 1 2 3 >  
Reply to this topicStart new topic
> Запуск таймера 16бит по внешнему прерыванию, Атмега+CodeVision
Vny4ek
сообщение Dec 10 2008, 14:44
Сообщение #16


Частый гость
**

Группа: Участник
Сообщений: 145
Регистрация: 11-01-08
Пользователь №: 34 001



Если s==0 то выводится я пробовал ей присваивать значение. А вот присвоить при прирывании не получается. По поводу дребезга контактов, я уже и генератор прямоугольных импульсов в протеусе использовал. амплитуда 5в. Вообщем я в тупике пока. Жду помощи
Go to the top of the page
 
+Quote Post
Goodefine
сообщение Dec 10 2008, 19:26
Сообщение #17


Местный
***

Группа: Свой
Сообщений: 211
Регистрация: 6-08-07
Из: Приднестровье, Тирасполь
Пользователь №: 29 581



Цитата(Vny4ek @ Dec 10 2008, 17:44) *
...А вот присвоить при прирывании не получается. По поводу дребезга контактов...

Дребезг где, в Протеусе?.. smile.gif
Проблема у вас в неправильном подключении кнопки. Вход INT0 в подвешенном состоянии, а вы, наверняка, кнопкой подключаете его к плюсу питания просто так... Чтобы работало, притяните вход INT0 к земле резистором около 5k, а кнопкой подключайте INT0 к 5v (прерывание по переднему фронту)...


--------------------
Любой, заслуживающий внимания, опыт приобретается себе в убыток...
Go to the top of the page
 
+Quote Post
Vny4ek
сообщение Dec 11 2008, 08:10
Сообщение #18


Частый гость
**

Группа: Участник
Сообщений: 145
Регистрация: 11-01-08
Пользователь №: 34 001



Я учел ВСЕ рекомендации. В итоге вижу следующее:
На дисплей пока не нажму кнопку ничего не выводится, нажимаю, создаю фронт. И вижу что начинает дергать ножками на порту С (на нем висит LCD) но текст не выводит. А если например заранее переменной присваиваю значение по которому в if выполняется текст выводит. Еще раз повторюсь учел ВСЕ рекомендации. Прогресс на лицо! но хочется разобраться

Я уже даже пробую просто функцию вывода на дисплей в прерывании осуществить. Вот так:
причем инициализация дисплея в main
Цитата
interrupt [EXT_INT0] void ext_int0_isr(void)
{

lcd_clear();
delay_ms(20);
lcd_gotoxy(0,1);
lcd_putsf("Interrupt work!");
delay_ms(2000);
s=1;
}


Но не работает все равно, хотя лапами дрыгает
Go to the top of the page
 
+Quote Post
Goodefine
сообщение Dec 11 2008, 08:44
Сообщение #19


Местный
***

Группа: Свой
Сообщений: 211
Регистрация: 6-08-07
Из: Приднестровье, Тирасполь
Пользователь №: 29 581



Схему подключения кнопки к INT0 приведите...


--------------------
Любой, заслуживающий внимания, опыт приобретается себе в убыток...
Go to the top of the page
 
+Quote Post
Vny4ek
сообщение Dec 11 2008, 13:12
Сообщение #20


Частый гость
**

Группа: Участник
Сообщений: 145
Регистрация: 11-01-08
Пользователь №: 34 001




Вот. хотя еще раз повторюсь при нажатии кнопки начинает дергать ножками которые на дисплей
Go to the top of the page
 
+Quote Post
Goodefine
сообщение Dec 11 2008, 13:41
Сообщение #21


Местный
***

Группа: Свой
Сообщений: 211
Регистрация: 6-08-07
Из: Приднестровье, Тирасполь
Пользователь №: 29 581



Да как так у вас получается?
Взял код из вашего же поста №13, создал проект в CVAVR для меги16 (я выбрал частоту 8 МГц, к примеру), удалил весь сгенеренный с-шный текст, вставил ваш (не меняя абсолютно ничего), сделал Маке. Нарисовал схему в протеусе, указал прошивку, поставил 8 МГц и ... все! Результат - после включения экран пустой, после нажатия на кнопку периодически мигает надпись:
Эскизы прикрепленных изображений
Прикрепленное изображение
 


--------------------
Любой, заслуживающий внимания, опыт приобретается себе в убыток...
Go to the top of the page
 
+Quote Post
Vny4ek
сообщение Dec 11 2008, 14:12
Сообщение #22


Частый гость
**

Группа: Участник
Сообщений: 145
Регистрация: 11-01-08
Пользователь №: 34 001



Попробуйте плиз мой хекс в протеусе использовать (сменив расширение). Я уже всю голову сломал если честно.

И если можно выложите свой, чтобы понять в чем дело, может протеус не так у меня работает
Прикрепленные файлы
Прикрепленный файл  3.txt ( 2.27 килобайт ) Кол-во скачиваний: 33
 
Go to the top of the page
 
+Quote Post
Goodefine
сообщение Dec 11 2008, 15:13
Сообщение #23


Местный
***

Группа: Свой
Сообщений: 211
Регистрация: 6-08-07
Из: Приднестровье, Тирасполь
Пользователь №: 29 581



Для какого кварца у вас хекс? У меня для 8 МГц...
Приложите лучше весь проект, где-то с настройками может проблема. А потом новый создайте, для интересу. Ваш хекс не работает... Вот мой проект с хексом...
Прикрепленные файлы
Прикрепленный файл  123.RAR ( 22.56 килобайт ) Кол-во скачиваний: 20
 


--------------------
Любой, заслуживающий внимания, опыт приобретается себе в убыток...
Go to the top of the page
 
+Quote Post
Vny4ek
сообщение Dec 12 2008, 09:18
Сообщение #24


Частый гость
**

Группа: Участник
Сообщений: 145
Регистрация: 11-01-08
Пользователь №: 34 001



Вот мой проект. Посмотрите пожалуйста что не так
Ваш проект у меня заработал

Сообщение отредактировал Vny4ek - Dec 12 2008, 09:20
Прикрепленные файлы
Прикрепленный файл  3.rar ( 1.01 килобайт ) Кол-во скачиваний: 16
 
Go to the top of the page
 
+Quote Post
Goodefine
сообщение Dec 12 2008, 11:35
Сообщение #25


Местный
***

Группа: Свой
Сообщений: 211
Регистрация: 6-08-07
Из: Приднестровье, Тирасполь
Пользователь №: 29 581



Это не проект, это прошивка. Проект - это все файлы, которые создает CAVR в указанную вами папку при создании проекта. Вот их в папке и приложите...

Сообщение отредактировал Goodefine - Dec 12 2008, 11:37


--------------------
Любой, заслуживающий внимания, опыт приобретается себе в убыток...
Go to the top of the page
 
+Quote Post
Vny4ek
сообщение Dec 12 2008, 12:52
Сообщение #26


Частый гость
**

Группа: Участник
Сообщений: 145
Регистрация: 11-01-08
Пользователь №: 34 001



Извините, невнимательность просто, вот файл проекта
Прикрепленные файлы
Прикрепленный файл  Project.rar ( 1.72 килобайт ) Кол-во скачиваний: 19
 
Go to the top of the page
 
+Quote Post
SysRq
сообщение Dec 12 2008, 14:25
Сообщение #27


Чайник, 1 литр
****

Группа: Свой
Сообщений: 655
Регистрация: 17-05-06
Из: Moscow
Пользователь №: 17 168



Цитата(Vny4ek @ Dec 10 2008, 15:08) *
Все учел...
Код
#include <mega16.h>
//...

Итого: мега16.

Цитата(Vny4ek @ Dec 12 2008, 15:52) *
..вот файл проекта

...в котором:
Цитата
[Chip]
Type=ATmega8
CPUClock=8

Итого: мега8.

Вот и не работает.
Go to the top of the page
 
+Quote Post
Vny4ek
сообщение Dec 18 2008, 11:20
Сообщение #28


Частый гость
**

Группа: Участник
Сообщений: 145
Регистрация: 11-01-08
Пользователь №: 34 001



Всем спасибо, заработало! Сразу вопрос собственно я хочу сделать прием данных по прерыванию. Вот у меня произошло прерывание по нарастанию уровня, мне нужно измерить длительность импульса используя как я понимаю счетчик 16 битный, По идее длительность импульсов единичных 400Мкс но на практике может быть и 350-600 естественно это про весь пакет говорится, тоесть бывают брелки с севшей батарейкой или с новой и вот хочу это учесть. Собственно сейчас споткнулся вот на чем:
Прерывания по фронту я понял как осуществить, я перерыл даташит, и даже на русском описание нашел, но ничего не понял. Как мне измерить поступивший импульс, и например значение его присвоить переменной где уже оперировать им как базовой величиной пакета. Будьте добры киньте пример, или может где эта тема разжевывалась.
P.S. Всем кто помог с предыдущей проблемой большое спасибо!!!!
Go to the top of the page
 
+Quote Post
SysRq
сообщение Dec 18 2008, 17:43
Сообщение #29


Чайник, 1 литр
****

Группа: Свой
Сообщений: 655
Регистрация: 17-05-06
Из: Moscow
Пользователь №: 17 168



Настройте таймер чтобы тикал с нужным дискретом (чтобы и обеспечить необходимый уровень погрешности, и 16 бит бы хватило для подсчета нужного интервала времени). По заднему фронту таймер сбросить, по преднему считывайте TCNT в прерывании - вот вам и длительность импульса. Период и прочее сами сообразите...
Go to the top of the page
 
+Quote Post
Goodefine
сообщение Dec 19 2008, 07:02
Сообщение #30


Местный
***

Группа: Свой
Сообщений: 211
Регистрация: 6-08-07
Из: Приднестровье, Тирасполь
Пользователь №: 29 581



Прерывания на INT0 в меге16 можно настроить по ИЗМЕНЕНИЮ уровня. Соответственно, в одном и том же обработчике можно все и делать (в смысле таймер запускать и останавливать), потом, в основном цикле, не спеша посчитать...


--------------------
Любой, заслуживающий внимания, опыт приобретается себе в убыток...
Go to the top of the page
 
+Quote Post

3 страниц V  < 1 2 3 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 8th July 2025 - 19:32
Рейтинг@Mail.ru


Страница сгенерированна за 0.01472 секунд с 7
ELECTRONIX ©2004-2016