Страница 298 из 421
Re: CodeVision AVR в вопросах и ответах
Добавлено: Пн янв 06, 2014 03:53:34
SabitofF
если я правильно понял то должно быть так
Код: Выделить всё
#include <tiny13.h>
#include <delay.h>
void main(void)
{
PORTB=0b00000000;
DDRB= 0b00001111;
while (1)
{
while (PINB.5==0)
{
PORTB=0b00000101;
delay_ms(100);
PORTB=0b00001010;
delay_ms(100);
};
};
}
Re: CodeVision AVR в вопросах и ответах
Добавлено: Пн янв 06, 2014 07:31:31
pyzhman
Если на пине5 нет внешнего подтягивающего резистора, то еще и так:
Re: CodeVision AVR в вопросах и ответах
Добавлено: Пн янв 06, 2014 15:03:24
pashaumnov
если у вас будет на portb.5 ==0 , то будет происходить ресет микроконтролера, если вы конечно не отключите во фьюзах ресет. но тогда повторная перезапись микроконтролера будет затруднительна, я бы посоветовал выбрать вам другой порт для индикации нуля. а порт 5 оставил бы под ресет.
Re: CodeVision AVR в вопросах и ответах
Добавлено: Пн янв 06, 2014 15:15:22
pashaumnov
уважаемые коты , помогите разбудить тини 13 по ватчдогу??Спойлер
#include <tiny13.h>
#include <delay.h>
#include <sleep.h>
#define ADC_VREF_TYPE 0x62 //режим включен внутренний ион на 1.1, вывод данных в порт адц 2 РВ4
unsigned char napruga;
// Read the 8 most significant bits
// of the AD conversion result
unsigned char read_adc(unsigned char adc_input) //програма созданая в визарде для выведения значений ацп в переменную read_adc
{
ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);
// Delay needed for the stabilization of the ADC input voltage
delay_us(10);
// Start the AD conversion
ADCSRA|=0x40;
// Wait for the AD conversion to complete
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCH; //8 битный результат
}
// Declare your global variables here
void main(void)
{
// Declare your local variables here
char v;
// Crystal Oscillator division factor: 1
#pragma optsize-
CLKPR=0x80;
CLKPR=0x00;
#ifdef _OPTIMIZE_SIZE_
#pragma optsize+
#endif
// Input/Output Ports initialization
// Port B initialization
// Func5=In Func4=In Func3=Out Func2=Out Func1=Out Func0=Out
// State5=T State4=T State3=0 State2=0 State1=0 State0=0
PORTB=0x00;
DDRB=0x0F;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=0xFF
// OC0A output: Disconnected
// OC0B output: Disconnected
TCCR0A=0x00;
TCCR0B=0x00;
TCNT0=0x00;
OCR0A=0x00;
OCR0B=0x00;
// External Interrupt(s) initialization
// INT0: Off
// Interrupt on any change on pins PCINT0-5: Off
GIMSK=0x00;
MCUCR=0x00;
// Timer/Counter 0 Interrupt(s) initialization
TIMSK0=0x00;
// Analog Comparator initialization
// Analog Comparator: Off
ACSR=0x80;
ADCSRB=0x00;
DIDR0=0x00;
// ADC initialization
// ADC Clock frequency: 150,000 kHz
// ADC Bandgap Voltage Reference: Off
// ADC Auto Trigger Source: ADC Stopped
// Only the 8 most significant bits of
// the AD conversion result are used
// Digital input buffers on ADC0: On, ADC1: On, ADC2: On, ADC3: On
DIDR0&=0x03;
DIDR0|=0x00;
ADMUX=ADC_VREF_TYPE & 0xff;
ADCSRA=0x86;
// Watchdog Timer initialization
// Watchdog Timer Prescaler: OSC/64k
// Watchdog Timer interrupt: On
PORTB.3=1;
delay_ms(150);
PORTB.2=1;
delay_ms(150);
PORTB.1=1;
delay_ms(150);
PORTB.0=1;
delay_ms(150);
napruga= read_adc(2); //присваиваем read_adc переменной напруга в скобочках указывается какой адц работает у нас (адц 2)
if(napruga > 85) PORTB.0= 1;
else PORTB.0= 0;
if(napruga > 65) PORTB.1= 1;
else PORTB.1= 0;
if(napruga > 57) PORTB.2= 1;
else PORTB.2= 0;
if(napruga >53 ) PORTB.3= 1;
else
{
for (v=0;v<=6;v++) //задержка на мигание светодиодом пследним
{ //мигаем 5 раз и переходим дальше
PORTB.3= 1;
delay_ms(100);
PORTB.3= 0;
delay_ms(1100);
};
};
delay_ms(3000); //задержка выведения показаний на светодиоды
//тушим все порты(светодиоды)
PORTB.0=0;
delay_ms(150);
PORTB.1=0;
delay_ms(150);
PORTB.2=0;
delay_ms(150);
PORTB.3=0;
delay_ms(150);
PORTB=0x00;
MCUCR=0x30;
//включаем режим сна повер довн
#asm ("sleep") //спим до нажия на кнопку ресет которая перезапустит программу
}
в визарде настроено прерываение по ватчдогу через 8 сек после сна. но прерываение не происходит((( в прерывании нужно вызывать функцию проверки ацп и сели папряжение больше 2.5в то снова заснуть. если ниже тогда будем мигать светодиодом на порте Б3.
вот то что визард создает для прерывания по ватчдогу
Спойлер
// Watchdog timeout interrupt service routine
interrupt [WDT] void wdt_timeout_isr(void)
{
WDTCR|=0x40;
// Place your code here
}
Re: CodeVision AVR в вопросах и ответах
Добавлено: Пт янв 10, 2014 11:41:33
turion
Ребят, помогите разобраться с таймерами. Перерыл весь инет, нашел пару более менее статей написанных доступным языком, но некоторые моменты всеравно не ясны.
Я хочу использовать таймер в следующих целях:
На один из входов (а) МК поступает сигнал (в течении например 0,005-0,01 секунды) и будет повторяться через промежуток 0,01-0,015 сек.
После поступления сигнала на вход (а) мне нужно подать напряжение на выход МК (б) либо сразу, либо через 0,002 секунды например в течении 0,003 секунд.
Не понимаю какой выбрать таймер и его режим для этой задачи.
Использовать хочу МК Atmega 8. Так понимаю по умолчанию частота 1МГц работы внутреннего тактового генератора. То есть брать предделитель 256 нормально. Это получается 1024000/256=4000Гц. Т.е. один такт за 0,00025 секунды и если мне понадобится отсчитать интервал времени 0,005 секунды, то это пройдет 20 тактов. Еще как раз запас есть, если интервал времени потребуется меньше отсчитывать.
Верно?
И как задать условие, что если досчитает до 20, подать напряжение туда то. Как обратиться к этой переменной? Глупый вопрос наверное. Вообщем то работал и с датчиками, и с прерыванием. Проблем не было. Но опыта еще маловато.
Может у кого пример с комментариями есть? Буду очень благодарен.
Это все лучше делать используя CodeWizardAVR?
Re: CodeVision AVR в вопросах и ответах
Добавлено: Сб янв 11, 2014 23:30:56
vic_le
Кто может обяснить на пальцах как работь с бутлоадером. Есть проэкт в CodeVision AVR программирую из CVAVR, есть бутлоадер здесь же. Я так понимаю нужно программировать бутлоадер с определённого адреса а основной код с 0-го адреса. Как указать в коде или при программировании что куда программировать???. Прошу не пинать программирую на Си давно но с этой темой работаю впервой, поиски не дают внятного ответа (может не правильно искал). Все решения котоые я нашол то нужно программировать бутлоадер отдельным программатором.
Re: CodeVision AVR в вопросах и ответах
Добавлено: Вс янв 12, 2014 11:03:46
uk8amk
Насколько знаю, бутлоадер создаётся как отдельное приложение. При компиляции и создании HEX в него помещается с нужного адреса boot-сектора в соответствии с настройками проекта.
Boot прошивается программатором, приложение можно уже залить через boot.
Для удобства прошивки серии hex boot-а и hex приложения можно соединить в один файл сторонними инструментами. Однако в одной программе их лучше не соединять т.к. они используют разные таблицы прерываний. Были вроде еще какие-то другие противоречия между ними.
Явно указать адрес подпрограммы или константных данных можно с помощью ассемблерной директивы .ORG
Я пробовал, вроде работает.
Re: CodeVision AVR в вопросах и ответах
Добавлено: Вс янв 12, 2014 12:36:30
vic_le
Если проблема с прерываниями то я думаю она решаема. Так всё таки есть возможность обединения бутлоадера и основного кода, или нет в CVAVR. Ведь не обязательно указывать стартовать с бутлоадера, а запускать его из основного кода.
Re: CodeVision AVR в вопросах и ответах
Добавлено: Вс янв 12, 2014 13:10:59
uk8amk
Я думаю, что принципиального ограничения тут нет.
1. Прерывания можно отключить все и использовать исключительно опрос флагов состояния.
2. Подпрограммы бутлодера разместить в пределах бут-сектора и просто сделать вызов СИ-шной функции или JMP/RJMP на неё.
Над чем подумать стоит.
Для бута надо напрямую обращаться к регистрам процессора. При этом объявление регистровых переменных совсем не гарантирует назначение им РОН. Всё на усмотрение СИ-шного оптимизатора.
Re: CodeVision AVR в вопросах и ответах
Добавлено: Сб янв 18, 2014 19:28:33
mihail07
подскажите плиз CodeVision AVR с прогером громова работает?
Re: CodeVision AVR в вопросах и ответах
Добавлено: Сб янв 18, 2014 19:37:47
oleg110592
сайт Codevision вроде доступен:
The following programmers are supported:
•
Atmel STK500 (serial connection)
•
Atmel STK600 (USB connection)
•
Atmel AVRISP (serial connection)
•
Atmel AVRISP MkII (USB connection)
•
Atmel AVR Dragon (USB connection)
•
Atmel JTAGICE MkII (USB connection)
•
Atmel JTAGICE 3 (USB connection)
•
Atmel AVR910 Application Note (serial connection)
•
Kanda Systems STK200 and STK300 (LPT parallel port connection)
•
Vogel Elektronic VTEC ISP (LPT parallel port connection)
•
Dontronics DT006 (LPT parallel port connection)
рекомендую Atmel AVRISP MkII (тут на РадиоКоте все есть...)
Re: CodeVision AVR в вопросах и ответах
Добавлено: Вс янв 19, 2014 00:36:46
Сериг
Коты,доброй ночи! Подскажите, как сделал генератор случайных чисел от 1 до 10 на Атмеге8.
Спасибо!
Re: CodeVision AVR в вопросах и ответах
Добавлено: Вс янв 19, 2014 00:43:57
Apparatchik
Re: CodeVision AVR в вопросах и ответах
Добавлено: Вс янв 19, 2014 18:20:59
Сериг
А в cvavr?
P. s. Попробовал в CV - не работает
Re: CodeVision AVR в вопросах и ответах
Добавлено: Вс янв 19, 2014 19:34:55
Apparatchik
Не может не работать, в её справке есть такая функция. Генерируются псевдослучайные числа.
Re: CodeVision AVR в вопросах и ответах
Добавлено: Вс янв 19, 2014 20:30:28
Аlex
В хелпе на компиль это всё есть.
Странно, что вообще подобные вопросы возникают. Неужели банальная лень читать ?

Re: CodeVision AVR в вопросах и ответах
Добавлено: Вс янв 19, 2014 21:32:50
Aмstroн
Откуда такие мысли, что лень прочитать? вы обвели, но я так и не понял, прочитать не могу! шо там написано?
Черт возьми, что-то интересное там написано...,и про другое тоже, только как - бы его, и остальные интерестности про которые там написано еще и применить???????
Re: CodeVision AVR в вопросах и ответах
Добавлено: Вс янв 19, 2014 21:41:07
Аlex
Того, что я обвёл, вполне достаточно, чтобы понять что делает эта функция и как её применить. Если Вам этого не понятно - курите литературу по языку.
Re: CodeVision AVR в вопросах и ответах
Добавлено: Вс янв 19, 2014 22:03:23
Сериг
Хорошо,другой вопрос. Каким образом она генерит эти числа?
Re: CodeVision AVR в вопросах и ответах
Добавлено: Вс янв 19, 2014 23:09:17
oleg110592