реклама на сайте
подробности

 
 
> ATMega
Буратино
сообщение May 11 2011, 06:14
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 433
Регистрация: 27-10-08
Из: Украина, Киев
Пользователь №: 41 215



Работаю с процессором ATMega8. Необходимо на выводы OC1A, OC1B вывести сигнал 125кНz в противофазе.
В режиме CTC (сброс при совпадении) можно переключать в противоположное состояние вывод OC1A и/или OC1B, но получить сигналы на пинах в противофазе никак нельзя. Может быть необходимо ввести обработчик прерывания переполнения и уже в нем инвертировать второй вывод относительно первого? Возможно ли используя режим CTC получить сигнал на указанных выводах в противофазе не используя прерывания, либо же в данном случае правильнее использовать режим Fast PWM?


--------------------
Брак - это такой вид отношений, в которых один всегда прав, - а другой - муж.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Буратино
сообщение May 24 2011, 07:56
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 433
Регистрация: 27-10-08
Из: Украина, Киев
Пользователь №: 41 215



Цитата(Сергей Борщ @ May 22 2011, 00:35) *
EEPROM стиралась вместе ко старым кодом перед записью новой прошивки?

Да, именно такsm.gif

Цитата(Diusha @ May 23 2011, 07:16) *
А по делу на всякий пожарный напомню, что между запись EEWE д. б. после EEMWE в теч. не более 4-х тактов. Если у Вас в программе разрешены прерывания, условие может нарушиться

То есть лучше кусочек который пишет значения в ЕЕПРОМ, заключить в:
Код
    
__disable_interrupt();
...
__enable_interrupt();

?


Подскажите, как программно выполнить ресет? Вот у меня в программе есть место где по сути дела алгоритм должен просто начать выполняться с самого начала, как выполнить ресет программно? Спасибо!
АТMega8, IAR


--------------------
Брак - это такой вид отношений, в которых один всегда прав, - а другой - муж.
Go to the top of the page
 
+Quote Post
Sergey_Aleksandr...
сообщение May 24 2011, 08:47
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 168
Регистрация: 8-10-08
Из: РФ Смоленск
Пользователь №: 40 764



Цитата(Буратино @ May 24 2011, 11:56) *
То есть лучше кусочек который пишет значения в ЕЕПРОМ, заключить в:
Код
    
__disable_interrupt();
...
__enable_interrupt();

?

Это небезопасно, т.к. этим кодом можно несанкционированно разрешить прерывания там, где они запрещены. Лучше так:
Код
char temp = SREG;
__disable_interrupt();
...
SREG = temp;


Про ресет тут целая тема на нескольких страницах была. В кратце: если аппаратно надо сбросить, то только с помощью WatchDog это можно сделать, если просто програмно перепрыгнуть куда-либо, то как-то так:
Код
unsigned short Addr = (unsigned short)main;
((void(*)(void))Addr)();
Go to the top of the page
 
+Quote Post
Bass
сообщение May 26 2011, 03:42
Сообщение #4


Участник
*

Группа: Свой
Сообщений: 66
Регистрация: 5-08-10
Из: Томск
Пользователь №: 58 761



Цитата(Sergey_Aleksandrovi4 @ May 24 2011, 15:47) *
Это небезопасно, т.к. этим кодом можно несанкционированно разрешить прерывания там, где они запрещены. Лучше так:
Код
char temp = SREG;
__disable_interrupt();
...
SREG = temp;


Если используете gcc (он же WinAVR), то в util/atomic.h есть средства для работы с атомарными блоками. Можно использовать такую конструкцию
Код
ATOMIC_BLOCK(ATOMIC_RESTORESTATE) {
// тут код блока с атомарным доступом
}
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение May 26 2011, 04:26
Сообщение #5


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Цитата(Bass @ May 26 2011, 07:42) *
Если используете gcc (он же WinAVR), то в util/atomic.h есть средства для работы с атомарными блоками. Можно использовать такую конструкцию
Код
ATOMIC_BLOCK(ATOMIC_RESTORESTATE) {
// тут код блока с атомарным доступом
}
Можно, но с переносимостью будут проблемы. ATOMIC_BLOCK реализован на специфических особенностях gcc и подобную конструкцию повторить средствами другого компилятора может не получиться. Так что не стоит...


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Буратино   ATMega   May 11 2011, 06:14
- - CYD   В книжке написано, что тоглать можно только ОС1А. ...   May 11 2011, 06:28
|- - Буратино   Цитата(CYD @ May 11 2011, 09:28) В книжке...   May 11 2011, 06:32
||- - Sergey_Aleksandrovi4   Ещё как вариант - пересесть с устаревшей восьмёрки...   May 11 2011, 08:23
|- - haker_fox   QUOTE (CYD @ May 11 2011, 15:28) тоглать ...   May 11 2011, 09:34
- - Сергей Борщ   QUOTE (Буратино @ May 11 2011, 09:14) В р...   May 11 2011, 09:18
- - Буратино   Сделал вот так: Кодvoid Init_Timer1 (void...   May 11 2011, 09:53
|- - Палыч   Цитата(Буратино @ May 11 2011, 13:53) Не ...   May 11 2011, 10:09
|- - Буратино   Цитата(Палыч @ May 11 2011, 13:09) Приори...   May 11 2011, 10:27
- - Буратино   ATMega8/8МHz кварц. Подскажите, как получить в мик...   May 12 2011, 06:34
|- - Сергей Борщ   QUOTE (Буратино @ May 12 2011, 09:34) Но ...   May 12 2011, 07:36
- - dimka76   А зачем все эти заморочки с прерываниями. В режиме...   May 12 2011, 08:36
|- - Буратино   Цитата(dimka76 @ May 12 2011, 11:36) А за...   May 13 2011, 07:49
|- - Сергей Борщ   QUOTE (Буратино @ May 13 2011, 10:49) Доб...   May 13 2011, 08:02
||- - Буратино   Цитата(Сергей Борщ @ May 13 2011, 11:02) ...   May 13 2011, 08:32
||- - Сергей Борщ   QUOTE (Буратино @ May 13 2011, 11:32) Схе...   May 13 2011, 10:29
||- - Буратино   Цитата(Сергей Борщ @ May 13 2011, 13:29) ...   May 13 2011, 11:13
||- - Сергей Борщ   QUOTE (Буратино @ May 13 2011, 14:13) У м...   May 13 2011, 11:18
|- - dimka76   Цитата(Буратино @ May 13 2011, 11:49) На ...   May 13 2011, 08:20
|- - Клим   Цитата(dimka76 @ May 13 2011, 11:20) Можн...   May 16 2011, 06:24
|- - Буратино   Цитата(Клим @ May 16 2011, 09:24) Самое п...   May 21 2011, 12:02
|- - Сергей Борщ   QUOTE (Буратино @ May 21 2011, 15:02) Сам...   May 21 2011, 21:35
|- - Diusha   Цитата(Буратино @ May 21 2011, 15:02) Все...   May 23 2011, 04:16
- - Буратино   ААААА теперь все работает даже с тремя лампами...   May 13 2011, 11:41
|- - Палыч   Цитата(Буратино @ May 24 2011, 11:56) Под...   May 24 2011, 08:49
|- - Сергей Борщ   QUOTE (Буратино @ May 24 2011, 10:56) То ...   May 24 2011, 10:22
- - Буратино   Спасибо!   May 24 2011, 09:12
- - Буратино   Скажите, а вот если я не использую АЦП микроконтро...   Jun 1 2011, 17:23
|- - demiurg_spb   Думаю что да. Входы АЦП-высокоимпедансные и не дол...   Jun 2 2011, 04:11
- - Буратино   Спасибо! И еще один вопросик: вот если для пр...   Jun 2 2011, 06:48
- - demiurg_spb   Если у пищалки высокоимпедансный вход то всё будет...   Jun 2 2011, 07:08
- - Буратино   Цитата(demiurg_spb @ Jun 2 2011, 10:08) Е...   Jun 2 2011, 07:16
- - demiurg_spb   R20 увеличить можно до 4,7К И проверить будет-ли о...   Jun 2 2011, 07:21


Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 13:23
Рейтинг@Mail.ru


Страница сгенерированна за 0.0145 секунд с 7
ELECTRONIX ©2004-2016