Форум по разработке и ремонту электронной техники Киевский форум радиолюбителей и электронщиков. Форумы по разработке и ремонту электронной техники
    Схемы электрические принципиальныеГлавная    ФорумФорум    ПоискПоиск по форуму    Личные сообщенияФайлообменник    Личные сообщенияРадиотехнический каталог   

Фотогалерея   <b>Профиль</b>Ваш профиль    Личные сообщенияЛичные сообщения    ГруппыГруппы   

FAQFAQ    РегистрацияРегистрация    ВходВход

Уважаемые посетители! Это старая версия форума. Новая версия находится по адресу: http://www.remexpert.com
Микроконтроллеры начинающим
На страницу Пред.  1, 2, 3 ... 12, 13, 14
 
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Форум по разработке и ремонту электронной техники -> Микроконтроллеры, процессоры, ПЛИС...
 
Автор Сообщение
AndryG
Модератор


Зарегистрирован: 24.07.2006
Сообщения: 411
Откуда: Helios-3

СообщениеДобавлено: 07 Июл 2007, 12:12    Заголовок сообщения: Ответить с цитатой

Ну и постановка Радостный

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

Хороший вопрос - половина ответа.

Я так думаю, что твой вопрос ... "нужен период таймера 1 секунда, а при моем кварце получается максимум 123мс выдавить"?
Угадал?

_________________
AndryG
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Krik99
Знатный посетитель (>20)
Знатный посетитель (>20)


Зарегистрирован: 15.12.2006
Сообщения: 26
Откуда: Одеская обл. г.Котовск

СообщениеДобавлено: 07 Июл 2007, 18:16    Заголовок сообщения: Ответить с цитатой

Я хоу научится пользоватся внутренним таймером Atmega8... И для этого я хочу написать такую программу чтобы светодиод мигал каждую минуту. Всмысле я хочу чтобы мигал светодиод не программно а апаратно... Умник
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Negor
Частый гость (>5)
Частый гость (>5)


Зарегистрирован: 07.07.2007
Сообщения: 8

СообщениеДобавлено: 07 Июл 2007, 19:37    Заголовок сообщения: Ответить с цитатой

т.к. не указан тип контроллера, я приведу пример на тини2313... и для CodeVision...
для реализации задачи воспользуемся прерыванием таймера по совпадениюс OCR1A(остановим счёт, зажжём светодиод на 50мс и запустим счёт снова)
Для подсчёта предела таймера воспользуемся калькулятором для таймеров АВР(взято с AVRFreaks.net).
итак он нам сказал, что для 6000мс при частоте кварца 4МГц нам потребуется 16-разрядный таймер с пределителем 1024. Кроме того таймер должен считать до 0x73 в нижнем регистре и 0xa4 в верхнем. Значит нам потребуется режим таймера СТС. Делаем...
Код:

#include <tiny2313.h>
#include<delay.h>
interrupt [TIM1_COMPA] void timer1_compa_isr(void)
{
        TCCR1B=0x09;
        PORTB.0=1;
        PORTB.0=0;
        TCCR1B|=(1<<CS10)|(1<<CS12);
}

void main()
{
        SREG|=1<<I;
        DDRB=0x01;
        OCR1AL=0x73;//zagruzhaem predely scheta
        OCR1AH=0xa4;//
        TCCR1A|=1<<WGM12;//rezhim CTC(sbros taimera po sovpadeniyu TCNT1 c OCR1A)
        TCCR1B|=(1<<CS10)|(1<<CS12);//Predelitel' na 1024(posle ustanovki predelitelya
                                        //  taimer nachinaet schitat')
        TIMSK|=1<<OCIE1A;//Razreshenie preryvaniya po sovpadeniju
        while(1);
}

Примерно так...


Последний раз редактировалось: Negor (07 Июл 2007, 19:58), всего редактировалось 1 раз
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Krik99
Знатный посетитель (>20)
Знатный посетитель (>20)


Зарегистрирован: 15.12.2006
Сообщения: 26
Откуда: Одеская обл. г.Котовск

СообщениеДобавлено: 07 Июл 2007, 19:49    Заголовок сообщения: Ответить с цитатой

Я под CodeVision видел много таких прог а мне надо под WinAVR... Да кстате контролёр Atmega8...
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Negor
Частый гость (>5)
Частый гость (>5)


Зарегистрирован: 07.07.2007
Сообщения: 8

СообщениеДобавлено: 07 Июл 2007, 20:01    Заголовок сообщения: Ответить с цитатой

так проблема в переделке кода под WinAVR?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Krik99
Знатный посетитель (>20)
Знатный посетитель (>20)


Зарегистрирован: 15.12.2006
Сообщения: 26
Откуда: Одеская обл. г.Котовск

СообщениеДобавлено: 07 Июл 2007, 20:11    Заголовок сообщения: Ответить с цитатой

Ну для начал я просто хочу посмотреть такую прогу под Winavr... А дальше будет видно. Радостный
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Negor
Частый гость (>5)
Частый гость (>5)


Зарегистрирован: 07.07.2007
Сообщения: 8

СообщениеДобавлено: 07 Июл 2007, 20:19    Заголовок сообщения: Ответить с цитатой

Конечно я могу и ошибится.... но по моему в данном коде для компиляции под WinAvr достаточно изменить библиотеки и объявление прерываний...
_________________
There is only 10 kind of people: those who understands binary code and those who dont!!!
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
AndryG
Модератор


Зарегистрирован: 24.07.2006
Сообщения: 411
Откуда: Helios-3

СообщениеДобавлено: 09 Июл 2007, 7:08    Заголовок сообщения: Ответить с цитатой

Krik99 писал(а):
Я под CodeVision видел много таких прог а мне надо под WinAVR... Да кстате контролёр Atmega8...

Вчитайтесь сами ... какая разница, под каким компилятором пишете - регистры те же и С тот же ... другое дело. что с компилятором по другому работать нужно, тогда вопрос совсем не так задается ...

Вам не таймер нужно, а описание работы с компилятором надо.

_________________
AndryG
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
AVL
Знатный посетитель (>20)
Знатный посетитель (>20)


Зарегистрирован: 20.09.2006
Сообщения: 52
Откуда: Коломыя UA

СообщениеДобавлено: 28 Янв 2008, 9:29    Заголовок сообщения: Ответить с цитатой

Всем ПРИВЕТ!

Вот простой пример любезно предоставленный мне AndryG, более года назад.
За это время я успешно в нём разобрался.
Но теперь решил углубить знания и опять есть пару вопросов даже в таком простом коде.
А именно:
- почему на терминал идёт только переменная putchar(fsc), хотя в вписываю putchar(v);, putchar(n);, putchar(p);?
- Как в Протерусе посмотреть эти самые переменные? Дело в том, что я выбираю "смотеть эти переменные". Но прога только выдаёт ихний адрес в памяти , а текущего (и никакого) значения не выдаёт.
Name Address value
.bss 0060
p -252 Item 1 ...
sc -251 Item 1 ...
psc -250 Item 1 ...
p R-252 Item (1 bytes at 0xFFFFFF04) not within memory block (0x00010000 bytes).

- Как в Потерусе смотреть ход выполнения программы? Ибо выбираю пункт "AVR Source Code - U1", а там мне пишут "No source line at PC address [PC=014A]."

Листинг:
/* А дальше надо будет сделать что б лампочка (pb1)
загоралась при нажатии и удерживании кнопки (pb0)
не мение чем 5 секунд, а выключалась моментально.
Это что б с дуру не "рвануло" Улыбка.[/quote]

Другими словами ...
удержание кнопки 5 сек - ВКЛ. повторное нажатие - ВЫКЛ.

http://AndryG.ho.com.ua

Chip type : AT90S2313
Clock frequency : 1,000000 MHz
Memory model : Tiny
External SRAM size : 0
Data Stack size : 32
*****************************************************/

#include <90s2313.h>
#include <delay.h>
#include <stdio.h>

unsigned char p;
unsigned char sc;
unsigned char fsc;

#define bt_ 0x01 //Кнопка
#define ld_ 0x02 //Светодиод

#define ld_on PORTB &= ~ld_
#define ld_off PORTB |= ld_



interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
unsigned char n,v;
TCNT0=0xCF;
n = PINB & bt_;
v = p ^ n;

if (v & p & bt_) // НАЖАЛИ (bt_=1 при отпущенной)
if (PORTB & ld_) //Если не горит
fsc = 1;
else
ld_off;

if (v & n & bt_) //отпустили
{
sc = 0;
fsc = 0;
}
if (sc > 0x38) //Тут надо 100 поставить для 5 секунд
ld_on;
else
sc += fsc;
p = n;
putchar(fsc);
putchar(sc);
}

void main(void)
{
PORTB=0x03;
DDRB=0x02;
PORTD=0x00;
DDRD=0x00;
TCCR0=0x05;
TCNT0=0xCF;
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
OCR1H=0x00;
OCR1L=0xCF;
GIMSK=0x00;
MCUCR=0x00;
TIMSK=0x02;
ACSR=0x80;
UCR=0x08;// Communication Parameters: 4800:8:1:no
UBRR=0x0C;
#asm("sei")
ld_off;
p = bt_; //В "прошлом" отпущена кнопка
while (1);
}
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Форум по разработке и ремонту электронной техники -> Микроконтроллеры, процессоры, ПЛИС... Часовой пояс: GMT + 2
На страницу Пред.  1, 2, 3 ... 12, 13, 14
Страница 14 из 14

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете добавлять вложения в этом форуме
Вы можете просматривать вложения в этом форуме


Rambler's Top100 PageRank Яндекс цитирования
Сайты наших друзей: Гири, все о гирях, Автоматизация магазинов, супермаркетов, ресторанов, кинотеатров,
Весы электронные, Сканеры штрих-кода, Принтеры штрих-кода

Powered by phpBB © 2001, 2005 phpBB Group

Время генерации страницы: 0.7193s (PHP: 87% - SQL: 13%) - SQL запросов: 12 - GZIP enabled - Debug on