AVR Studio и прерывания для Tiny13 (3 ШИМ на одной Tiny13)

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Первый раз сказал Мяу!
Сообщения: 21
Зарегистрирован: Вт сен 01, 2009 09:54:47

Сообщение ILIS »

А вообще, я не жадный - вот весь проект в протеусе и AVR Studio 4.16

Отдельно код смотрите ниже.
Вложения
attiny13_PWM_new.rar
Новый вариант. Добавлено вкл/выкл и другое (см. ниже по топику)
(46.42 КБ) 605 скачиваний
attiny13_3PWM.zip
(48.28 КБ) 495 скачиваний
Последний раз редактировалось ILIS Ср сен 02, 2009 14:51:14, всего редактировалось 3 раза.
Реклама
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18783
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

добавьте в конце программы while(1); сразу после sei(); - бесконечный цикл. а то сейчас у вас программа пролетает за мгновение, а в конце функции main запрещаются прерывания и происходит зацикливание, т.е. все ваши старания идут псу под хвост.

и бога ради, поубирайте reti() из обработчиков прерываний!!! ну надо же мало-мало читать доки...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Реклама
Первый раз сказал Мяу!
Сообщения: 21
Зарегистрирован: Вт сен 01, 2009 09:54:47

Сообщение ILIS »

ARV писал(а):добавьте в конце программы while(1); сразу после sei(); - бесконечный цикл. а то сейчас у вас программа пролетает за мгновение, а в конце функции main запрещаются прерывания и происходит зацикливание, т.е. все ваши старания идут псу под хвост.

и бога ради, поубирайте reti() из обработчиков прерываний!!! ну надо же мало-мало читать доки...
Спасибо. Как на зло, бился месяц (ну это хобби, так что не непрерывно) и не получалось. Решил запостить... и блин сам дошел до этого.
Вы все верно говорите. Скоро выложу программу 3 ШИМ на тини 13 с регулируемой скважностью кнопками :)
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18783
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

ILIS писал(а):Скоро выложу программу 3 ШИМ на тини 13 с регулируемой скважностью кнопками :)
ждем не дождемся :)
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Первый раз сказал Мяу!
Сообщения: 21
Зарегистрирован: Вт сен 01, 2009 09:54:47

Сообщение ILIS »

3 ШИМ на Tiny13 с регулируемой скважностью кнопками :)

Надеюсь не сильно намудрил )

в код не влезло - в атаче. Весь проект в первом посте.
Вложения
main.c
(5.29 КБ) 467 скачиваний
Реклама
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18783
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

бегло поглядел код... вижу ряд слабых мест.
1. ресурс EEPROM - 100000 записей. то есть если изменять каждую секунду, хватит на сутки. но честно говоря, не представляю себе устройство, в котором каждую секунду меняют настройки. это я к тому, что нет особого смысла "чередовать ячейки" для продления срока службы EEPROM - ну в 20 раз вы увеличите срок, это кардинально поменяет ситуацию?
2. макросы для установки битов стоит оформлять в стиле WinAVR, раз уж вы пользуетесь этим компилятором. т.е. вместо 1<<5 писать _BV(5).
3. не увидел собственно многоканального ШИМ. один канал у вас в основном цикле методом опроса реализуется - это не фонтан. рекомендую подумать над тем, как в единственном обработчике прерывания от таймера реализовать все 3 канала ШИМ (можно и больше, но не останется портов под кнопки).
4. не увидел подавления дребезга кнопок. вряд ли ваш вариант будет работать хорошо в реальном железе.
5. если "абсолютно идентично для остальных кнопок" - это стоит оформить в виде функции - и читабельность кода повысится, и работать хуже не станет.
6. вместо трех операторов-макросов CLR_B стоит использовать единственный оператор записи в порт - сразу все три бита и "погасить".
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Реклама
Первый раз сказал Мяу!
Сообщения: 21
Зарегистрирован: Вт сен 01, 2009 09:54:47

Сообщение ILIS »

ARV писал(а):бегло поглядел код... вижу ряд слабых мест.
1. ресурс EEPROM - 100000 записей. то есть если изменять каждую секунду, хватит на сутки. но честно говоря, не представляю себе устройство, в котором каждую секунду меняют настройки. это я к тому, что нет особого смысла "чередовать ячейки" для продления срока службы EEPROM - ну в 20 раз вы увеличите срок, это кардинально поменяет ситуацию?
2. макросы для установки битов стоит оформлять в стиле WinAVR, раз уж вы пользуетесь этим компилятором. т.е. вместо 1<<5 писать _BV(5).
3. не увидел собственно многоканального ШИМ. один канал у вас в основном цикле методом опроса реализуется - это не фонтан. рекомендую подумать над тем, как в единственном обработчике прерывания от таймера реализовать все 3 канала ШИМ (можно и больше, но не останется портов под кнопки).
4. не увидел подавления дребезга кнопок. вряд ли ваш вариант будет работать хорошо в реальном железе.
5. если "абсолютно идентично для остальных кнопок" - это стоит оформить в виде функции - и читабельность кода повысится, и работать хуже не станет.
6. вместо трех операторов-макросов CLR_B стоит использовать единственный оператор записи в порт - сразу все три бита и "погасить".
Спасибо за советы. Я вообще на C# и C++ пишу. Так что с програмированием микрух сталкиваюсь впервые.
К сожалению книг по программированию на WinAvr нет. Все методом тыка и примеры в инете. Даташит читаю еще ) Учусь только ) Так что это первый мой блин.
GP1
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград

Сообщение GP1 »

"Программирование на языке С для AVR и PIC микроконтроллеров" сост. Ю.А.Шпак, толко на днях купил такую, как раз про WinAVR
Чем дальше, тем больше становлюсь занудой...
Изображение
Контактная информация:
Первый раз сказал Мяу!
Сообщения: 21
Зарегистрирован: Вт сен 01, 2009 09:54:47

Сообщение ILIS »

GP1 писал(а):"Программирование на языке С для AVR и PIC микроконтроллеров" сост. Ю.А.Шпак, толко на днях купил такую, как раз про WinAVR
Скачал. Киев 2006 года. Так? 8)
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18783
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

как все известные критики, скажу так: книжку Шпака не читал, но имею о ней негативное мнение :)))

если серьезно - просто прочтите ту документацию, которая идет в комплекте с WinAVR - этого будет достаточно для большинства случаев. конечно, все доки на английском, зато в переводах всегда есть ошибки :)
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Первый раз сказал Мяу!
Сообщения: 21
Зарегистрирован: Вт сен 01, 2009 09:54:47

Сообщение ILIS »

Новый вариант ) вроде все учел. Добавил плавное включение и выключение. Да и просто Включение и выключение при кратковременном нажатии.

С железом не мудрил еще. От дребезгов какой кондер достаточно поставить? Или там что-то еще?
Запитывать буду с помощью 78l05.

Вообще, схема планируется в плафон машины на 3 мощных диода. ШИМом будут рулиться драйвера zxld1360. Вот )
Вложения
attiny13_PWM_new.rar
(46.42 КБ) 3239 скачиваний
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18783
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

круто...
я делал проектик "электронная свеча" - не желаете взглянуть на исходник? на моем сайте свободно лежит. мне кажется, кое-что оттуда вы могли бы почерпнуть полезное... в плане реализации многоканального ШИМ :)

а по алгоритму управления - как вам такой вариант: три кнопки - три светодиода. краткое нажатие кнопки включает/выключает соответствующий светодиод. долгое нажатие при включенном начинает менять яркость, после отпускания направления изменения яркости меняется на противоположное, т.е. при следующем долгом нажатии яркость пойдет в другую сторону. я не вникал - может, у вас именно так... тогда извините. но по коду это понять сложно.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Первый раз сказал Мяу!
Сообщения: 21
Зарегистрирован: Вт сен 01, 2009 09:54:47

Сообщение ILIS »

ARV писал(а):круто...
я делал проектик "электронная свеча" - не желаете взглянуть на исходник? на моем сайте свободно лежит. мне кажется, кое-что оттуда вы могли бы почерпнуть полезное... в плане реализации многоканального ШИМ :)

а по алгоритму управления - как вам такой вариант: три кнопки - три светодиода. краткое нажатие кнопки включает/выключает соответствующий светодиод. долгое нажатие при включенном начинает менять яркость, после отпускания направления изменения яркости меняется на противоположное, т.е. при следующем долгом нажатии яркость пойдет в другую сторону. я не вникал - может, у вас именно так... тогда извините. но по коду это понять сложно.
Именно так ) Старался все там описать, но согласен - разгребать чужие грабли.... :)))
Встал на лапы
Аватара пользователя
Сообщения: 83
Зарегистрирован: Пн фев 09, 2009 19:54:58
Откуда: Днепропетровск, Киев, Львов, Харьков

Сообщение dosmen »

Хочу приспособить ваш вариант ШИМ для управления тремя лампами 12В (каждая до 4А).
Возникает пару вопросов.
Если просто половиком управлять, то при длине провода к лампам 4-5м не превратится ли данный девайс в радиопередатчик?
Мучитель микросхем
Аватара пользователя
Сообщения: 491
Зарегистрирован: Вс янв 07, 2007 01:45:48
Откуда: Российская Федерация, будь она неладна...

Сообщение Pooher »

Да да. Даже если и провод короткий будет, от радио помех не убежишь, частота то солидная.


ЗЫ:
И ещё не забывайте про эффект наложения отражённой волны сигнала, обязательно надо согласовать волновые сопротивления :twisted:
Научить нельзя, можно научиться. Пифагор.
Вставь недостающие буквы в слово *у*ня. Если у тебя получилось слово кухня, значит ты интеллигентный человек.
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»