![]() |
Модераторы: PILOT, ManiaK, Mazzi |
![]() ![]() ![]() |
|
makwen |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 163 Регистрация: 9.11.2005 Где: Киев Репутация: 1 Всего: 1 |
ты обьявил i как unsigned int, который имеет размер 2 байта. Т.е. максимальное значение 65535, а у тебя условие i<400000, соответственно оно всегда будет верно. И ты с цикла никогда не выйдешь. |
|||
|
||||
Mazzi |
|
|||
![]() Правильный ![]() ![]() Профиль Группа: Комодератор Сообщений: 825 Регистрация: 3.4.2003 Репутация: 9 Всего: 21 |
Схема содержит короткое замыкание по питанию, смотри вывод 30.
Почитай вот это, там похоже такая же проблема с фьюзами. http://forum.vingrad.ru/act-ST/f-36/t-2374.../p-1707132.html Фьюзы для 64 меги описаны здесь http://ulei.by.ru/Fuses_Ru.htm Удачи! -------------------- Мне нужны помощники. |
|||
|
||||
seatouch |
|
|||
Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 27.11.2008 Репутация: нет Всего: нет |
[QUOTE=Mazzi,2.12.2008, 15:57]Схема содержит короткое замыкание по питанию, смотри вывод 30.
Почитай вот это, там похоже такая же проблема с фьюзами. http://forum.vingrad.ru/act-ST/f-36/t-2374.../p-1707132.html Фьюзы для 64 меги описаны здесь http://ulei.by.ru/Fuses_Ru.htm Удачи! Сорри, у меня там конденсатор стоит 0.1 мкФ. Это я чего-то маху в схеме дал. Перед установкой МК на место я всю схему прозвонил на КЗ. Спасибо за ссылку, покопаю. Это сообщение отредактировал(а) seatouch - 2.12.2008, 16:54 |
|||
|
||||
seatouch |
|
|||
Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 27.11.2008 Репутация: нет Всего: нет |
УРА!!! Светодиод заморгал. Схема нормальная, программатор работает.
Правда кроме с.д. больше ничего не работает. Буду с кодом разбираться. Больше всего меня беспокоит вопрос как посмотреть и прошить fuse биты? Порыл инет, куча описания как и что такое fuse, а как дело доходит до прошивки, предлагаются разные программы, у меня програматор "Жгучий кабель" со спец. программой (командной ктрокой) http://www.atmel.ru/Hardware/Hardware5.htm через общеизвесные программы он не прошивает, им можно как-нибудь посмотреть fuse биты? |
|||
|
||||
Mazzi |
|
|||
![]() Правильный ![]() ![]() Профиль Группа: Комодератор Сообщений: 825 Регистрация: 3.4.2003 Репутация: 9 Всего: 21 |
Поищи программатор UniProf - он схемно очень прост (6 резисторов и 3 диода) и позволяет шить фьюзы.
Могу выслать. -------------------- Мне нужны помощники. |
|||
|
||||
seatouch |
|
|||
Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 27.11.2008 Репутация: нет Всего: нет |
Спасибо!
|
|||
|
||||
seatouch |
|
|||
Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 27.11.2008 Репутация: нет Всего: нет |
Спасибо огромное Всем за помощь! Фьюзы не менял, значит они правильные. Привожу работающий код АЦП для ATMega644 на Си (AVRStudio + AVR-GCC).
#include <avr\io.h> #include <avr\delay.h> volatile unsigned int iDelay, i ; //время задержки моргания светодиода. volatile unsigned char cADCReg, cADCResult ; void main(void) { /* Использовать для АЦП будем только ножку PA0, она не будет использоваться как цифровой вход, по этому в регисте DIDR0 бит ADC0D устанавливаем в 1. */ DIDR0=0x01 ; /* Светодиод подключен к PB0, значит эту ножку мы програмируем на выход. */ DDRB = 0x01 ; PORTB = 0b11111110 ; /* Настройка АЦП. Что бы на ножку AREF подавалось внутреннее напряжение 2.56V надо в битты REFS1 и REFS0 написать единицы. Бит ADLAR устанавливается в 1 т.к. это сдвигает биты влево нас это устраивает т.к. нам не нужна большая точность, достаточно 8и старших битов. . Биты MUX4-0 устанавливаем в 0 т.к. в этом случае измерение будет проводится с ножки ADC0. Число в регистре должно быть таким 11 1 00000 = */ ADMUX = 0b11100000 ; ADCSRA = 0b10000000 ; //Можно установить деление в 3х младших битах ADCSRA. //Но пока оставляем их в нулях. while (1) { //Запускаем АЦП ADCSRA|=0x40; // как только измерение закончится //этот бит пропадет, зато установится // бит ADIF. //Ждем завершения преобразования cADCReg = 0b01010000 & ADCSRA ; while (cADCReg != 0b00010000) { cADCReg = 0b01010000 & ADCSRA ; //Делаем поразрядное "и" //что бы оставить только //нужные нам биты ADSC и ADIF. } //Считываем данные ADCH (только старших бит) cADCResult = ADCH ; //Расчиттываем задержку моргания светодиода iDelay = cADCResult * 40 ; //умножаем число на 40 это будет время задердки моргания светодиода i=0 ; while (i<iDelay) { i++ ; } ; PORTB = PORTB ^ 0x01 ; } } |
|||
|
||||
cardinal |
|
|||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 8 Всего: 99 |
seatouch, пользуйся тегом "Код"!
Добавлено через 1 минуту и 47 секунд Кто кто? ![]() -------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Микроконтроллеры (MCU) и микропроцессоры (MPU)" | |
|
На данный раздел помимо Правил форума распространяются текже следующие правила:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, PILOT, ManiaK, UniBomb, Mazzi. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Микроконтроллеры (MCU) и микропроцессоры (MPU) | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |