|
|
  |
жутко глючит мк, помогите пожалуйста |
|
|
|
Apr 20 2008, 11:20
|

Местный
  
Группа: Участник
Сообщений: 355
Регистрация: 27-03-07
Из: Україна, Чуднів
Пользователь №: 26 530

|
Цитата(_Ivan_33 @ Apr 20 2008, 14:10)  но проблема в том, что когда я ставлю delay_ms(...) то время указанное в скобках будет не такое, а будет хаотично (при подключенной переменке) и все будет норм если просто подключен светодиод А можно код увидеть? И как Вы используете пересечение нуля? Может от него и надо плясать? И почему собственно глюки МК?
--------------------
нельзя недооценивать предсказуемость глупости
|
|
|
|
|
Apr 20 2008, 11:36
|

Местный
  
Группа: Участник
Сообщений: 355
Регистрация: 27-03-07
Из: Україна, Чуднів
Пользователь №: 26 530

|
Цитата(_Ivan_33 @ Apr 20 2008, 14:26)  #include <tiny2313.h> #include <delay.h> void main(void) {DDRB=4; DDRA.1=0; while(1) { PORTB=4; delay_ms(3000); if (PINA.1==0x00) {PORTB=0;}; с помощью этого кода я хочу узнать как плавно лампочку загорать С помощью этого кода не получится, алгоритм не верный. Такой алгоритм будет работать только в синхронном режиме с частотой сети. Нольпересечение у Вас обрабатывается в цикле и с какого момента лампочка начинает гореть - предсказать невозможно, такое моё видение
--------------------
нельзя недооценивать предсказуемость глупости
|
|
|
|
|
Apr 20 2008, 11:37
|
fpga designer
   
Группа: Свой
Сообщений: 613
Регистрация: 20-04-08
Из: Зеленоград
Пользователь №: 36 928

|
Код #include <tiny2313.h> #include <delay.h> void main(void) {DDRB=4; DDRA.1=0; while(1) { PORTB=4; delay_ms(3000); if (PINA.1==0x00) {PORTB=0;}; delay_ms(20); if (PINA.1==0x00) {PORTB=4;}; delay_ms(250); if (PINA.1==0x00) {PORTB=0;}; delay_ms(20); if (PINA.1==0x00) {PORTB=4;}; delay_ms(350); if (PINA.1==0x00) {PORTB=0;}; delay_ms(30); if (PINA.1==0x00) {PORTB=4;} delay_ms(450); if (PINA.1==0x00) {PORTB=0;} delay_ms(20); if (PINA.1==0x00) {PORTB=4;}; delay_ms(550); if (PINA.1==0x00) {PORTB=0;}; delay_ms(20); if (PINA.1==0x00) {PORTB=4;}; delay_ms(700);};} - вот так? извините но если не так а переход через нуль использую для включения канала - чтоб не было помех
Сообщение отредактировал zltigo - Apr 20 2008, 11:39
--------------------
|
|
|
|
|
Apr 20 2008, 11:51
|
Частый гость
 
Группа: Свой
Сообщений: 195
Регистрация: 13-05-07
Из: Норильск
Пользователь №: 27 691

|
Посмотрите здесьAVR182: Zero Cross Detector AVR040: EMC Design Considerations По крайней мере, детектирование нуля Атмел предлагает делать немного иначе. В принципе, для детектирования нуля можно цепляться к напряжению вторичной обмотки трансформатора - так безопасней будет
Сообщение отредактировал tazik - Apr 20 2008, 11:55
|
|
|
|
|
Apr 20 2008, 13:47
|

Профессионал
    
Группа: Участник
Сообщений: 1 548
Регистрация: 20-12-07
Из: г.Новосибирск
Пользователь №: 33 486

|
Цитата(_Ivan_33 @ Apr 20 2008, 19:59)  если вы с СИ на вы то я с ним незнаком... учился на курсе avr
можно поподробнее а то для меня это ничего не значится или где об этом почитать Пользуюсь ASM(издревле повелось) да и код компактней, а почитать http://lord-n.narod.ru/walla.htmlГолубцов М.С. Микроконтроллеры AVR: от простого к сложному. Цитата(tazik @ Apr 20 2008, 20:28)  Ага, тогда предлагаю сделать так: Вы пробуете сделать свою штуку на tiny2313, а я попробую на 90S8535 (нету у меня модели tiny2313 для Протеуса) Тини2313 более "продвинутая" , а в Протеусе 7.2.2 у 8535 глюки с прерываниями.
--------------------
И на камнях растут деревья!
|
|
|
|
|
Apr 20 2008, 14:05
|
Частый гость
 
Группа: Свой
Сообщений: 195
Регистрация: 13-05-07
Из: Норильск
Пользователь №: 27 691

|
Цитата(_Ivan_33 @ Apr 20 2008, 22:00)  штуку то тестировали в протеусе - все норм тока не я тестил... Хм, тогда не знаю. Спасибо про прерывания - не знал
Сообщение отредактировал tazik - Apr 20 2008, 14:07
|
|
|
|
|
Apr 20 2008, 14:23
|
Частый гость
 
Группа: Свой
Сообщений: 195
Регистрация: 13-05-07
Из: Норильск
Пользователь №: 27 691

|
Цитата(_Ivan_33 @ Apr 20 2008, 22:11)  ну так значит что может служить помехами?? включение тиристора ??? а насчет того что переход через 0 и мк будет включать порт на следующий переход имхо неверно так как там стоит диод и все значения лог0 от 0 до 1 вольта пройдет очень много времени если считать что команду он обрабатывает в 1 цикл мк Хорошо, а почему бы сначала не взять лампочку, скажем, на 12В и запитать ее через Ваше устройство от трансформатора блока питания - чтобы определиться, что сбои происходят из-за помех. Если Вы точно знаете, что из-за помех, то выше были приведены application notes от атмела. То есть на сброс - подтягивающий резистор с конденсатором, питание через LC-фильтр.
|
|
|
|
|
Apr 20 2008, 14:33
|
Частый гость
 
Группа: Свой
Сообщений: 195
Регистрация: 13-05-07
Из: Норильск
Пользователь №: 27 691

|
Цитата(_Ivan_33 @ Apr 20 2008, 22:26)  я брал светодиод и у меня все было нормально... аплиуху сейчас посмотрю а на сбросе у меня стоит резюк на 750 ом Хорошо, когда работал светодиод, синхронизация от сети осуществлялась?
|
|
|
|
|
Apr 20 2008, 15:04
|

Профессионал
    
Группа: Участник
Сообщений: 1 548
Регистрация: 20-12-07
Из: г.Новосибирск
Пользователь №: 33 486

|
Цитата(_Ivan_33 @ Apr 20 2008, 21:46)  - узнать промежутки включения порта(открывания симистора) чтоб сделать плавное загорание лампочки и ее плавное отключение - но их как раз и не узнал из-за помех 2) этот вывод подключен к диоду и резистору чтоб узнать когда на переменке 0 и в этот момент включить цепь лампочек 3)почему именно переход? ведь если допустим было 0 а будет 1 то напряжение будет 3 вольта и выше а на переменке будет еще больше вольт а мне то нужно чтоб помех было меньше... Сейчас разговор не помехах, у вас не работает устройство по определению, читайте предыдущие посты , вникайте. Сначала нужно научить ШИМ работать синхронно с сетью. И что за нули и единицы у переменки? Какие 3 Вольта? Вам предлагали эксперимент с 12В лампочкой на переменке с тиристором - вперед.
--------------------
И на камнях растут деревья!
|
|
|
|
|
Apr 20 2008, 15:48
|
Частый гость
 
Группа: Свой
Сообщений: 195
Регистрация: 13-05-07
Из: Норильск
Пользователь №: 27 691

|
Цитата(_Ivan_33 @ Apr 20 2008, 23:28)  а если помигать без привязки к полупериодам одной лампочкой то тоже не получается Даже так... Тогда тут трудно сказать что-либо конкретное. Очень многое определяется той же разводкой. И рекомендации носят общий характер. Спасение утопающего - по большей части его личное дело ( Извиняйте (((
|
|
|
|
|
Apr 20 2008, 16:37
|
Частый гость
 
Группа: Участник
Сообщений: 146
Регистрация: 16-05-05
Пользователь №: 5 069

|
В первом вопросе написано "медленно включаются и выключаются" я сразу представил себе, что речь идет о плавном управлении яркостью лампы с помощью фазы открывания симистора. Но из дальнейшого обсуждения (и из кода) выясняется, что Вы хотите сделать не плавное, а мгновенное включение и выключение лампы. Глядя на код не могу понять, что Вы хотите от ламп. Судя по коду: Выключена 3.7сек-включилась на один период (20мсек)- выключена 0.25сек-включилась на один период (20мсек)- выключена 0.35сек-включилась на полтора периода (30мсек)-...и так далее
Но для диода включение его на 20...30 мсек с отключением на четверть секунды вполне заметны. А для лампы я смутно представляю как это будет выглядеть из-за ее инерционности. Опишите пожалуйста подробнее, что Вы хотите от лампы и что она делает.
3)почему именно переход? В "AVR182: Zero Cross Detector" описано с рисунками. Если проверять не момент перехода с 1 на 0 (или с 0 на 1), а наличие ноля, то представьте -Вы включаете схему, это происходит в случайный момент фазы от 0 до 360градусов фазы. Если включили во время отрицательного полупериода, то при проверке на выводе будет обнаружен ноль и будет открыт симистор. Но напряжение на симисторе в этот момент может быть любое от 0 до 310В (если в сети 220В).
|
|
|
|
|
Apr 20 2008, 17:12
|
Частый гость
 
Группа: Свой
Сообщений: 195
Регистрация: 13-05-07
Из: Норильск
Пользователь №: 27 691

|
Цитата(_Ivan_33 @ Apr 21 2008, 00:57)  а насчет апноута я посмотрел и ничего не понял - не рублю я в техническом английском - мне всего 15 лет ... А, да ничего страшного. Мне еще второй год в 7 классе учиться. Гы
|
|
|
|
|
Apr 20 2008, 17:23
|

Силовик-затейник
   
Группа: Модераторы
Сообщений: 766
Регистрация: 18-02-07
Из: Столица солнечного Башкортостана
Пользователь №: 25 467

|
ШИМ это широтно-импульсная модуляция. Если вкратце - из периода T часть времени t на нагрузку идёт напряжение. Увеличивая или уменьшая t соответственно увеличиваем или уменьшаем среднее напряжение на нарузке. (T>=t) Отношения T к t называют скважиностью ______/-----\______/-----\ (а) ___/---------\___/---------\ (б) ________/--\________/--\ (в) t = время от / до \ T = время от / до / Контрольный вопрос: У какого из графиков (а-в) наибольшее и наименьшее напряжение на нагрузке ( _ напряжение =0, - напряжение U)?
--------------------
"Вперёд на мины, ордена потом!" "инжинер/разработчик создает нечто, в отличии от многих других профессий. В этом есть сходность с художниками или музыкантами"(с)CodeWarrior1241
|
|
|
|
|
Apr 20 2008, 17:41
|
fpga designer
   
Группа: Свой
Сообщений: 613
Регистрация: 20-04-08
Из: Зеленоград
Пользователь №: 36 928

|
б-наибольшее в-наименьшее схемка прилагается так как сделать ШИМ!? все в 22 00 ухожу в схеме первый прямоугольник это кренка второй мк а еще не сделал токограничительный резистор до оптопары
Прикрепленные файлы
_____1.BMP ( 3.22 килобайт )
Кол-во скачиваний: 39
--------------------
|
|
|
|
|
Apr 20 2008, 21:27
|

Силовик-затейник
   
Группа: Модераторы
Сообщений: 766
Регистрация: 18-02-07
Из: Столица солнечного Башкортостана
Пользователь №: 25 467

|
Цитата(_Ivan_33 @ Apr 20 2008, 23:50)  а то есть мне можно получается и менять яркость лампочки ШИМ и делать плавное загорание и погасание? Всё будет! НО: 1. Набраться терпения и не торопиться 2. Соблюдать акуратность - перепаивать по нескольку раз из-за простой невнимательности радости мало + в магазин за деталями бегать 3. Внимательно слушать и задавать вопросы - обратная связь приветствуется 4. Читать умные и хорошие книги 5. Выкладывать схемы, фото и т.п. в формате jpg и т.п. - bmp очень неудачный выбор 6. Давай договоримся что с 220В будем работать очень акуратно и пока начнем с более безопасного напряжения (одного заземлят а другого посадят) и нам понадобится понижающий трансформатор на 12В и лампочка 12В для карманного фонаря. Сначала схема, потом выложу алгоритмы. Заранее предупреждаю что буду оставлять место для твоего творчества в небольшом пространстве - хуже от этого не будет. Я не специалист по AVR и C - потребуется помощь со стороны (ну и своей головой думать очень полезно).
1. Для начала дорисуй недостающие фрагменты схемы (блок питания и обвязку МК), хотя-бы для себя. 2. Посмотри описание на оптосимистор http://www.fairchildsemi.com/ds/MO/MOC3021-M.pdf и оптопару http://www.fairchildsemi.com/ds/H1/H11L1-M.pdf для общего развития 3. На схеме есть одна специальная ошибка, постарайся её найти (ищи вокруг VU1) Элементы на схеме: VU1 - H11L1 VU2 - MOC3021 VD1 - любой диод на ток до 100мА, например КД522 Резисторы могут быть импортными, главное мощность (можно ставить более мощный но не наоборот) и сопротивление (по возможности указанное, если таких нет +-10% от указанного номинала). Конденсатор С1 электролит на 6.3В любой импортный, С2 и С3 любые керамические DD1 твой микропроцессор, Int - вход прерывания Out - выход включения лампы (+5 и общий не показаны - нарисуешь сам) И самое главное - от ресурса А*В*Р*один*два*три шарахаться как от огня. Это не шутка
--------------------
"Вперёд на мины, ордена потом!" "инжинер/разработчик создает нечто, в отличии от многих других профессий. В этом есть сходность с художниками или музыкантами"(с)CodeWarrior1241
|
|
|
|
|
Apr 21 2008, 14:43
|
Частый гость
 
Группа: Свой
Сообщений: 195
Регистрация: 13-05-07
Из: Норильск
Пользователь №: 27 691

|
Цитата(_Ivan_33 @ Apr 21 2008, 22:20)  где почитать про прерывания чтоб было хорошо написано - понятно и просто!? Вообще все очень подробно написано в книге Фрунзе "Микроконтроллеры - это же просто", правда для 51 семейства - но основной сути это не меняет. А если на пальцах... В общем выполняет у Вас контроллер какую-то там задачу, например, что-то там считает. И в то же время, Вам надо как-то среагировать на изменение, например, уровня сигнала на ножке контроллера. Можно в ту, первую, задачу вставить периодическую проверку уровня на ножке - для быстрой реакции Вам придется вставлять эту проверку, например, после каждого оператора основной задачи. Согласитесь, это не удобно. Вот как раз для таких случаев существуют прерывания. В случае изменения уровня на ножке INT0 контроллер автоматически прерывает выполнение основной программы и перепрыгивает на жестко заданый адрес. По этому адресу у Вас должен находиться код для обработки данного события. В общем прерывания позволяют контроллеру заниматься какими-то другими делами, помимо выполнения основной программы
Сообщение отредактировал tazik - Apr 21 2008, 14:45
|
|
|
|
|
Apr 21 2008, 15:26
|
Частый гость
 
Группа: Свой
Сообщений: 195
Регистрация: 13-05-07
Из: Норильск
Пользователь №: 27 691

|
Цитата(_Ivan_33 @ Apr 21 2008, 23:10)  но ведь изменение логического уровня на ноге мк может произойти в разный момент а тут изменение уровня будет много раз... и чем же их использование в моем случае так важно? Не совсем понял вопрос... Можно как-то более четко задавать вопросы - типа как для тазика? В Вашем случае изменения уровня на ноге будет происходить не в "разный момент" - а конкретно при пересечении нуля. Да в принципе, можно и без прерываний обойтись. Но с ними проще и удобней. 1) Прерывание INT0 - включаете гирлянду, запускаете таймер Т0 2) Прерывание от T0 - выключаете гирлянду - вот и вся программа - в общих чертах
|
|
|
|
|
Apr 21 2008, 15:50
|
Частый гость
 
Группа: Свой
Сообщений: 195
Регистрация: 13-05-07
Из: Норильск
Пользователь №: 27 691

|
Цитата(_Ivan_33 @ Apr 21 2008, 23:31)  буду осваивать - а с прерываниями не работал раньше Да ладно, никто же не настаивает Цитата(tazik @ Apr 21 2008, 23:26)  1) Прерывание INT0 - включаете гирлянду, запускаете таймер Т0 2) Прерывание от T0 - выключаете гирлянду Пардон, у Вас на выходе тиристор? Тогда я Вам наврал ( Правильно как предлагает domowoj
|
|
|
|
|
Apr 21 2008, 20:06
|

Силовик-затейник
   
Группа: Модераторы
Сообщений: 766
Регистрация: 18-02-07
Из: Столица солнечного Башкортостана
Пользователь №: 25 467

|
Цитата(_Ivan_33 @ Apr 21 2008, 10:17)  и почемувывод на кренке 5 вольт он 4-ий? КР142ЕН5А в 3-х ногом корпусе имеет "золотого" старшего брата 142ЕН5А, там другой корпус. Номера выводов на графическом обозначении для обоих исполнений было решено оставить одинаковыми. Цитата(_Ivan_33 @ Apr 21 2008, 10:17)  и почему не подключена земля к мк? Землю (и питание) МК я не рисовал, т.к. мне было лень смотреть его описание. Ошибка в том что я не нарисовал резистор между выходом (4 ногой) H11L1 и +5В. Номинал 1кОм если не запямятовал. Книги читать начал?
--------------------
"Вперёд на мины, ордена потом!" "инжинер/разработчик создает нечто, в отличии от многих других профессий. В этом есть сходность с художниками или музыкантами"(с)CodeWarrior1241
|
|
|
|
|
Apr 22 2008, 09:54
|
Группа: Новичок
Сообщений: 10
Регистрация: 22-04-08
Пользователь №: 36 993

|
Цитата(_Ivan_33 @ Apr 22 2008, 13:08)  и что делать? Добрый день всем! Пусть меня старшие товарищи поправят, если я ошибаюсь, но мне кажется было бы полезно познакомиться с программой FlowCode. Она, кажется, для PIC-контроллеров, но позволяет отвлечься от кодирования на ассемблере или Си и сосредоточиться на происходящих событиях. Полученный hex-файл можно загрузить в Proteus, если не хватает внешних элементов, и увидеть происходящее без осциллографа, как если бы он был. Конечно, окончательный ответ будет найден на макетной плате, но его легче искать, когда ясна суть происходящего.
|
|
|
|
|
Apr 22 2008, 09:58
|
Частый гость
 
Группа: Свой
Сообщений: 195
Регистрация: 13-05-07
Из: Норильск
Пользователь №: 27 691

|
Цитата(_Ivan_33 @ Apr 22 2008, 17:08)  вот узнал чтоб глобально разрешить прерывания нужно набрать #asm("sei") а запретить #asm("cli") ну типа такого прерывания что на выходе int0(1) есть смена логического уровня такого нету... есть только прерывание по лог0, прерывание по ниспадающему фронту сигнала и по возрастающему и что делать? Почему нету? Есть - MCUCR ISC01=0, ISC00=1 - any change - при любом изменении. Более того, помимо INT0, INT1 есть еще прерывание PCINT - при изменении уровня на одной из 6 ножек Цитата(vladi1147 @ Apr 22 2008, 17:54)  Добрый день всем!
Пусть меня старшие товарищи поправят, если я ошибаюсь, но мне кажется было бы полезно познакомиться с программой FlowCode. Она, кажется, для PIC-контроллеров, но позволяет отвлечься от кодирования на ассемблере или Си и сосредоточиться на происходящих событиях. Спасибо за ссылку. Думал, что кроме Algoritm Buildera ничего нет. Уже есть и для AVR, и для ARM )
|
|
|
|
|
Apr 22 2008, 10:44
|
Частый гость
 
Группа: Свой
Сообщений: 195
Регистрация: 13-05-07
Из: Норильск
Пользователь №: 27 691

|
Цитата(_Ivan_33 @ Apr 22 2008, 18:37)  блин перерыл книги там мало что написано.... ну может кто-нить сюда хоть откуда-то скопирует... я наверное штук 5 книг смотрел уже - на 2 страницах максимум написано... А что именно ты сейчас ищешь?
|
|
|
|
|
Apr 22 2008, 16:15
|

Профессионал
    
Группа: Участник
Сообщений: 1 548
Регистрация: 20-12-07
Из: г.Новосибирск
Пользователь №: 33 486

|
Цитата(_Ivan_33 @ Apr 22 2008, 20:27)  как делать прерывания... хотя бы на изменение лог уровня на ноге... Вот нашел кое-что- это какие-то регуляторы, есть и на си, с прерыванием.
Сообщение отредактировал domowoj - Apr 22 2008, 16:16
Прикрепленные файлы
Switch.rar ( 237.3 килобайт )
Кол-во скачиваний: 266
--------------------
И на камнях растут деревья!
|
|
|
|
|
May 1 2008, 09:51
|
Частый гость
 
Группа: Свой
Сообщений: 195
Регистрация: 13-05-07
Из: Норильск
Пользователь №: 27 691

|
Цитата(_Ivan_33 @ May 1 2008, 17:46)  а вот написано - изменение сигналов на выводах - на каких выводах? и если их много как установить чтоб было тока на 1 выводе?
как записать в регистр GIMSK 5-ий разряд называемый PCIE лог.1???? Км, уважаемый, а мы вообще в этом веке планируем читать datasheets от производителя? Или уже только в следующем? Там все четко написано. С Вашей стороны не видно совершенно никаких усилий, это удручает GIMSK|=(1<<PCIE);
Сообщение отредактировал tazik - May 1 2008, 09:53
|
|
|
|
|
May 1 2008, 10:10
|
Частый гость
 
Группа: Свой
Сообщений: 195
Регистрация: 13-05-07
Из: Норильск
Пользователь №: 27 691

|
Цитата(_Ivan_33 @ May 1 2008, 17:59)  я его сегодня скачал!!! и тем более я пока начинающий - еще не знаю что к чему Только сегодня? Понятно, что начинающий, я ж не против. Просто Вам потребуется усвоить более-менее приличный объем информации. Хорошо было бы иметь под рукой знающего человека, чтобы общаться с ним вживую. То есть более оперативно решать вопросы. Если такого человека нет, то придется грызть все самому, по книжкам. \
|
|
|
|
|
May 1 2008, 10:28
|

Профессионал
    
Группа: Участник
Сообщений: 1 548
Регистрация: 20-12-07
Из: г.Новосибирск
Пользователь №: 33 486

|
Цитата(_Ivan_33 @ May 1 2008, 17:12)  Each PCINT7..0-bit selects whether pin change interrupt is enabled on the corresponding I/O pin. If PCINT7..0 is set and the PCIE bit in GIMSK is set, pin change interrupt is enabled on the corresponding I/O pin. If PCINT7..0 is cleared, pin change interrupt on the corresponding I/O pin is disabled. - а почему в разряды записываются лог. состояния именно так? вроде в регистры порта записывается просто PORTB=2... Ну на чистом англицком и у Евстифеева на чистом русском написано. Таким образом ты организовал прерывание внешнее или програмное, если изменить этот бит порта. Читать внимательнее!!! Все поймешь.
--------------------
И на камнях растут деревья!
|
|
|
|
|
May 1 2008, 10:35
|
Частый гость
 
Группа: Свой
Сообщений: 195
Регистрация: 13-05-07
Из: Норильск
Пользователь №: 27 691

|
Цитата(_Ivan_33 @ May 1 2008, 18:12)  Each PCINT7..0-bit selects whether pin change interrupt is enabled on the corresponding I/O pin. If PCINT7..0 is set and the PCIE bit in GIMSK is set, pin change interrupt is enabled on the corresponding I/O pin. If PCINT7..0 is cleared, pin change interrupt on the corresponding I/O pin is disabled. - вот похоже я пошел правильным путем! а почему в разряды записываются лог. состояния именно так? вроде в регистры порта записывается просто PORTB=2...
ну ERRATa я скачал раньше! Есть конечно, команды sbi и cbi, позволяющие обращаться к битам регистров индивидуально. Другое дело, что только к I/O регистрам. GIMSK к ним не относится. можно было бы сделать так: ldi r16, 1<<TOIE1 out TIMSK,r16 Но при этом изменятся биты, которые мы не хотели трогать В итоге приходится делать так - для установки бита в 1: in r16,TIMSK andi r16,1<<TOIE1 out TIMSK,r16 на С: TIMSK|=(1<<TOIE1); - установка в 1 TIMSK&=!(1<<TOIE1); - сброс в 0 Регистры и биты взяты произвольные - для примера
Сообщение отредактировал tazik - May 1 2008, 10:37
|
|
|
|
|
May 1 2008, 10:48
|
Частый гость
 
Группа: Свой
Сообщений: 195
Регистрация: 13-05-07
Из: Норильск
Пользователь №: 27 691

|
Цитата(_Ivan_33 @ May 1 2008, 18:41)  ну а почему записывается в регистры именно так а не как в регистры порта? Архитектура контроллера такая. АВРСтудио под рукой есть? Попробуйте сами. The CBI and SBI instructions work with registers 0x00 to 0x1F only. Цитата(_Ivan_33 @ May 1 2008, 18:41)  все... поехал в сад... вечером буду... Нормально. Удачи
Сообщение отредактировал tazik - May 1 2008, 10:47
|
|
|
|
|
May 8 2008, 19:32
|
Участник

Группа: Участник
Сообщений: 54
Регистрация: 13-09-06
Пользователь №: 20 357

|
Цитата(_Ivan_33 @ May 8 2008, 21:59)  начал изучать счетчики - вопрос: как записать и куда записать значение при котором счетчик должен отреагировать? т.е. конечное значение счета... В регистр сравнения OCR, при совпадении его значения со значением счетного регистра будет сгенерировано прерывание. Либо записываешь начальное значение в счетный регистр и ждешь переполнения.
Сообщение отредактировал fredo - May 8 2008, 19:37
|
|
|
|
|
May 9 2008, 10:34
|
fpga designer
   
Группа: Свой
Сообщений: 613
Регистрация: 20-04-08
Из: Зеленоград
Пользователь №: 36 928

|
Цитата #include <tiny2313.h> #include <delay.h> bit a=0; bit b=0; void main(void) { #asm("sei"); TCCR1B|=(1<<2); TCCR1B|=(1<<0); DDRB=2; GIMSK|=(1<<5); PCMSK|=(1<<7); while(1) { if (a==1&&b==1) {a=0; PORTB=2; ... if(a==1) {a=0; PORTB=0;};};};} void interrupt [PCINT.7](void) { a=1; delay_xc(1000); a=0;} void interrupt [TIM1_COMPA]{ b=1;} вместо ... напишите отсчет времени по счетчику ну скажем 2 секунды... прога для attiny2313 и потом выключить отсчет времени...
--------------------
|
|
|
|
|
May 25 2008, 15:24
|
fpga designer
   
Группа: Свой
Сообщений: 613
Регистрация: 20-04-08
Из: Зеленоград
Пользователь №: 36 928

|
вот пишу опять сюда... ничего не получается... тот же самый случай Цитата #include <tiny2313.h> #include <delay.h> int a=0; void main(void) { #asm("sei"); DDRB=2; GIMSK|=(1<<5); PCMSK|=(1<<7); while(1) { if (a==200) {a=0; PORTB=2; if(a==200) {a=0; PORTB=0;};};};} interrupt [PCINT] void pin_change_isr0(void) { a++;} опять ничто не получается... я уже просто не знаю что делать ... ничего не мигает ... ну если только иногда ... цепь питания - блок питания - 500 мкф на 25 вольт кренка 100 мкф на 25 вольт 0,1 мкф - сам контроллер цепь определения перехода - 560 ком и диод 1N4007... на резет подано лог1 через 10 ком возникла мысль поменять блок питания...
--------------------
|
|
|
|
|
May 25 2008, 15:40
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
Цитата(_Ivan_33 @ May 25 2008, 18:24)  вот пишу опять сюда... ничего не получается... тот же самый случай На этом форуме буквально через день ищется одна и та же ошибка. Если у вас переменная меняется в прерывании, а проверяется в основной программе, то она обязательно должна быть объявлена с квалификатором volatile! Поэтому у вас должно быть volatile int a = 0;
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|