Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы
Непрочитано 14.07.2008, 22:15  
Lockdog
Временная регистрация
 
Регистрация: 11.06.2006
Сообщений: 89
Сказал спасибо: 25
Сказали Спасибо 12 раз(а) в 12 сообщении(ях)
Lockdog на пути к лучшему
По умолчанию Магический МК

В общем не знаю, что и делать...
Есть МК ATmega16, на 4 ноги DDRB (порты настроены на выход) должно подаваться 1 0 1 0...
Но иногда там вообще корявое напряжение, колеблется от 1,2 до 3,5 Вольт...

Всё прошивается нормально, проверял на 2-ух МК, кондёры стоят и на питании самого МК и на питании АЦП, и на 78L05 стоят кондёры, поставил внешний кварц, на нём тоже кондёры, ресет подтянут резистором на плюс...
Что ещё сделать можно? Странные глюки...
Реклама:
Lockdog вне форума  
Непрочитано 14.07.2008, 22:31  
lsa
Почётный гражданин KAZUS.RU
 
Аватар для lsa
 
Регистрация: 22.06.2004
Адрес: Харьков
Сообщений: 1,488
Сказал спасибо: 3,207
Сказали Спасибо 3,010 раз(а) в 686 сообщении(ях)
lsa на пути к лучшему
По умолчанию

С завода поступают МК в активированным JTAG.
За счет этого не работает нормально порт С, возможно даже и В.
Нужно отключить JTAG через фузы.
lsa вне форума  
Непрочитано 15.07.2008, 09:22  
icebergod
Прохожий
 
Регистрация: 29.11.2006
Сообщений: 8
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
icebergod на пути к лучшему
По умолчанию

У вас так:
DDRB = 0x0F;
PORTB = 0x05; // или = 0х0A;
Я правильно понял?
icebergod вне форума  
Непрочитано 15.07.2008, 11:54  
Bear-ku
Временная регистрация
 
Регистрация: 06.06.2007
Сообщений: 55
Сказал спасибо: 2
Сказали Спасибо 10 раз(а) в 10 сообщении(ях)
Bear-ku на пути к лучшему
По умолчанию

Если измерение проводится вольтметром, то все в норме, т.к. влияет форма сигнала.
Если это показания осциллографа,
1. проверить программу на возможность установки порта на вход или програмный пересброс МК.
2. убедиться в отсутсвии внешнего сброса МК в эти моменты.
Bear-ku вне форума  
Непрочитано 15.07.2008, 21:13  
Lockdog
Временная регистрация
 
Регистрация: 11.06.2006
Сообщений: 89
Сказал спасибо: 25
Сказали Спасибо 12 раз(а) в 12 сообщении(ях)
Lockdog на пути к лучшему
По умолчанию

JTAG тут не при чём, иногда всё нормально работает, вот сеййчас включил, померил, всё в норме...
а код выглядит так:
Код:
DDRB = 0xFF;

PORTB |= 1‹‹0;
PORTB &= ~(1‹‹1);
PORTB |= 1‹‹2;
PORTB &= ~(1‹‹3);
Измеряю вольтметром
Lockdog вне форума  
Непрочитано 16.07.2008, 00:08  
Churchill
Прописка
 
Регистрация: 23.03.2008
Сообщений: 121
Сказал спасибо: 4
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
Churchill на пути к лучшему
По умолчанию

и переключение идет с частотой пары мегагерц???? А как вольтметр будет мерять такой сигнал???? И сброс собачки надеюсь выполняется?
Churchill вне форума  
Непрочитано 16.07.2008, 07:18  
Bear-ku
Временная регистрация
 
Регистрация: 06.06.2007
Сообщений: 55
Сказал спасибо: 2
Сказали Спасибо 10 раз(а) в 10 сообщении(ях)
Bear-ku на пути к лучшему
По умолчанию

Код:
DDRB = 0xFF;

PORTB |= 1‹‹0;
PORTB &= ~(1‹‹1);
PORTB |= 1‹‹2;
PORTB &= ~(1‹‹3);
информативно. Говорит о том что порты установлены. Но... в этом отрывке объяснения проблемы не найти. Лучше выложить всю програмку. Тогда можно будет точно сказать есть в ней ошибки или надо смотреть железо.

Схема тоже не помешает.
Bear-ku вне форума  
Непрочитано 16.07.2008, 10:25  
Lockdog
Временная регистрация
 
Регистрация: 11.06.2006
Сообщений: 89
Сказал спасибо: 25
Сказали Спасибо 12 раз(а) в 12 сообщении(ях)
Lockdog на пути к лучшему
По умолчанию

Никакого переключения не идёт, сейчас это и есть вся программа, потому что я её написал, как раз, чтобы программные ошибки точно были ни при чём
Lockdog вне форума  
Непрочитано 16.07.2008, 13:02  
Bear-ku
Временная регистрация
 
Регистрация: 06.06.2007
Сообщений: 55
Сказал спасибо: 2
Сказали Спасибо 10 раз(а) в 10 сообщении(ях)
Bear-ku на пути к лучшему
По умолчанию

Сообщение от Lockdog
Никакого переключения не идёт, сейчас это и есть вся программа, потому что я её написал, как раз, чтобы программные ошибки точно были ни при чём
хм.. может в этом проблема?

"Loop:
nop ;ничего не делаем
goto Loop ;переходим на метку Loop

Этими тремя сточками мы реализовали простейший цикл, который заставит бесконечно крутиться микроконтроллер. Первой строкой идет метка Loop, ее микроконтроллер пропускает, но запоминает куда ему нужно будет вернуться. Затем идет команда nop. Она говорит МК ничего не делать. А потом идет команда goto Loop, эта команда безусловного перехода, если перевести на человеческий язык принцип ее работы, то получится примерно следующее: «А теперь возьми и вернись на метку Loop». То есть мы просто перескочим на метку, которую сами и создали и МК снова приступит к выполнению команды nop.

Зачем же надо создавать этот цикл? В принципе, его можно и убрать, но в таком случае я за действия программы уже не отвечаю. Помните, я рассказывал вам про память программы? Так вот, после того, как мы скомпилируем текст нашей программы, у нас получится .hex файл, который нам нужно будет прошить в микроконтроллер. Во время прошивки наша программа как раз и заносится в память программ. Начиная с адреса 0x0000. Так вот, при запуске МК у нас автоматически начинается исполнение команды с этого адтеса. Если бы мы не зациклили нашу программу, то МК дошел бы до конца нашей программы, а потом просто продолжил бы последовательно «выдергивать» команды из памяти программ и выполнять их. Дойдя до последнего адреса памяти, он бы снова перескочил на адрес 0x0000, и все пошло по кругу. То есть заново бы стал выполнять преобразование регистров. Нам такого «счастья» не надо. Мы просто зациклили МК на выполнение одной команды nop, и сидим любуемся на горящие светодиоды."
http://www.pcports.ru/articles/picASM1.php
Bear-ku вне форума  
Непрочитано 16.07.2008, 13:27  
Lockdog
Временная регистрация
 
Регистрация: 11.06.2006
Сообщений: 89
Сказал спасибо: 25
Сказали Спасибо 12 раз(а) в 12 сообщении(ях)
Lockdog на пути к лучшему
По умолчанию

хм, то есть, мне этот кода надо запихнуть в цикл while(1)?

Надо будет проверить, но по-моему я так уже делал и проблема не решилась
Lockdog вне форума  
 

Закладки
Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Магический Квадрат Как они это делают? strannicmd Отвлекитесь, эмбеддеры! 3 26.11.2006 01:58
Магический Квадрат! Xabarik Отвлекитесь, эмбеддеры! 0 03.11.2006 20:47


Часовой пояс GMT +4, время: 17:59.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot