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

 
 
 
Reply to this topicStart new topic
> Tiny26L, Чудеса при программировании
smk
сообщение Sep 9 2008, 08:09
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 246
Регистрация: 17-03-05
Из: Украина, Киев
Пользователь №: 3 446



Уже вторая тинька не отзывается. Суть в чем. Написал программу, запрограммировал и контроллер перестал отзываться. Подключение кварца ничего не дало. Что это может быть?
Вот исходный текст (hex прикрепляю):

#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>
#include <stdint.h>
#include <avr/wdt.h>


#define F_CPU 1000000UL // 1 MHz
#define time_limit 1 //(=5+Nsec*3,81)определитель задержки перед выключением
#define temp_min 16 //определитель температуры
#define temp_max 290
#define flay_off PORTB &= ~(1<<4); //выключить преобразователи (установить в 0 PORTB.4)
#define flay_on PORTB |= (1<<4); //включить преобразователи (установить в 1 PORTB.4)


volatile unsigned int N_T0_OVF;
volatile unsigned int temp_sensor;

FUSES =
{
.low = LFUSE_DEFAULT,
.high = HFUSE_DEFAULT,
};

LOCKBITS = (LB_MODE_3);

ISR(INT0_vect)
{
if(PINB & 0b01000000)
{flay_on;
TCCR0 = 0x00;
N_T0_OVF=0;}
else {TCNT0=0; TCCR0 = 0b00000101;}
}


ISR(TIMER0_OVF_vect)
{
N_T0_OVF++;
if(N_T0_OVF==time_limit)
{N_T0_OVF=0;
TCCR0=0x00;
flay_off;}
}


void read_adc_temp (void)
{
ADCSR|=0b01000000; //запустить преобразование
while ((ADCSR & 0b00010000)==0); //дождаться завершения преобразования
{asm("nop");}
ADCSR|=0b00010000; //сбросить флаг прерывания АЦП
temp_sensor=ADCW;
}


int main (void)

{
wdt_enable(WDTO_2S);
DDRB=0b01000111;
PORTB=0b00000000;
DDRA=0b00000001;
PORTA=0b00000000;
MCUCR=0b00000001;
TIMSK = 0b00000010;
GIMSK=0b01000000;
ACSR=0b10000000;
ADMUX=0b10000000;
ADCSR=0b10000011;

/*
read_adc_temp();
adc_next:
read_adc_temp();
if((temp_sensor<temp_min)||(temp_sensor>temp_max)) {goto adc_next;}
*/
asm("sei");

if(PINB & 0b01000000) {_delay_ms(20);}
if(PINB & 0b01000100) {flay_on;}

while(1)
{
/*
if((temp_sensor<temp_min)||(temp_sensor>temp_max))
{flay_off; asm("cli");}
else
{goto adc_next;}
*/
asm("nop");
wdt_reset();
}

return 0;

}

Сообщение отредактировал smk - Sep 9 2008, 08:11
Прикрепленные файлы
Прикрепленный файл  ______IBP_MTV_T26.zip ( 523 байт ) Кол-во скачиваний: 30
 


--------------------
Живи днем так, чтобы ночью ты спал спокойно.
Go to the top of the page
 
+Quote Post
Палыч
сообщение Sep 9 2008, 08:15
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(smk @ Sep 9 2008, 11:09) *
...и контроллер перестал отзываться.
Это - что значит? Программатором не читается, не пишется? Тогда - неправильно выставленны фузы...
Go to the top of the page
 
+Quote Post
Corvus
сообщение Sep 9 2008, 08:19
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 771
Регистрация: 24-04-08
Из: Зеленоград
Пользователь №: 37 056



С 99% вероятностью - неправильно выставлены фьюзы, задающие режим тактирования.
Go to the top of the page
 
+Quote Post
smk
сообщение Sep 9 2008, 08:21
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 246
Регистрация: 17-03-05
Из: Украина, Киев
Пользователь №: 3 446



Цитата
Программатором не читается, не пишется?

Да.
Цитата
Тогда - неправильно выставленны фузы...

Так вроде бы .low = LFUSE_DEFAULT, .high = HFUSE_DEFAULT,


--------------------
Живи днем так, чтобы ночью ты спал спокойно.
Go to the top of the page
 
+Quote Post
Lem
сообщение Sep 9 2008, 08:24
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 37
Регистрация: 20-03-05
Пользователь №: 3 533



подключите внешнее тактирование и запрограммируйте правильно фьюзы
Go to the top of the page
 
+Quote Post
Палыч
сообщение Sep 9 2008, 08:25
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Не знаю: что такое DEFAULT... Как реанимировать - поищите по форуму. Тут такого - каждый месяц по вопросу...
Go to the top of the page
 
+Quote Post
smk
сообщение Sep 9 2008, 08:27
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 2 246
Регистрация: 17-03-05
Из: Украина, Киев
Пользователь №: 3 446



Цитата
подключите внешнее тактирование и запрограммируйте правильно фьюзы

Да уже начинаю ваять че-то на 1 МГц. Другое дело, почему они оказались неверно запрограммированы?

Цитата
Не знаю: что такое DEFAULT...

Это значит запрограммировать как при заводской установке.


--------------------
Живи днем так, чтобы ночью ты спал спокойно.
Go to the top of the page
 
+Quote Post
Палыч
сообщение Sep 9 2008, 08:29
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(smk @ Sep 9 2008, 11:27) *
Это значит запрограммировать как при заводской установке.
Тогда, зачем их программировать - они и так уже установлены.
Go to the top of the page
 
+Quote Post
smk
сообщение Sep 9 2008, 09:07
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 2 246
Регистрация: 17-03-05
Из: Украина, Киев
Пользователь №: 3 446



Цитата
Тогда, зачем их программировать - они и так уже установлены.

Привычка.

Посмотрел файл fuse в библиотеке. Кажись там ошибка. Если я правильно понял, то сейчас фузы установлены так, что нужен часовой кварц 32,768 кГц. Как в этом случае лучше тактировать, если кварца нет?

Было: #define LFUSE_DEFAULT (FUSE_CKSEL1 & FUSE_CKSEL2)

Исправил на: #define LFUSE_DEFAULT (FUSE_CKSEL1 & FUSE_CKSEL2 & FUSE_CKSEL3 & SUT0)

как сказать теперь разработчикам?

Всем спасибо. Разобрал часы, вынул кварц, подключил. Заработало. А библиотеку нужно править.

Сообщение отредактировал smk - Sep 9 2008, 08:49


--------------------
Живи днем так, чтобы ночью ты спал спокойно.
Go to the top of the page
 
+Quote Post
aesok
сообщение Sep 9 2008, 09:23
Сообщение #10


Знающий
****

Группа: Участник
Сообщений: 596
Регистрация: 26-05-06
Из: Москва
Пользователь №: 17 484



Цитата(smk @ Sep 9 2008, 13:07) *
Было: #define LFUSE_DEFAULT (FUSE_CKSEL1 & FUSE_CKSEL2)

Исправил на: #define LFUSE_DEFAULT (FUSE_CKSEL1 & FUSE_CKSEL2 & FUSE_CKSEL3 & SUT0)

как сказать теперь разработчикам?

.... А библиотеку нужно править.


Здесь можно сказать:
http://savannah.nongnu.org/bugs/?group=avr-libc

Анатолий

Сообщение отредактировал aesok - Sep 9 2008, 09:23
Go to the top of the page
 
+Quote Post
smk
сообщение Sep 9 2008, 09:47
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 2 246
Регистрация: 17-03-05
Из: Украина, Киев
Пользователь №: 3 446



Цитата
Здесь можно сказать:
http://savannah.nongnu.org/bugs/?group=avr-libc

Анатолий


Спасибо. Попробую.

Сообщение отредактировал smk - Sep 9 2008, 10:06


--------------------
Живи днем так, чтобы ночью ты спал спокойно.
Go to the top of the page
 
+Quote Post
Lem
сообщение Sep 9 2008, 12:06
Сообщение #12


Участник
*

Группа: Участник
Сообщений: 37
Регистрация: 20-03-05
Пользователь №: 3 533



при любом положении фузов при подаче внешнего тактового сигнала работать кристалл будет (программироваться)
Go to the top of the page
 
+Quote Post
smk
сообщение Sep 9 2008, 12:20
Сообщение #13


Гуру
******

Группа: Свой
Сообщений: 2 246
Регистрация: 17-03-05
Из: Украина, Киев
Пользователь №: 3 446



Цитата
Здесь можно сказать:
http://savannah.nongnu.org/bugs/?group=avr-libc

Не могу понять куда там писать. Может Вы вместо меня сообщите про вышеупомянутое?
Цитата
при любом положении фузов при подаче внешнего тактового сигнала работать кристалл будет (программироваться)

Спасибо. Уже все получилось. Читайте выше что было и не попадайтесь. Удачи!


--------------------
Живи днем так, чтобы ночью ты спал спокойно.
Go to the top of the page
 
+Quote Post
Itch
сообщение Sep 9 2008, 12:34
Сообщение #14


Местный
***

Группа: Свой
Сообщений: 358
Регистрация: 27-06-06
Из: Новосибирск
Пользователь №: 18 410



Цитата
при любом положении фузов при подаче внешнего тактового сигнала работать кристалл будет (программироваться)

А подать внешний сигнал можно например с линии LED STK200, если шить avreal'ом.
Go to the top of the page
 
+Quote Post
Stepan_L
сообщение Sep 17 2008, 06:47
Сообщение #15


Участник
*

Группа: Участник
Сообщений: 59
Регистрация: 26-08-08
Из: Ереван
Пользователь №: 39 828



я + к совету LEM


--------------------
ARM_enia
Go to the top of the page
 
+Quote Post

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

 


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


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