Jump to content

Ну очень странное поведение ATmega2560


Vit@lik
 Share

Recommended Posts

Здравствуйте, пишу программу на АТмега2560. И возникла очень странная проблема.
Код такой:

#define F_CPU 16000000

#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>
#include <stddef.h>
#include <math.h>
#include <avr/eeprom.h>
#include <avr/wdt.h>

//#include "timer.h"
//#include "Output_devices/status_led.h"

int main(void){
	cli();
	//status_led_init();
	DDRB |= (1<<PB6);
	//timer0_init();
	//timer2_init();
	TIMSK0 |= (1<<TOIE0); // enable timer 0 overflow interrupt
	TCCR0B |= (1<<CS00) |(1<<CS01); // set timer 0 prescaler factor to 64
	sei();
	
	PORTB |= (1<<PB6);
	_delay_ms(200);
	PORTB &= ~(1<<PB6);
	_delay_ms(200);
	PORTB |= (1<<PB6);
	_delay_ms(200);
	PORTB &= ~(1<<PB6);
	_delay_ms(200);
	PORTB |= (1<<PB6);
	_delay_ms(200);
	PORTB &= ~(1<<PB6);
	
    while (1) {		
	}//while1
	
}

Внешний кварц 16мгц на XTAL1 и XTAL2.
На заводских фюзах работает.
Но на фюзах взятых из арудино мега не работает. Светодиод на PB6 просто светится непрерывно. Но если закомментировать инициализацию таймера-0 работает. Как это? В чем проблема?

Screenshot_7.png

Screenshot_8.png

Edited by Vit@lik
Link to comment
Share on other sites

Выяснил, проблема была в фьюзе BOOTRST. 
Но при чем здесь инициализация таймера и почему светился светодиод?...

Link to comment
Share on other sites

MORNSUN – это не только модули. Собственные микросхемы известного производителя ИП
Производитель популярных модулей электропитания MORNSUN помимо них предлагает также микросхемы ШИМ-контроллеров для AC/DC и DC/DC, микросхемы запуска (стартеры) для этих ШИМ-контроллеров, драйверы интерфейсов RS-485 и CAN и микросхемы изоляторов для гальванической развязки интерфейсов и цифровых сигнальных линий. В некоторых случаях эти изделия превосходят по характеристикам изделия европейских и американских производителей.

Читать статью >>
 

Прерывание таймера разрешили, а самого тела прерывания нет. Поэтому происходит постоянный перезагруз МК. Сам светодиод включается при инициализации порта, далее первая же задержка не успевает отработать, как наступает событие прерывания. МК выбрасывает в таблицу прерываний за инструкцией перехода на обработчик, а его нет(!!!). Происходит смещение по куче NOP и МК попадает опять на начало программы, т.е. опять инициализация и включение светодиода... И так по кругу.

Link to comment
Share on other sites

Приглашаем на вебинар «Актуальные вопросы о продукции и планах MEAN WELL в России»(13/10/2022)

Приглашаем 13 октября всех желающих присоединиться к вебинару, который будет проводить компания КОМПЭЛ совместно с представителями бренда MEAN WELL. 

Вебинар будет посвящен новинкам продукции, планам MEAN WELL на следующий год, аналогам продукции ушедших из РФ брендов, особенностям работы в текущих условиях, возможностях субдистрибьюции и другим вопросам. Мероприятие пройдет в формате живого диалога.  Подробнее>>

5 часов назад, Геннадий сказал:

а самого тела прерывания нет

ISR(TIMER0_OVF_vect){
	/*
	timer0_millis += 1;
	timer0_fract += 3;
	if (timer0_fract >= 125) {
		timer0_fract -= 125;
		timer0_millis += 1;
	}
	timer0_overflow_count++;
	*/
}

Есть. Но это ни на что не влияло и ничего не изменило. Пытался включить светодиод в прерывании но он не включался такое впечатление что оно не вызвалось вообще.
Я перепробовал все варианты, прежде чем писать сюда.

Link to comment
Share on other sites

Литиевые батарейки FANSO EVE Energy для потребительской электроники
В электронных устройствах потребительского сегмента широко применяются различные литиевые батарейки. Наиболее востребованными являются дисковые и цилиндрические элементы питания, а также батареи типа «Крона». Практически любой подобный источник тока можно найти в номенклатуре компании FANSO EVE Energy.

Читать подробнее>>

19 минут назад, korsaj сказал:

TCCR0A и TIFR0

а что с ними нужно делать? TIFR кажется сам выставляется. А в TCCR0A ничего не нужно настраивать

Link to comment
Share on other sites

А вы уверены что TCCR0A  после сброса мк будет равен 0 или в регистре TIFR0 не будет взведет какой нибудь флаг?

Спойлер


 

.cseg
.org	0
	rjmp	Start	; Ïåðåõîä íà Start ïî ñáðîñó

.org	OVF0addr	; Timer/Counter0 Overflow
	rjmp	Timer0Ovf
;----------------------------------------------------
Timer0Ovf:
	inc		r16
	cpi		r16, 0x14
	brne	ExirTimer0Ovf
	clr		r16
		
	sbic	PORTB, PB0
	rjmp	ClrPortbit
	sbi		PORTB, PB0
	reti

ClrPortbit:
	cbi		PORTB, PB0
ExirTimer0Ovf:
	reti

;----------------------------------------------------
Start:
	ldi		r16, 0
	out		PORTB, r16

	ldi		r16, 0xFF
	out		DDRB, r16

	ldi		r16, 0
	out		TCCR0A, r16

	ldi		r16, (1<<CS00) |(1<<CS01)
	out		TCCR0B, r16

	ldi		r16, 1<<TOIE0
	sts		TIMSK0, r16

	ldi		r16, 0xFF	
	out		TIFR0, r16

	clr		r16

	sei
;----------------------------------------------------
Loop:
	rjmp Loop
;----------------------------------------------------


 

Edited by korsaj
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Сообщения

    • Так, один канал на радиатор разместил. Это конечно целый квест)))) Но тут сам немного неправильно начал собирать радиатор, второй немного по другому буду собирать, т. е. в другой последовательности) Пускать буду наверное завтра, сегодня что-то не то настроение.  А вот заготовка для корпуса, тоже надо будет допиливать, подгонять. Ещё то веселье)))) 
    • Ответ очень простой: То, что написано в даташите на конкретный конденсатор, превышать нельзя. Если в даташите этого нет, или вообще даташита нет, - то конденсатор в таком режиме использовать нельзя. Всё остальное - от Лукавого. Обсуждать бессмысленно.
    • @SergeyKa , это вопрос не для коротенького ответа "да - нет" на форуме. Тут надо немного самообразованием заняться. Почитайте хотя бы про Основные типы антенн.
    • Как нарисовано на схеме три керамические конденсатора возле кренки, так вы их и поставили возле кренки, а надо возле проца, возле каждой ножки, на которою подается питание, свой. Саму кренку тоже расположите на плате проца. Конденсаторы кварца, выводы которые идут на корпус, делайте мин длины и подключите их на общий минус к ближайшему выводу проца. ps. На фото кренки, после электролита перед керамическими конденсаторами, что стоит, дроссель? На таком длинном общем проводе осциллографа(тот, что с крокодилом) вы не только наводку будете ловить, но и голос америки.
    • Вот что обнаружил, можно сказать случайно, замкнул пальцем контакты переменника чувствительности, ложняки пропали  регулятор работает как и должен. Чуйка в норме. Отпускаю начинаются ложняки, получается когда замыкаю резистор R38 24ком что с переменника идет на +4v. мд начинает работать нормально. Переменника пробовал два обычный линейный на 10ком и заказанный специально многооборотник, результат одинаковый. Может ли быть проблема в lm393? Пытался искать осциллограмы, напряжения какие на ней должны быть, но не нашел.А можно ли менять провода идущие от платы к разъему? Вроде они в норме, правда пока перепаивал оплетка по сползала немного, думал заменить как доведу прибор до ума.
    • Выкладываю схему защиты от перегрузки, далее описание привязано к схеме предыдущего поста Питающее напряжение от сервисного выпрямителя с разъемов Х1-2 Х2-2 20 В Датчик тока Т3 вторичка 50 витков  нагружена на R1 , далее попадает в схему сравнения через делители R2,R3,R4. Подбором оных возможно регулировать ток в широком диапазоне. При перегрузке выходов Х3-1 Х2-1 20 В , либо Х3-1 Х1-1 40 В, напряжении на управляющем электроде D5 TL431(через делители R2,R3,R4) нарастает свыше 2,48 В приоткрывается D5 и открывается Т1 и вызывает открытие симистора VS1, который блокирует обмотку L3 коммутирующего дросселя, вызывая срыв автогенерации. Так как запускающая цепь на динисторе D2 отключена, то повторный запуск только в ручном режиме. R7 форсирует открытие D5 . Несколько нюансов: Логично было бы использовать оптосимистор MOC30**, но в результаты тестирования показали слабую стойкость к скорости нарастания напряжения(самовключение) и слабый рабочий ток MOC30** не дает блокировать обмотку L3 коммутирующего дросселя, из-за чего выбран симистор BTA16(какой имелся). Ток блокировки на тестах примерно 420 мА. Температурная стабильность высокая и зависит только от TL431. Чего не сказать о датчике тока на Т3 - напряжение на обмотке 3-4 плавает от температуры и от частоты автогена. Может кто знает как улучшить данный токосъемник Хотя защита устойчиво срабатывает от 3,6 А до 4,5 А, это приемлемо даже вполне. Ну и сам датчик маленькое колечко, 50 виток МГТФ и силовой проводник продетый сквозь кольцо - чего уж проще. Данную защиту с блокировкой коммутирующего дросселя  можно встроить в любой автоген полумостовой, мостовой Всем удачи и здравия    
  • Similar Content

×
×
  • Create New...