Проблемы с микроконтроллерами AVR
- Volgol_555
- Потрогал лапой паяльник
- Сообщения: 301
- Зарегистрирован: Пт сен 23, 2011 13:13:51
- Откуда: Минск
- Контактная информация:
Проблемы с микроконтроллерами AVR
Я как любитель, но ещё не эксперт при программировании МК столкнулся с рядом проблем:
1) Когда на attiny13 пытаюсь сделать часы реального времени в CodevisionAVR выставляю деление кварцевого генератора на 256: в итоге у меня появляется возможность на 8-битном таймере сделать частоту 1Гц. Появляется вот такие строчки:
/ Crystal Oscillator division factor: 256
#pragma optsize-
CLKPR=0x80;
CLKPR=0x08;
#ifdef _OPTIMIZE_SIZE_
#pragma optsize+
#endif
И всякий раз, когда записываю прогу с этими строками микроконтроллеры Attiny13 перестают читаться вообще!!! Хотя прога поначалу работает. Пробовал восстанавливать на самодельном реаниматоре - он выдает, что все восстановил, но чтение при этом не могу произвести. Система просто его не видит. (в качестве программатора использовал 5 проводков от LPT соединненных резисторами по 150 Ом). Я специально проверил и загнал второй attiny13 - походу дело все в этом Crystal Oscillator Divider??? Вопрос: что стало с моим МК????
2) Писал программный ШИМ на Atmega8, после 5-й записи он перестал читаться, но при этом программа работала. При команде Reset начиналось мерцание светодиода (очень быстрое), но МК не читался. Затем я вырубил питание и снова включил - прога на МК уже не работала. Вопрос: фьюзы я не менял, заливал только прогу - что случилось с Atmega 8?
Для нее я использовал программатор в точности собранный по схеме:http://yl2gl.ucoz.net/news/programmirovanie_avr/2011-02-25-70.
только не стал ставить резистор на 10к идущий от Reset'a к питанию. Питание ставил от USB компа! И ещё...при включении COM порта, и выкл. питании на ногах VCC и GND почему-то появляется напряжение в 2V. Это как такое возможно?
3)При написании таймера на attiny13 обнаружил, что время прохождения первого "якобы часа", второго, третьего и последующих часов сильно отличается - 17, 5, 13 секунд и т.д. Вопрос: это нормально? Что кварц неточный это ясно, но неужели он ещё и с разной скоростью работает в течение всего времени?
4) На сайте вычитал, что обязательно нужно при программировании ноги Reset и Vc ссянуть резистором в 10к, Reset и GND кондером в 0,01-0,15мкФ. Вопрос: Зачем такое делать? Я все время программировал и без этого! Может это есть причина всех моих вопросов выше????
1) Когда на attiny13 пытаюсь сделать часы реального времени в CodevisionAVR выставляю деление кварцевого генератора на 256: в итоге у меня появляется возможность на 8-битном таймере сделать частоту 1Гц. Появляется вот такие строчки:
/ Crystal Oscillator division factor: 256
#pragma optsize-
CLKPR=0x80;
CLKPR=0x08;
#ifdef _OPTIMIZE_SIZE_
#pragma optsize+
#endif
И всякий раз, когда записываю прогу с этими строками микроконтроллеры Attiny13 перестают читаться вообще!!! Хотя прога поначалу работает. Пробовал восстанавливать на самодельном реаниматоре - он выдает, что все восстановил, но чтение при этом не могу произвести. Система просто его не видит. (в качестве программатора использовал 5 проводков от LPT соединненных резисторами по 150 Ом). Я специально проверил и загнал второй attiny13 - походу дело все в этом Crystal Oscillator Divider??? Вопрос: что стало с моим МК????
2) Писал программный ШИМ на Atmega8, после 5-й записи он перестал читаться, но при этом программа работала. При команде Reset начиналось мерцание светодиода (очень быстрое), но МК не читался. Затем я вырубил питание и снова включил - прога на МК уже не работала. Вопрос: фьюзы я не менял, заливал только прогу - что случилось с Atmega 8?
Для нее я использовал программатор в точности собранный по схеме:http://yl2gl.ucoz.net/news/programmirovanie_avr/2011-02-25-70.
только не стал ставить резистор на 10к идущий от Reset'a к питанию. Питание ставил от USB компа! И ещё...при включении COM порта, и выкл. питании на ногах VCC и GND почему-то появляется напряжение в 2V. Это как такое возможно?
3)При написании таймера на attiny13 обнаружил, что время прохождения первого "якобы часа", второго, третьего и последующих часов сильно отличается - 17, 5, 13 секунд и т.д. Вопрос: это нормально? Что кварц неточный это ясно, но неужели он ещё и с разной скоростью работает в течение всего времени?
4) На сайте вычитал, что обязательно нужно при программировании ноги Reset и Vc ссянуть резистором в 10к, Reset и GND кондером в 0,01-0,15мкФ. Вопрос: Зачем такое делать? Я все время программировал и без этого! Может это есть причина всех моих вопросов выше????
Последний раз редактировалось Volgol_555 Пт сен 23, 2011 15:08:36, всего редактировалось 1 раз.
Самое гениальное - всегда самое простое
- Реклама
- GP1
- Поставщик валерьянки для Кота
- Сообщения: 2401
- Зарегистрирован: Пт май 23, 2008 19:32:22
- Откуда: Россия, Волгоград
- Контактная информация:
Re: Проблемы с микроконтроллерами AVR
Ёще одна жертва СV
вопрос, шьете из CV?
какие фьюзы выставлены? вероятно при прошивке сбрасываются CKSEL биты и проц перестает отвечать.
вопрос, шьете из CV?
какие фьюзы выставлены? вероятно при прошивке сбрасываются CKSEL биты и проц перестает отвечать.
- avreal
- Опытный кот
- Сообщения: 842
- Зарегистрирован: Чт дек 31, 2009 19:27:45
- Откуда: Бровари, Україна
- Контактная информация:
Re: Проблемы с микроконтроллерами AVR
Упс!
При кварце 32768 деление CLKPR на 256 даёт тактовую контроллера 128 Гц.
Там одна фигня у AVR-ок, как я понял.
CLKPR заносится начением по умолчанию (без деления либо деление на 8, по фьюзу CKDIV8) в момент снятия сброса. Т.е. при подче сброса контроллер по-прежнему молотит на той частоте, которую установила программа. При снятии сброса на короткое время устанавливается частота по фьюзам, а потом программа снова сваливает на низкую.
А при тактовой 128 герц частота SPI для программирования должна быть не выше 32 герц.
Большинство программаторов не выставляют аж такую низкую частоту (avreal может поставить до где-то 250 Гц, я до сих пор на такое не нарывался и просто лень было лимит поменять).
Так что пока «ой».
Доберусь до дому, поправлю avreal-у нижний предел и попробую какую-то тиньку помучать.
При кварце 32768 деление CLKPR на 256 даёт тактовую контроллера 128 Гц.
Там одна фигня у AVR-ок, как я понял.
CLKPR заносится начением по умолчанию (без деления либо деление на 8, по фьюзу CKDIV8) в момент снятия сброса. Т.е. при подче сброса контроллер по-прежнему молотит на той частоте, которую установила программа. При снятии сброса на короткое время устанавливается частота по фьюзам, а потом программа снова сваливает на низкую.
А при тактовой 128 герц частота SPI для программирования должна быть не выше 32 герц.
Большинство программаторов не выставляют аж такую низкую частоту (avreal может поставить до где-то 250 Гц, я до сих пор на такое не нарывался и просто лень было лимит поменять).
Так что пока «ой».
Доберусь до дому, поправлю avreal-у нижний предел и попробую какую-то тиньку помучать.
Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.
- avreal
- Опытный кот
- Сообщения: 842
- Зарегистрирован: Чт дек 31, 2009 19:27:45
- Откуда: Бровари, Україна
- Контактная информация:
Re: Проблемы с микроконтроллерами AVR
Хотя реаниматор должен же сбросить фьюзы на заводские.
Тогда тактовая контроллера при делении на 256 будет немного ниже 40 килогерц, при программировании надо частоту SPI дать немного ниже 10 килогерц.
Это уже почти все программаторы должны брать, нужно только выставить скорость на достаточно низкую и стереть контроллер с той программой.
Тогда тактовая контроллера при делении на 256 будет немного ниже 40 килогерц, при программировании надо частоту SPI дать немного ниже 10 килогерц.
Это уже почти все программаторы должны брать, нужно только выставить скорость на достаточно низкую и стереть контроллер с той программой.
Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.
- Volgol_555
- Потрогал лапой паяльник
- Сообщения: 301
- Зарегистрирован: Пт сен 23, 2011 13:13:51
- Откуда: Минск
- Контактная информация:
Re: Проблемы с микроконтроллерами AVR
Хорошая идея. Только тогда подскажите какой прогой мне шить МК. И как там настроить частоту ниже 10кГц. Я пользовался прогой CodevisionAVr и ponyprog200 (у них вроде нету настройки частоты). Пробовал avrealshell, но она во-первых у меня и к нормальным МК не коннектиться, а во вторых там ниже 10кГц не ставиться((avreal писал(а):Хотя реаниматор должен же сбросить фьюзы на заводские.
Тогда тактовая контроллера при делении на 256 будет немного ниже 40 килогерц, при программировании надо частоту SPI дать немного ниже 10 килогерц.
Это уже почти все программаторы должны брать, нужно только выставить скорость на достаточно низкую и стереть контроллер с той программой.
Самое гениальное - всегда самое простое
- Реклама
- Volgol_555
- Потрогал лапой паяльник
- Сообщения: 301
- Зарегистрирован: Пт сен 23, 2011 13:13:51
- Откуда: Минск
- Контактная информация:
Re: Проблемы с микроконтроллерами AVR
Шью attiny13 через CV. Фьюзы все в 1 - как были так я их и не трогал вообще! Тем более что мой реаниматор восстанавливает фьюзы к заводским настройкам. Я его на рабочей tiny13 проверил (там все фьюзы ставил в 0) - он ее восстановил. И эти tiny пробовал, но он что-то не может их восстановить(GP1 писал(а):Ёще одна жертва СV![]()
вопрос, шьете из CV?
какие фьюзы выставлены? вероятно при прошивке сбрасываются CKSEL биты и проц перестает отвечать.
Ещё вопросик параллельно! В CV есть кроме erase BLANK CHECK. Она тоже вроде стирает (я ею пользовался при стирании, когда после erase запись была с ошибкой?!) Что же это все таки за функция?
Самое гениальное - всегда самое простое
Re: Проблемы с микроконтроллерами AVR
че-то весьма запутано... часы реального времени ? а на кой там часовой кварц - достаточно основного кварца из набора доступных (до20МГц), да и поточнее тогда будет
для tiny13 внешний кварц вроде и не применяется, там лучше tiny2313 или pic16f683/684
на асме - подскажу, с-не мое
пишу под avrstudio4 программирование ponyprog+stk200m никаких проблем не наблюдается
кстати, не мешало бы на схемку глянуть
для tiny13 внешний кварц вроде и не применяется, там лучше tiny2313 или pic16f683/684
на асме - подскажу, с-не мое
пишу под avrstudio4 программирование ponyprog+stk200m никаких проблем не наблюдается
кстати, не мешало бы на схемку глянуть
- avreal
- Опытный кот
- Сообщения: 842
- Зарегистрирован: Чт дек 31, 2009 19:27:45
- Откуда: Бровари, Україна
- Контактная информация:
Re: Проблемы с микроконтроллерами AVR
Ну не знаю, что там с avrealshell.
Реально с котроллерами работает avreal, shell только команду форимрует.
В чём была проблема издали не видно -- мог драйвер криво стать, могла быть какая-то не та версия avreal, могло что-то не так из shell передаться в сам avreal.
Я с avrealshell дела не имею и могу только гадать.
avreal работает, если всё настроено правильно
Для него в ключе -o можно указать вниз до -o1khz (это частота тактирования контроллера).
Ну или просто -o1 , так как частота по умолчанию в килогерцах.
У PonyProg, может, где-то в ini-шках.
BLANK CHECK должен только читать и сравнивать с FF
Реально с котроллерами работает avreal, shell только команду форимрует.
В чём была проблема издали не видно -- мог драйвер криво стать, могла быть какая-то не та версия avreal, могло что-то не так из shell передаться в сам avreal.
Я с avrealshell дела не имею и могу только гадать.
avreal работает, если всё настроено правильно
Для него в ключе -o можно указать вниз до -o1khz (это частота тактирования контроллера).
Ну или просто -o1 , так как частота по умолчанию в килогерцах.
У PonyProg, может, где-то в ini-шках.
BLANK CHECK должен только читать и сравнивать с FF
Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.
- Volgol_555
- Потрогал лапой паяльник
- Сообщения: 301
- Зарегистрирован: Пт сен 23, 2011 13:13:51
- Откуда: Минск
- Контактная информация:
Re: Проблемы с микроконтроллерами AVR
Да смысл прост! Мне нужны часики которые скажем включают реле в 19:00 и выключают в 24:00.BOB51 писал(а):че-то весьма запутано... часы реального времени ? а на кой там часовой кварц - достаточно основного кварца из набора доступных (до20МГц), да и поточнее тогда будет
для tiny13 внешний кварц вроде и не применяется, там лучше tiny2313 или pic16f683/684
на асме - подскажу, с-не мое
пишу под avrstudio4 программирование ponyprog+stk200m никаких проблем не наблюдается![]()
кстати, не мешало бы на схемку глянуть
Для теста я делал это все со светодиодом, но чтобы мне убедиться в точности внутреннего кварца, пришлось писать прогу где через час диод выключался. Так вот исходя из того, как обычно пишутся часы: обычно это на 16-битном таймере выставляется частота 7,813кГц и делиться на 7813 - т.е. прерывание), я сделал то же на attiny13. Но там таймер только 8-битный, а следовательно нужно было снизить частоту системного генератора на 256, после чего для таймера появлялись в окне настроек более низкие частоты, что позволило выставить прерывание соответсвующее 1Гц, т.е. 1 тик=1сек. Вот и все. Только вот эта строка на счет снижения системного генератора на 256, присутствувю только у Attiny13 почему-то...
Самое гениальное - всегда самое простое
- Volgol_555
- Потрогал лапой паяльник
- Сообщения: 301
- Зарегистрирован: Пт сен 23, 2011 13:13:51
- Откуда: Минск
- Контактная информация:
Re: Проблемы с микроконтроллерами AVR
Скачал я avreal, запустил. Какие команды мне нужно прописать чтобы задать частоту обращения к МК ниже 10кГц и восстановить его? Может поможет...Подскажи пожалуйста. А то с я консольными приложениями туговат.
Самое гениальное - всегда самое простое
- avreal
- Опытный кот
- Сообщения: 842
- Зарегистрирован: Чт дек 31, 2009 19:27:45
- Откуда: Бровари, Україна
- Контактная информация:
Re: Проблемы с микроконтроллерами AVR
Лучше пониже, там и номинально меньше сорока килогерц, и разброс генераторов есть.
avreal-у можно указываеть частота тактирования контроллера, дальше он пересчитывает сам (впрочем, разница есть только для AT90s1200 и AT86RF401).
Думаю, 20 кГц будет нормально. Достаточно просто стереть.
-p1 для LPT1
-e чтобы стереть
______
Ладно, побёг я домой, сегодня младшему ребёнку 15
avreal-у можно указываеть частота тактирования контроллера, дальше он пересчитывает сам (впрочем, разница есть только для AT90s1200 и AT86RF401).
Думаю, 20 кГц будет нормально. Достаточно просто стереть.
-as для STK200-совместимого адаптера (5 проводков нескольких видов бывают)avreal -as -p1 -o20 +tiny13 -e
-p1 для LPT1
-e чтобы стереть
______
Ладно, побёг я домой, сегодня младшему ребёнку 15
Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.
- Volgol_555
- Потрогал лапой паяльник
- Сообщения: 301
- Зарегистрирован: Пт сен 23, 2011 13:13:51
- Откуда: Минск
- Контактная информация:
Re: Проблемы с микроконтроллерами AVR
Спасибо большое! Сегодня же попробую - потом все расскажу!
Поздравляю с этим чудным праздником!
Поздравляю с этим чудным праздником!
Самое гениальное - всегда самое простое
- Volgol_555
- Потрогал лапой паяльник
- Сообщения: 301
- Зарегистрирован: Пт сен 23, 2011 13:13:51
- Откуда: Минск
- Контактная информация:
Re: Проблемы с микроконтроллерами AVR
Попробовал я выставить в avreal - та же фигня. Ниже 10кГц нельзя!!! А выше ставлю - не видит(
Самое гениальное - всегда самое простое
- avreal
- Опытный кот
- Сообщения: 842
- Зарегистрирован: Чт дек 31, 2009 19:27:45
- Откуда: Бровари, Україна
- Контактная информация:
Re: Проблемы с микроконтроллерами AVR
Да ну, как это...
avreal-у допустимо давать -o1, т.е. 1кГц тактирование кристалла. В SPI пойдет герц так 220 (там ещё небольшой запас делается).
Странно, что не видит. Там точно на 256 деление поставлено?
avreal-у допустимо давать -o1, т.е. 1кГц тактирование кристалла. В SPI пойдет герц так 220 (там ещё небольшой запас делается).
Странно, что не видит. Там точно на 256 деление поставлено?
Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.
-
Мастер Ломастер
- Поставщик валерьянки для Кота
- Сообщения: 1995
- Зарегистрирован: Ср май 11, 2011 21:37:45
- Откуда: Цветочный город
- Контактная информация:
Re: Проблемы с микроконтроллерами AVR
вы вот мне только расскажите: куда в тини13 внешний кварц цепляется?! фантастика какая-то...
битва с дураками проиграна, победители торжествуют. слава победителям!
- avreal
- Опытный кот
- Сообщения: 842
- Зарегистрирован: Чт дек 31, 2009 19:27:45
- Откуда: Бровари, Україна
- Контактная информация:
Re: Проблемы с микроконтроллерами AVR
ТЬХУ!!!
Пора таки вернуться к хотя бы 6-часовому сну
А из автора надо вытащить таки конкретные условия -- схему платы, программатора, что куда писал из фьюзов и вааще.
Но у меня подобная ситуация именно с тини13-той была.
Перешив CKSEL на «128 кГц» WDT-шный генератор без стирания заводского CKDIV8 получал 16 кГц тактирования ядра с соответствующей необходимостью потом сильно снижать частоту для следующей перешивки. И так много раз
Пора таки вернуться к хотя бы 6-часовому сну
А из автора надо вытащить таки конкретные условия -- схему платы, программатора, что куда писал из фьюзов и вааще.
Но у меня подобная ситуация именно с тини13-той была.
Перешив CKSEL на «128 кГц» WDT-шный генератор без стирания заводского CKDIV8 получал 16 кГц тактирования ядра с соответствующей необходимостью потом сильно снижать частоту для следующей перешивки. И так много раз
Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.
Re: Проблемы с микроконтроллерами AVR
Volgol_555, где-то я уже такую релюху корректировал...
http://radiokot.ru/forum/viewtopic.php?f=20&t=49256
там проект вроде как gensek назывался
мож чем поможет
http://radiokot.ru/forum/viewtopic.php?f=20&t=49256
там проект вроде как gensek назывался
мож чем поможет
Re: Проблемы с микроконтроллерами AVR
Давненько уже нашел выход из ситуации "CLKPR". Садите Reset на Gnd и только потом подаёте питание на МК. Теперь можно спокойно шить.
Боишся - не делай. Делаешь - не бойся.
- Volgol_555
- Потрогал лапой паяльник
- Сообщения: 301
- Зарегистрирован: Пт сен 23, 2011 13:13:51
- Откуда: Минск
- Контактная информация:
Re: Проблемы с микроконтроллерами AVR
Отвечаю на выше заданные мне вопросы. Внешнего кварца нету - есть только внутренний, который я и понизил в частоте!
Фьюзы я вообще не трогал - оставил заводские!!! Что касательно схемы соединения просто attiny13, питание и диод к нему
через резистор, а ещё кнопка одна. Что касательно программатора - тупые пять проводов, на LPT!
Avreal не позволяет задать частоту ниже 10КГц. При прописывании о1, он пишет, что можно задать в диапазоне
от 10кГц и выше либо 0, если это внешний кварц!!!
И если не сложно параллельно ответьте пожалуйста на ещё и другие вопросы, заданные выше!
Вот программа написанная на Codevision - основные настройки выставил в CodeWizard
/*****************************************************
Chip type : ATtiny13A
AVR Core Clock frequency: 0,031250 MHz
Memory model : Tiny
External RAM size : 0
Data Stack size : 16
*****************************************************/
#include <tiny13a.h>
#include <delay.h>
unsigned int msec, sec, min, hour;
unsigned int stat;
// Timer 0 output compare A interrupt service routine
interrupt [TIM0_COMPA] void timer0_compa_isr(void)
{
TCNT0=0;
if (stat==1) {sec++;}
if (sec==60) {sec=0; min++;}
}
void main(void)
{
// Crystal Oscillator division factor: 256 \\ здесь и понижается частота кварца!!! Именно после этих строк МК не читается
#pragma optsize-
CLKPR=0x80;
CLKPR=0x08;
#ifdef _OPTIMIZE_SIZE_
#pragma optsize+
#endif
// Input/Output Ports initialization
// Port B initialization
// Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State5=T State4=T State3=T State2=T State1=T State0=T
PORTB=0x08;
DDRB=0x10;
// Timer/Counter 0 initialization\\\ставлю таймер на 0,122 кГц и соответственно прерывание по достижению 122 тиков = 1 секунда/тик
// Clock source: System Clock
// Clock value: 0,122 kHz
// Mode: Normal top=FFh
// OC0A output: Disconnected
// OC0B output: Disconnected
TCCR0A=0x00;
TCCR0B=0x04;
TCNT0=0x00;
OCR0A=0x7A;
OCR0B=0x00;
// External Interrupt(s) initialization
// INT0: Off
// Interrupt on any change on pins PCINT0-5: Off
GIMSK=0x00;
MCUCR=0x00;
// Timer/Counter 0 Interrupt(s) initialization
TIMSK0=0x04;
// Analog Comparator initialization
// Analog Comparator: Off
ACSR=0x80;
ADCSRB=0x00;
// Global enable interrupts
#asm("sei")
PORTB.4=1; \ ниже тупой код программы, где мы включаем и выключаем согласно пройденному временни!!!
while (1) {
if (sec==60) {min++; sec=0;}
if (min==60) {hour++; min=0;}
if (hour==24) {hour=0;}
if (min==1) {PORTB.4=1;}
if (min==2) {PORTB.4=0;}
if (hour==1) {PORTB.4=1;}
if (hour==2) {PORTB.4=0; stat=0;}
if (PINB.3==0) {delay_us(250); stat=1; PORTB.4=0;
msec=0; sec=0; min=0; hour=0; }
}
}
Конец Кода
На счет
Фьюзы я вообще не трогал - оставил заводские!!! Что касательно схемы соединения просто attiny13, питание и диод к нему
через резистор, а ещё кнопка одна. Что касательно программатора - тупые пять проводов, на LPT!
Avreal не позволяет задать частоту ниже 10КГц. При прописывании о1, он пишет, что можно задать в диапазоне
от 10кГц и выше либо 0, если это внешний кварц!!!
И если не сложно параллельно ответьте пожалуйста на ещё и другие вопросы, заданные выше!
Вот программа написанная на Codevision - основные настройки выставил в CodeWizard
/*****************************************************
Chip type : ATtiny13A
AVR Core Clock frequency: 0,031250 MHz
Memory model : Tiny
External RAM size : 0
Data Stack size : 16
*****************************************************/
#include <tiny13a.h>
#include <delay.h>
unsigned int msec, sec, min, hour;
unsigned int stat;
// Timer 0 output compare A interrupt service routine
interrupt [TIM0_COMPA] void timer0_compa_isr(void)
{
TCNT0=0;
if (stat==1) {sec++;}
if (sec==60) {sec=0; min++;}
}
void main(void)
{
// Crystal Oscillator division factor: 256 \\ здесь и понижается частота кварца!!! Именно после этих строк МК не читается
#pragma optsize-
CLKPR=0x80;
CLKPR=0x08;
#ifdef _OPTIMIZE_SIZE_
#pragma optsize+
#endif
// Input/Output Ports initialization
// Port B initialization
// Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State5=T State4=T State3=T State2=T State1=T State0=T
PORTB=0x08;
DDRB=0x10;
// Timer/Counter 0 initialization\\\ставлю таймер на 0,122 кГц и соответственно прерывание по достижению 122 тиков = 1 секунда/тик
// Clock source: System Clock
// Clock value: 0,122 kHz
// Mode: Normal top=FFh
// OC0A output: Disconnected
// OC0B output: Disconnected
TCCR0A=0x00;
TCCR0B=0x04;
TCNT0=0x00;
OCR0A=0x7A;
OCR0B=0x00;
// External Interrupt(s) initialization
// INT0: Off
// Interrupt on any change on pins PCINT0-5: Off
GIMSK=0x00;
MCUCR=0x00;
// Timer/Counter 0 Interrupt(s) initialization
TIMSK0=0x04;
// Analog Comparator initialization
// Analog Comparator: Off
ACSR=0x80;
ADCSRB=0x00;
// Global enable interrupts
#asm("sei")
PORTB.4=1; \ ниже тупой код программы, где мы включаем и выключаем согласно пройденному временни!!!
while (1) {
if (sec==60) {min++; sec=0;}
if (min==60) {hour++; min=0;}
if (hour==24) {hour=0;}
if (min==1) {PORTB.4=1;}
if (min==2) {PORTB.4=0;}
if (hour==1) {PORTB.4=1;}
if (hour==2) {PORTB.4=0; stat=0;}
if (PINB.3==0) {delay_us(250); stat=1; PORTB.4=0;
msec=0; sec=0; min=0; hour=0; }
}
}
Конец Кода
На счет
Я попробуюjohn_rise писал(а):Давненько уже нашел выход из ситуации "CLKPR". Садите Reset на Gnd и только потом подаёте питание на МК. Теперь можно спокойно шить.
Самое гениальное - всегда самое простое
Re: Проблемы с микроконтроллерами AVR
внутренний rc генератор 9,6Мгц по умолчанию (если не менять фузы)
см. файлик http://radiokot.ru/forum/download/file.php?id=68911
как это можно сделать на Сиии ни в зуб...
см. файлик http://radiokot.ru/forum/download/file.php?id=68911
как это можно сделать на Сиии ни в зуб...



