Например TDA7294

Форум РадиоКот • Просмотр темы - отладка в AVR на Си и моделирование Proteus проги с таймером
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Чт апр 18, 2024 20:37:29

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Форум закрыт Эта тема закрыта, Вы не можете редактировать и оставлять сообщения в ней.  [ Сообщений: 26 ]  1,  
Автор Сообщение
Не в сети
 Заголовок сообщения: отладка в AVR на Си и моделирование Proteus проги с таймером
СообщениеДобавлено: Пн май 16, 2011 04:48:23 
Родился

Зарегистрирован: Пн май 16, 2011 04:08:52
Сообщений: 11
Рейтинг сообщения: 0
Здравствуйте! У меня к вам вопрос. Вообщем, пишу не сложную прогу на Си в отладчике AVR Studio. Точнее, с умной книжки ее передрал. Я начинающий программист , по этому не судите строго. Вообщем задачка такая:(Называется: индикатор мигающий каждую секунду) . Значит. К выводу 0 порта B подключен светодиодный индикатор который должен переключаться каждую секунду. Это можно сделать с помощью прерывания по переполнению таймера. С помощью разрядов CS10-CS12 регистра TCCR1B устанавливается коэффициент деления частоты системной синхронизации таймера. Выбираем 1024, что соответствует значению 0b101 или просто 5. Таким образом, в случае рабочей частоты МК 4МГц, значение счетного регистра TCNT1 будет увеличиваться через каждые 1024/4000000=0,000256 c. Следовательно, надо установить такое стартовое значение счетчика, чтобы до его переполнения отсчитывалось 1/0.000256=3906 импульсов. Поскольку с помощью 16 разрядов счетчика предел 65535(0xFFFF), то он должен инициализироваться значением 65535-5906=61630.....
........
Программа такая:
#define F_CPU 4000000UL
#include <avr/io.h>
#include <avr/iom16.h>
#include <avr/interrupt.h>
#include <avr/signal.h>
INTERRUPT(SIG_OVERFLOW1)
{
TCNT1=0x10000-(F_CPU/1024);
PORTB=0x01;
}
int main(void)
{
DDRB=0x01;
TCCR1A=0;
TCCR1B=0x05;
TCNT1=0x10000-(F_CPU/1024);
TIFR=0;
TIMSK=0x04;
GICR=0;
sei();
while(1) ;
}

Вопрос в том. 1) После написания программы прошивка выполнилась только по нажатию прошить со 2-го раза( то есть во второй раз errors-0,warnings-0),а в первый раз вышло:
Build started 16.5.2011 at 05:37:58
avr-gcc -mmcu=atmega16 -Wall -gdwarf-2 -Os -std=gnu99 -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -MD -MP -MT example_07.o -MF dep/example_07.o.d -c ../example_07.c
In file included from ../example_07.c:5:
C:/WinAVR/avr/include/avr/signal.h:36:2: warning: #warning "This header file is obsolete. Use <avr/interrupt.h>."
../example_07.c:7: warning: return type defaults to `int'
../example_07.c: In function `INTERRUPT':
../example_07.c:7: warning: type of "__vector_8" defaults to "int"
../example_07.c:10: warning: control reaches end of non-void function
avr-gcc -mmcu=atmega16 -Wl,-Map=example_07.map example_07.o -o example_07.elf
avr-objcopy -O ihex -R .eeprom -R .fuse -R .lock -R .signature example_07.elf example_07.hex
avr-objcopy -j .eeprom --set-section-flags=.eeprom="alloc,load" --change-section-lma .eeprom=0 --no-change-warnings -O ihex example_07.elf example_07.eep || exit 0
/usr/bin/sh: /c/winavr/bin/avr-objcopy: Invalid argument
avr-objdump -h -S example_07.elf > example_07.lss
/usr/bin/sh: /c/winavr/bin/avr-objdump: Invalid argument
make: *** [example_07.lss] Error 126
Build failed with 1 errors and 4 warnings...

2) Я значит попытался проделать виртуальное моделирование этой проги в Proteus. Ни чего не выходит. Может схему ни так нарисовал, может дело все в том что компиляция выполнена не правильно. Схема значит такая :MK Atmega16 и индикатор подключен к выводу 0 порта B. В Proteus все вроде прошивается но индикатор не мигает. В чем дело не знаю. Помогите пожалуйста!!!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: отладка в AVR на Си и моделирование Proteus проги с тайм
СообщениеДобавлено: Пн май 16, 2011 20:19:14 
Мучитель микросхем

Карма: 1
Рейтинг сообщений: 22
Зарегистрирован: Вт фев 09, 2010 17:52:26
Сообщений: 417
Рейтинг сообщения: 0
После того как PORTB=0x01; у вас нигде нет PORTB=0x00;
В прерывании проверяйте что уже послано в порт и посылайте противоположенное значение.

Вместо INTERRUPT(...) используйте ISR(...)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: отладка в AVR на Си и моделирование Proteus проги с тайм
СообщениеДобавлено: Ср май 18, 2011 01:07:59 
Родился

Зарегистрирован: Пн май 16, 2011 04:08:52
Сообщений: 11
Рейтинг сообщения: 0
Спасибо за функцию ISR . Ошибок стало меньше. Но, только если вас не затруднит, не могли бы по подробнее описать то что вы начали - что После того как PORTB=0x01; у вас нигде нет PORTB=0x00;
В прерывании проверяйте что уже послано в порт и посылайте противоположенное значение.

это последние то что в Build было:

Build started 18.5.2011 at 02:02:54
avr-gcc -mmcu=atmega16 -Wall -gdwarf-2 -Os -std=gnu99 -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -MD -MP -MT example_07.o -MF dep/example_07.o.d -c ../example_07.c
avr-gcc -mmcu=atmega16 -Wl,-Map=example_07.map example_07.o -o example_07.elf
avr-objcopy -O ihex -R .eeprom -R .fuse -R .lock -R .signature example_07.elf example_07.hex
avr-objcopy -j .eeprom --set-section-flags=.eeprom="alloc,load" --change-section-lma .eeprom=0 --no-change-warnings -O ihex example_07.elf example_07.eep || exit 0
/usr/bin/sh: /c/winavr/bin/avr-objcopy: Invalid argument
avr-objdump -h -S example_07.elf > example_07.lss
/usr/bin/sh: /c/winavr/bin/avr-objdump: Invalid argument
make: *** [example_07.lss] Error 126
Build failed with 1 errors and 0 warnings...


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: отладка в AVR на Си и моделирование Proteus проги с тайм
СообщениеДобавлено: Ср май 18, 2011 07:35:00 
Мучитель микросхем

Карма: 1
Рейтинг сообщений: 22
Зарегистрирован: Вт фев 09, 2010 17:52:26
Сообщений: 417
Рейтинг сообщения: 0
sanshoy писал(а):
Но, только если вас не затруднит, не могли бы по подробнее описать то что вы начали -

В прерывании, в порт вы посылаете 1, скажем индикатор зажегся.
В следующем прерывании вы снова в порт вы посылаете 1, но она там уже установлена, индикатор будет гореть все время.

Насчет ошибок выложите проект.


Вернуться наверх
 
Организация питания на основе надежных литиевых аккумуляторов EVE и микросхем азиатского производства

Качественное и безопасное устройство, работающее от аккумулятора, должно учитывать его физические и химические свойства, профили заряда и разряда, их изменение во времени и под влиянием различных условий, таких как температура и ток нагрузки. Мы расскажем о литий-ионных аккумуляторных батареях EVE и нескольких решениях от различных китайских компаний, рекомендуемых для разработок приложений с использованием этих АКБ. Представленные в статье китайские аналоги помогут заменить продукцию западных брендов с оптимизацией цены без потери качества.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: отладка в AVR на Си и моделирование Proteus проги с тайм
СообщениеДобавлено: Ср май 18, 2011 15:55:24 
Родился

Зарегистрирован: Пн май 16, 2011 04:08:52
Сообщений: 11
Рейтинг сообщения: 0
Да в правы он действительно постоянно горит. Программа вот такая:

#define F_CPU 4000000UL
#include <avr/io.h>
#include <avr/iom16.h>
#include <avr/interrupt.h>

ISR(SIG_OVERFLOW1)
{
PORTB=0x01;
}
int main(void)
{
DDRB=0x01;
TCCR1A=0x00;
TCCR1B=0x04;
TCNT1=61630;
TIFR=0x00;
TIMSK=0x04;
GICR=0;
sei();
while(1==1);
}

Дальше подумаю. Спасибо.


Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: отладка в AVR на Си и моделирование Proteus проги с тайм
СообщениеДобавлено: Ср май 18, 2011 16:41:47 
Родился

Зарегистрирован: Пн май 16, 2011 04:08:52
Сообщений: 11
Рейтинг сообщения: 0
Опробовал вот такой вариант, все равно постоянно горит:
#define F_CPU 4000000UL
#include <avr/io.h>
#include <avr/iom16.h>
#include <avr/interrupt.h>
PORTB=0x00;
ISR(SIG_OVERFLOW1)
{

if (PORTB==0x00)// Если порт B в нулевом разряде имеет 0 то такой код
{
PORTB^=0x01;
}
else //либо в противном случае
{
PORTB=0x00;
}
}
int main(void)
{
DDRB=0x01;// Настраиваем нулевой выход порта B на выход
TCCR1A=0x00;// Т/С1 отключен от вывода ОС1, режим ШИМ отключен
TCCR1B=0x04;//Коэффициент деления частоты системной синхронизации 1024
TCNT1=61630;//инициализируем значение счетного регистра равным 61630
TIFR=0x00;//Сбрасываем все флаги прерываний от Т/C1
TIMSK=0x04;// Разрешаем прерывание по переполнению счетного регистра Т/С1
GICR=0;//Запрет внешних прерываний
sei();//Общее разрешение прерываний
while(1==1);//Ожидаем прерывание от Т/С1 каждую секунду
}


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: отладка в AVR на Си и моделирование Proteus проги с тайм
СообщениеДобавлено: Ср май 18, 2011 19:46:35 
Мучитель микросхем

Карма: 1
Рейтинг сообщений: 22
Зарегистрирован: Вт фев 09, 2010 17:52:26
Сообщений: 417
Рейтинг сообщения: 0
sanshoy писал(а):
if (PORTB==0x00)// Если порт B в нулевом разряде имеет 0 то такой код
}


Раз уж стоит протеус, то проверьте что даст считывание порта В.
(А куда вы засунули PORTB=0x00; я молчу)

Попробуйте так
Код:
ISR(SIG_OVERFLOW1)
{
   if ((PORTB & 0x01)==0)// Если порт B в нулевом разряде имеет 0 то такой код
   {
      PORTB=0x01;   //Если правильно делать то PORTB |=  (1<<0);
   }
   else //либо в противном случае
   {
      PORTB=0x00; //Если правильно делать то PORTB &= ~(1<<0);
   }

}


Чего не хватает, чтобы моргало каждую секунду, попробуйте найти сами.
Работу таймера легко отследить при отладке в AVRStudio, там видны сразу состояние счетчика, режим работы таймера.

Чем отличаются КОД от ПРОЕКТа?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: отладка в AVR на Си и моделирование Proteus проги с тайм
СообщениеДобавлено: Чт май 19, 2011 08:43:45 
Сверлит текстолит когтями
Аватар пользователя

Карма: 22
Рейтинг сообщений: 78
Зарегистрирован: Пн дек 08, 2008 10:58:48
Сообщений: 1262
Откуда: Винница
Рейтинг сообщения: 0
Код:
#define F_CPU 4000000UL
#define DEL 1024
#define FOUT 1 // cek
#define TM  65536 - (F_CPU/DEL)/FOUT
#include <avr/io.h>
#include <avr/iom16.h>
#include <avr/interrupt.h>

ISR(SIG_OVERFLOW1)
{
 PORTB^=0x01;
 TCNT1+=TM;
}
int main(void)
{
DDRB=0x01;// Настраиваем нулевой выход порта B на выход
TCCR1A=0x00;// Т/С1 отключен от вывода ОС1, режим ШИМ отключен
//!
TCCR1B=0x05;//Коэффициент деления частоты системной синхронизации 1024
//!
PORTB=0x00;
TCNT1=TM;//инициализируем значение счетного регистра равным 61630
TIFR=0x00;//Сбрасываем все флаги прерываний от Т/C1
TIMSK=0x04;// Разрешаем прерывание по переполнению счетного регистра Т/С1
GICR=0;//Запрет внешних прерываний
sei();//Общее разрешение прерываний
while(1==1);//Ожидаем прерывание от Т/С1 каждую секунду


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: отладка в AVR на Си и моделирование Proteus проги с тайм
СообщениеДобавлено: Чт май 19, 2011 17:24:05 
Родился

Зарегистрирован: Пн май 16, 2011 04:08:52
Сообщений: 11
Рейтинг сообщения: 0
codenamehawk проект это все файлы расширения .hex, .c, а код это то что я вам написал.Все равно спасибо огромное.
urry спасибо за код. Стало значительно лучше. Только мигает не каждую секунду, а каждые 5 секунд.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: отладка в AVR на Си и моделирование Proteus проги с тайм
СообщениеДобавлено: Чт май 19, 2011 17:28:27 
Сверлит текстолит когтями
Аватар пользователя

Карма: 22
Рейтинг сообщений: 78
Зарегистрирован: Пн дек 08, 2008 10:58:48
Сообщений: 1262
Откуда: Винница
Рейтинг сообщения: 0
Не верю (С) Станиславский
Установите правильную частоту контроллера в протеусе. Период - 2 сек - сек работы + сек паузы.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: отладка в AVR на Си и моделирование Proteus проги с тайм
СообщениеДобавлено: Чт май 19, 2011 17:53:29 
Родился

Зарегистрирован: Пн май 16, 2011 04:08:52
Сообщений: 11
Рейтинг сообщения: 0
Все заработало спасибо. Только FOUT выставил 5 сек.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: отладка в AVR на Си и моделирование Proteus проги с тайм
СообщениеДобавлено: Чт май 19, 2011 18:21:52 
Родился

Зарегистрирован: Пн май 16, 2011 04:08:52
Сообщений: 11
Рейтинг сообщения: 0
у меня в протеусе русификатор лажает - какие то иероглифы не возможно что либо выставлять , а нормальный русификатор антивирусник определяет как вирус.....попрошу минутку.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: отладка в AVR на Си и моделирование Proteus проги с тайм
СообщениеДобавлено: Чт май 19, 2011 21:54:42 
Сверлит текстолит когтями
Аватар пользователя

Карма: 22
Рейтинг сообщений: 78
Зарегистрирован: Пн дек 08, 2008 10:58:48
Сообщений: 1262
Откуда: Винница
Рейтинг сообщения: 0
Чудес не бывает. Даже в неисправном телевизоре работают законы физики. (с) подполковник Сухотский ЖВУРЭ
Ищите, что не так.
и прямо здесь напрашивается коррекция по алгоритму Брезенхема -при дробном значении делителя - это не больно - в одном случае секунда меньше, в другом больше, но в сумме..
И вы задолбали своим незнанием русского языка - слово несложная - пишется ВМЕСТЕ !
да, блядь, и поэтому - тоже ВМЕСТЕ.
----------
Ну реально достает... :(


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: отладка в AVR на Си и моделирование Proteus проги с тайм
СообщениеДобавлено: Чт май 19, 2011 22:19:54 
Мучитель микросхем

Карма: 1
Рейтинг сообщений: 22
Зарегистрирован: Вт фев 09, 2010 17:52:26
Сообщений: 417
Рейтинг сообщения: 0
sanshoy писал(а):
codenamehawk проект это все файлы расширения .hex, .c, а код это то что я вам написал.Все равно спасибо огромное.

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

То urry, дав полностью рабочий код, убиваете желание думать самому.

Код:
TCNT1+=TM;

так работать будет точнее
Код:
TCNT1=TM;


Последний раз редактировалось codenamehawk Чт май 19, 2011 22:25:57, всего редактировалось 1 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: отладка в AVR на Си и моделирование Proteus проги с тайм
СообщениеДобавлено: Чт май 19, 2011 22:25:10 
Сверлит текстолит когтями
Аватар пользователя

Карма: 22
Рейтинг сообщений: 78
Зарегистрирован: Пн дек 08, 2008 10:58:48
Сообщений: 1262
Откуда: Винница
Рейтинг сообщения: 0
Вот сейчас меня забанят за мат....
И я не буду ни у кого отбивать желание :)
Код:
так работать будет точнее
Код:
TCNT1=TM;

ну как Вам сказать, чтоб не обидеть...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: отладка в AVR на Си и моделирование Proteus проги с тайм
СообщениеДобавлено: Чт май 19, 2011 22:31:30 
Мучитель микросхем

Карма: 1
Рейтинг сообщений: 22
Зарегистрирован: Вт фев 09, 2010 17:52:26
Сообщений: 417
Рейтинг сообщения: 0
И зачем там плюс?
Чтоб работало медленнее?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: отладка в AVR на Си и моделирование Proteus проги с тайм
СообщениеДобавлено: Чт май 19, 2011 22:35:50 
Мучитель микросхем

Карма: 1
Рейтинг сообщений: 22
Зарегистрирован: Вт фев 09, 2010 17:52:26
Сообщений: 417
Рейтинг сообщения: 0
urry писал(а):
ну как Вам сказать, чтоб не обидеть...

Меня может обидеть только тупое высказывание.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: отладка в AVR на Си и моделирование Proteus проги с тайм
СообщениеДобавлено: Чт май 19, 2011 22:36:53 
Сверлит текстолит когтями
Аватар пользователя

Карма: 22
Рейтинг сообщений: 78
Зарегистрирован: Пн дек 08, 2008 10:58:48
Сообщений: 1262
Откуда: Винница
Рейтинг сообщения: 0
неа. Прерывание происходит не сразу - идет сохранение контекста, все дела, но в это время таймер все еще считает.
К моменту, когда мы добрались до до реального изменения по прерыванию, в нем уже что-то натикало от 0. Вот это все, что натикало, мы добавляем к просчитанному значению - и компенсируем сохранение контекста, сохранение в стеке след значения адреса...
Только первое значение прерывания будет неточным, остальные уже будут скомпенсированы.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: отладка в AVR на Си и моделирование Proteus проги с тайм
СообщениеДобавлено: Чт май 19, 2011 22:56:27 
Мучитель микросхем

Карма: 1
Рейтинг сообщений: 22
Зарегистрирован: Вт фев 09, 2010 17:52:26
Сообщений: 417
Рейтинг сообщения: 0
urry писал(а):
неа. Прерывание происходит не сразу - идет сохранение контекста, все дела, но в это время таймер все еще считает.
К моменту, когда мы добрались до до реального изменения по прерыванию, в нем уже что-то натикало от 0. Вот это все, что натикало, мы добавляем к просчитанному значению - и компенсируем сохранение контекста, сохранение в стеке след значения адреса...
Только первое значение прерывания будет неточным, остальные уже будут скомпенсированы.

На вскидку, с параметрами этой задачи (4Mhz/1024), таймер не успеет тикнуть.
Посмотрю в студио для проверки.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: отладка в AVR на Си и моделирование Proteus проги с тайм
СообщениеДобавлено: Чт май 19, 2011 23:01:21 
Сверлит текстолит когтями
Аватар пользователя

Карма: 22
Рейтинг сообщений: 78
Зарегистрирован: Пн дек 08, 2008 10:58:48
Сообщений: 1262
Откуда: Винница
Рейтинг сообщения: 0
Критерий истины - практика (С) Карл Маркс
:)

навскидку тоже пишется вместе... :(

Брезенхем плачет по этой задаче - его условия прямо... Нестандартная частота деления, сказка короче...
Меня еще не забанили ?


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Форум закрыт Эта тема закрыта, Вы не можете редактировать и оставлять сообщения в ней.  [ Сообщений: 26 ]  1,  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 10


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y