Перейти к содержанию
    

Проблема запуска Tiny26

В тестовой программе только инициализация порта Б как выхода.

На выводы кроме VCC и GND ничего не повешено (все в воздухе).

Никакие фьюзы не трогал.

Прошивается понипрог-ом нормально.

Вочдог выключен.

 

При подаче питания перегружается с частотой 2-3 раза в сек (это видно по порту Б и питанию).

 

Буду признателен, если подскажете в чем дело.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

На выводы кроме VCC и GND ничего не повешено (все в воздухе).

 

При подаче питания перегружается с частотой 2-3 раза в сек (это видно по порту Б и питанию).

 

 

по питанию кондер висит?

 

рекомендую вывод сброса подтянуть резистором к питанию.

 

И что значит

(это видно по ... и питанию).
я имею ввиду как вы это по питанию определяете?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

по питанию кондер висит?

 

рекомендую вывод сброса подтянуть резистором к питанию.

 

И что значит я имею ввиду как вы это по питанию определяете?

 

Да конденсатор по питанию есть , правда в 30 см от МК.

Резет подтянул , тот же результат.

По питанию видно , если запитать слабеньким ИП видно горбики на осциллограмме. А с нормальным ИП чисто. Только порт "пляшет".

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Может в программе проблема? После инициализации цикл стоит?

 for(;;); или while(1);

Изменено пользователем Sanya_kv

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Может в программе проблема? После инициализации цикл стоит?

 for(;;); или while(1);

 

кстати, хорошая идея !!! Наверняка именно в этом и причина.

 

а может человек на asm пишет, тогда

 a:    rjmp a

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

кстати, хорошая идея !!! Наверняка именно в этом и причина.

 

а может человек на asm пишет, тогда

 a:    rjmp a

 

void main(void)
{
  int i;
  init_devices();  // app-builder
}

 

думаю в сторону программатора , потому как производил с ним некоторые действия , хотя как неисправный программатор может корректно прошить , сказать ОК

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

void main(void)
{
  int i;
  init_devices();  // app-builder
}

 

думаю в сторону программатора , потому как производил с ним некоторые действия , хотя как неисправный программатор может корректно прошить , сказать ОК

 

 

Попробуй так:

void main(void)
{
  int i;
  init_devices();  // app-builder
while(1)
{
}
}

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

думаю в сторону программатора

 

программатор тут не причем

 

делайте как вам сказал at90 и будет все работать.

 

в случае отсутствия

while(1);

контроллер продолжает выполнять программу после функции

init_devices(); // app-builder

, а там ничего нету ( 0xFF ). И контроллер не может декодировать код 0xFF идет с следующей ячейке памяти программ, а там опять 0xFF. И так далее пока не дойдет до конца памяти программ и потом перейдет к ячейке памяти с нулевым адресом и начнет все сначала.

А строка

while(1);

заставляет застрять его на этом месте.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

в случае отсутствия while(1); контроллер продолжает выполнять программу после функции init_devices(); , а там ничего нету...
Будет очень странно если всё дело - именно в этом. Обычно вызов main производится, примерно, так

    XCALL   main
__exit:
    SLEEP
    RJMP    __exit

поэтому, на непрошитую область памяти выполнение выйти не может. Причины же описанного выше безобразия мне видятся две

1. Запрограммирован fuse WDTON (несмотря на заверения автора вопроса о том, что fuses - не трогал)

2. В программе выполняется еще что-то кроме настройки PORTB на вывод, что приводит к перезагрузке. Например, инициализация таймера и разрешение прерываний, а соответствующего обработчика прерываний - нет. Желательно увидеть всю программу, а не только main.

 

P.S. Не заметил, что это для t26 в которой fuse WDTON отсутствует. Первую причину можно отмести. Остаётся вторая, ну и ещё, конечно же, - плохое питание МК.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да конденсатор по питанию есть , правда в 30 см от МК.

26-я возбуждается если до конднсатора более 5-10 см проводников. Вынужден был ставить под микросхему smd керамику 0.1 мкф. Все проблмы пропали. А до этого стоял пеночный 0.1мкф в 5 см от микросхемы и ее колбасило.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Будет очень странно если всё дело - именно в этом.

 

Ой, ошибся :)

 

Никогда не смотрел как это делает компилятор.

Просто всегда использовал while(1)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Дело не в while(1) - ради интереса попробовал.

Поставил керам конденсатор у самого тини26.

 

Результат тот же. Порт А , вместо Б.

По осциллограме PORTА относительно +VCC:

60ms - А притянут к земле ,

60ms - А высокоимпендасный ,

итд.

 

Фьюзы все по умолчанию.

Ошибка ведь гдето рядом, и скорее всего элементарная. Паяю редко, могу ошибится.

 

Кто это интересно перенес тему в "начинающим"?

 

#include <iot26v.h>
#include <macros.h>

void port_init(void)
{
PORTB = 0x00;
DDRB  = 0x00;
PORTA = 0x00;
DDRA  = 0x40;
}

void init_devices(void)
{
CLI(); //disable all interrupts
port_init();

MCUCR = 0x00;
TIMSK = 0x00; //timer interrupt sources
GIMSK = 0x00; //interrupt sources
PLLCSR = 0x00; //PLL
SEI(); //re-enable interrupts
}

void main(void)
{
 int i;

 init_devices();

 while(1);

 return ;
}

Изменено пользователем Roth

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ошибка ведь гдето рядом, и скорее всего элементарная. Паяю редко, могу ошибится.

 

Попробуйте проанализировать регистр MCUSR. Выводом его значения в порт. И по состоянию выводом определите причину сброса контроллера.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Всем спасибо за советы!

 

Проблема разрешилась программным отключением вочдог таймера.

Почему он включен по умолчанию именно на этом экземпляре attiny26L-8pu не понятно.

На других экземплярах я не отключал вочдог, и все прекрасно работает.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...