нифига вы не поняли... в даташите сказано, что частота хоть и калибруется на заводе при изготовлении, может иметь отклонение от "паспортной" до 5%. причем, вы не знаете, какое именно, и при этом еще частота плавает от температуры и напряжения. для часов встроенный RC-генератор НЕ ПОДХОДИТ ПРИНЦИПИАЛЬНО.Pika4u писал(а):Из графика в даташите я понял, что при напряжении питания 5 Вольт и температуре 25 по Цельсию частота внутреннего генератора 4.025 Мгц...Ппц...
Вопросы по С/С++ (СИ)
-
Мастер Ломастер
- Поставщик валерьянки для Кота
- Сообщения: 1995
- Зарегистрирован: Ср май 11, 2011 21:37:45
- Откуда: Цветочный город
- Контактная информация:
Re: Вопросы по С/С++ (СИ)
битва с дураками проиграна, победители торжествуют. слава победителям!
- Реклама
- Pika4u
- Поставщик валерьянки для Кота
- Сообщения: 2064
- Зарегистрирован: Пт апр 24, 2009 11:39:16
- Откуда: г.Оренбург
Re: Вопросы по С/С++ (СИ)
блин...я в шоке....плата сделана, все сделано...а тут блииинн.....
Steve Jobs. 1955-2011. Мы помним, как ты преобразовал наш мир....
-
Мастер Ломастер
- Поставщик валерьянки для Кота
- Сообщения: 1995
- Зарегистрирован: Ср май 11, 2011 21:37:45
- Откуда: Цветочный город
- Контактная информация:
Re: Вопросы по С/С++ (СИ)
во-первых, разработку следует начинать с изучения документации, а во-вторых, какое все это имеет отношение к С/С++?Pika4u писал(а):блин...я в шоке....плата сделана, все сделано...а тут блииинн.....
битва с дураками проиграна, победители торжествуют. слава победителям!
- Pika4u
- Поставщик валерьянки для Кота
- Сообщения: 2064
- Зарегистрирован: Пт апр 24, 2009 11:39:16
- Откуда: г.Оренбург
Re: Вопросы по С/С++ (СИ)
В общем, решил я плату добить и скорректировать все программно. Заюзал Т1, подбираю регистр сравнения...Ну что ж, поглядим....
Steve Jobs. 1955-2011. Мы помним, как ты преобразовал наш мир....
- Pika4u
- Поставщик валерьянки для Кота
- Сообщения: 2064
- Зарегистрирован: Пт апр 24, 2009 11:39:16
- Откуда: г.Оренбург
Re: Вопросы по С/С++ (СИ)
Полистав тему, увидел это сообщение))) Так вот, а что, если во время выполнения кода запрещены прерывания, а таймер совпал со значением? Нельзя просто так вырубать прерывания))BerZerK-ku писал(а):Суровый код. Для начала могу сказать только то , что __restore_interrupt и __save_interrupt тут лишние. У них несколько иное предназначение )
old = ...; можно выкинуть. __restore_...; заменить на __enable_interrupt();
У вас случаем нет проекта для протеуса? Лень рисовать, чтобы понять что горит, а что нет
Туплю, картину не посмотрел, выложите проект плз.
Steve Jobs. 1955-2011. Мы помним, как ты преобразовал наш мир....
- Реклама
-
Мастер Ломастер
- Поставщик валерьянки для Кота
- Сообщения: 1995
- Зарегистрирован: Ср май 11, 2011 21:37:45
- Откуда: Цветочный город
- Контактная информация:
Re: Вопросы по С/С++ (СИ)
таймер совпал, установил флажок запроса прерывания, и пошел дальше считать. раз прерывания запрещены - ничего больше не произошло. в чем проблема?Pika4u писал(а):Так вот, а что, если во время выполнения кода запрещены прерывания, а таймер совпал со значением? Нельзя просто так вырубать прерывания))
битва с дураками проиграна, победители торжествуют. слава победителям!
- Pika4u
- Поставщик валерьянки для Кота
- Сообщения: 2064
- Зарегистрирован: Пт апр 24, 2009 11:39:16
- Откуда: г.Оренбург
Re: Вопросы по С/С++ (СИ)
После включения прерываний обработчик выполнится?
Steve Jobs. 1955-2011. Мы помним, как ты преобразовал наш мир....
- Pika4u
- Поставщик валерьянки для Кота
- Сообщения: 2064
- Зарегистрирован: Пт апр 24, 2009 11:39:16
- Откуда: г.Оренбург
Re: Вопросы по С/С++ (СИ)
Ещё вопрос, при такой конструкции
если в обработчике изменяется переменная i, то доступ к ней будет атомарен?
Код: Выделить всё
volatile unsigned char i;
......
main()
{
while(1)
PORTB=i;
}
обработчик какого-нибудь прерывания
Steve Jobs. 1955-2011. Мы помним, как ты преобразовал наш мир....
-
Мастер Ломастер
- Поставщик валерьянки для Кота
- Сообщения: 1995
- Зарегистрирован: Ср май 11, 2011 21:37:45
- Откуда: Цветочный город
- Контактная информация:
Re: Вопросы по С/С++ (СИ)
если флаг принудительно не сбросить - выполнится.Pika4u писал(а):После включения прерываний обработчик выполнится?
к однобайтной переменной доступ ВСЕГДА АТОМАРНЫЙ - он по определению не может быть другим.Pika4u писал(а):если в обработчике изменяется переменная i, то доступ к ней будет атомарен?
битва с дураками проиграна, победители торжествуют. слава победителям!
- Pika4u
- Поставщик валерьянки для Кота
- Сообщения: 2064
- Зарегистрирован: Пт апр 24, 2009 11:39:16
- Откуда: г.Оренбург
Re: Вопросы по С/С++ (СИ)
Спасибо вам огромное за ликбез))))
Steve Jobs. 1955-2011. Мы помним, как ты преобразовал наш мир....
- Pika4u
- Поставщик валерьянки для Кота
- Сообщения: 2064
- Зарегистрирован: Пт апр 24, 2009 11:39:16
- Откуда: г.Оренбург
Re: Вопросы по С/С++ (СИ)
Хм......Что-то странно..Вот проект из Proteus и код часов:
Тактирование 4 Мгц, вроде все норм, но за 10 минут отстают примерно на 2 секунды. Отстают в Proteus.
Код: Выделить всё
#include <intrinsics.h>
#include <iotiny2313.h>
__flash unsigned char clock[10]={63,6,91,79,102,109,125,7,127,111};
volatile unsigned char dechours=0,edhours=0,decmin=0,edmin=0,second=0,takt=0;
unsigned char old;
int main( void )
{
DDRD=15;
DDRB=255;
TIMSK|=(1<<OCIE0A);
TCCR0B|=(1<<CS02);
TCCR0B&=(~(1<<CS01)|(1<<CS00));
OCR0A=125;
__enable_interrupt();
while(1)
{
if(PIND_Bit4==0)
{
__delay_cycles(300000);
if(PIND_Bit4==0)
edhours++;
}
if(PIND_Bit5==0)
{
__delay_cycles(300000);
if(PIND_Bit5==0)
edmin++;
}
PORTD_Bit0=0;
PORTB=clock[dechours];
__delay_cycles(20000);
PORTD_Bit0=1;
PORTB=0;
__delay_cycles(20000);
PORTD_Bit1=0;
PORTB=clock[edhours];
PORTB_Bit7=1;
__delay_cycles(20000);
PORTD_Bit1=1;
PORTB=0;
__delay_cycles(20000);
PORTD_Bit2=0;
PORTB=clock[decmin];
__delay_cycles(20000);
PORTD_Bit2=1;
PORTB=0;
__delay_cycles(20000);
PORTD_Bit3=0;
PORTB=clock[edmin];
__delay_cycles(20000);
PORTD_Bit3=1;
PORTB=0;
}
}
#pragma vector=TIMER0_COMPA_vect
__interrupt void Timer1CompA(void)
{
TCNT0=0;
takt++;
if(takt==125)
{
takt=0;
second++;
}
if(second==60)
{
second=0;
edmin++;
}
if(edmin==10)
{
decmin++;
edmin=0;
}
if(decmin==6)
{
edhours++;
decmin=0;
}
if(edhours==10)
{
dechours++;
edhours=0;
}
if((dechours==2) && (edhours==4))
{
dechours=0;
edhours=0;
}
}- Вложения
-
- avr4.rar
- (12.95 КБ) 118 скачиваний
Steve Jobs. 1955-2011. Мы помним, как ты преобразовал наш мир....
Re: Вопросы по С/С++ (СИ)
День добрый, хотелось бы организовать управление АЦП процессора через UART, старт, стоп преобразования, включать выключать отдельные выходы, управлять яркостью светодиода через ШИМ. Напирмер меню имеет 10 пунктов, каждый из которых вызывается цифрой или буквой. Дальше другое подменю, другие цифры-буквы и т.д., ну и каким-то символом делать возврат в корневое меню. Что-то типа:
нажали клавишу S в терминале, включился ацп, пошло непрерывное преобразование, посыпались в терминал данные от вольтметра.
нажали H - стоп преобразования.
нажали Х, вошли в меню установки значения шим, ввели 100 например, одна яркость диода, ввели 200 другая.
Подскажите в какую сторону копать, или простой примерчик для начинающих.
нажали клавишу S в терминале, включился ацп, пошло непрерывное преобразование, посыпались в терминал данные от вольтметра.
нажали H - стоп преобразования.
нажали Х, вошли в меню установки значения шим, ввели 100 например, одна яркость диода, ввели 200 другая.
Подскажите в какую сторону копать, или простой примерчик для начинающих.
- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: Вопросы по С/С++ (СИ)
v000va , а причём тут С(++) ?
Создайте отдельную тему по своему вопросу. Как создадите, я эту почищу.
Создайте отдельную тему по своему вопросу. Как создадите, я эту почищу.
Re: Вопросы по С/С++ (СИ)
DDRD &= ~(1<<2);
с помощью этой команды инвертируется только 2 бит или все ?
с помощью этой команды инвертируется только 2 бит или все ?
Tell Me The Truth
- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: Вопросы по С/С++ (СИ)
Не инвертируется, а сбрасывается 2-ой бит.
Re: Вопросы по С/С++ (СИ)
Я прошу прощения, но вопрос об организации меню на СИ.Аlex писал(а):v000va , а причём тут С(++) ?![]()
Создайте отдельную тему по своему вопросу. Как создадите, я эту почищу.
- Pika4u
- Поставщик валерьянки для Кота
- Сообщения: 2064
- Зарегистрирован: Пт апр 24, 2009 11:39:16
- Откуда: г.Оренбург
Re: Вопросы по С/С++ (СИ)
А мой проектик посмотрели?
Steve Jobs. 1955-2011. Мы помним, как ты преобразовал наш мир....
Re: Вопросы по С/С++ (СИ)
Дайте ссылку плз. Можно и в личку.Pika4u писал(а):А мой проектик посмотрели?
Добавлю, как загружать через uart любое значение в OCR2 (mega8)? Не какую-то предустановленную величину из меню, а любую из доступного диапазона.
Re: Вопросы по С/С++ (СИ)
а не проще ли написать PORTD.2=0 ?Аlex писал(а):Не инвертируется, а сбрасывается 2-ой бит.
Tell Me The Truth
- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: Вопросы по С/С++ (СИ)
Это Вы меня спрашиваете ?FreshMan писал(а):а не проще ли написать PORTD.2=0 ?
Я Вам только ответил что делает Ваша строчка, и всё....


