порт D- atmega64L

Обсуждаем контроллеры компании Atmel.
Ответить
Грызет канифоль
Аватара пользователя
Сообщения: 287
Зарегистрирован: Сб янв 23, 2016 00:59:59
Откуда: Чебоксары

Сообщение ROMan2947 »

Приветствую!Прошу подсказать где поставить запятую, КАЗНИТЬ НЕЛЬЗЯ ПОМИЛОВАТЬ! Ну а по делу такая ситуация: не программируется порт D. ни DDRD ни PORTD. пишу стандартно DDRD=0xFF;отладчик останавливаю после команды, а там фиг,все как было.Хотел использовать TWI, подтянул резисторами к VCC, а там МК воще в аут уходит.на не подключённых выводах напряжение 2.8 В,на других портах по нолям... Проверил все порты, все Ок, а этот упёрся. Нет ли там каких-то секретов? в даташит ничего особенного не нашёл,все как обычно вроде.
Реклама
Собутыльник Кота
Аватара пользователя
Сообщения: 2723
Зарегистрирован: Пт сен 07, 2018 20:20:02
Откуда: деревня в Тульской губернии

Сообщение ПростоНуб »

А можно увидеть что получилось в ассемблере? Просто чтобы убедиться, что при Ваших параметрах/дефайнах компиляции Вы обращаетесь к адресу регистров порта D именно ATMega64/L, а не какой-то другой ATMega.
Реклама
Друг Кота
Аватара пользователя
Сообщения: 15599
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

Порт работает как порт ежли не включены аппаратные модули.
Когда включен аппаратный модуль на соответствующих выводах порта работа в режиме порта отключается.
Бывают и нюансы - но то внимательно вычитывать надо как относительно самого порта, так и относительно используемого аппаратного модуля. В данном случае - похоже модуль TWI используется - следловательно смотрим описание работы его лапок.
8)
Грызет канифоль
Аватара пользователя
Сообщения: 287
Зарегистрирован: Сб янв 23, 2016 00:59:59
Откуда: Чебоксары

Сообщение ROMan2947 »

[uquote="ПростоНуб",url="/forum/viewtopic.php?p=3637086#p3637086"]А можно увидеть что получилось в ассемблере? Просто чтобы убедиться, что при Ваших параметрах/дефайнах компиляции Вы обращаетесь к адресу регистров порта D именно ATMega64/L, а не какой-то другой ATMega.[/uquote]

это на С
Спойлер

Код: Выделить всё

#define F_CPU 8000000UL
#include <avr/io.h>
#include <util/delay.h>



int main(void)
{
    DDRD=0xFF;
	PORTD=0x00;
	
    while (1) 
    {
		PORTD=0xFF;
		_delay_ms(1000);
		PORTD=0x00;
		_delay_ms(1000);
		
    }
}
assembler code
Спойлер

Код: Выделить всё

00000044  JMP 0x00000050		Jump 
--- ../../../../crt1/gcrt1.S ---------------------------------------------------
00000046  CLR R1		Clear Register 
00000047  OUT 0x3F,R1		Out to I/O location 
00000048  SER R28		Set Register 
00000049  LDI R29,0x10		Load immediate 
0000004A  OUT 0x3E,R29		Out to I/O location 
0000004B  OUT 0x3D,R28		Out to I/O location 
0000004C  CALL 0x00000052		Call subroutine 
0000004E  JMP 0x0000006A		Jump 
00000050  JMP 0x00000000		Jump 
--- C:\DATA_controller\test portD\test portD\Debug/.././main.c -----------------
{
    DDRD=0xFF;
00000052  SER R24		Set Register 
00000053  OUT 0x11,R24		Out to I/O location 
	PORTD=0x00;
00000054  OUT 0x12,R1		Out to I/O location 
		PORTD=0xFF;
00000055  OUT 0x12,R24		Out to I/O location 
--- c:\program files\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\util/delay.h 
	__builtin_avr_delay_cycles(__ticks_dc);
00000056  SER R18		Set Register 
00000057  LDI R19,0x69		Load immediate 
00000058  LDI R25,0x18		Load immediate 
00000059  SUBI R18,0x01		Subtract immediate 
0000005A  SBCI R19,0x00		Subtract immediate with carry 
0000005B  SBCI R25,0x00		Subtract immediate with carry 
0000005C  BRNE PC-0x03		Branch if not equal 
0000005D  RJMP PC+0x0001		Relative jump 
0000005E  NOP 		No operation 
--- C:\DATA_controller\test portD\test portD\Debug/.././main.c -----------------
		PORTD=0x00;
0000005F  OUT 0x12,R1		Out to I/O location 
--- c:\program files\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\util/delay.h 
	__builtin_avr_delay_cycles(__ticks_dc);
00000060  SER R18		Set Register 
00000061  LDI R19,0x69		Load immediate 
00000062  LDI R25,0x18		Load immediate 
00000063  SUBI R18,0x01		Subtract immediate 
00000064  SBCI R19,0x00		Subtract immediate with carry 
00000065  SBCI R25,0x00		Subtract immediate with carry 
00000066  BRNE PC-0x03		Branch if not equal 
00000067  RJMP PC+0x0001		Relative jump 
00000068  NOP 		No operation 
00000069  RJMP PC-0x0014		Relative jump 
--- No source file -------------------------------------------------------------
0000006A  CLI 		Global Interrupt Disable 
0000006B  RJMP PC-0x0000		Relative jump 
0000006C  NOP 		Undefined 
Добавлено after 3 minutes 37 seconds:
[uquote="BOB51",url="/forum/viewtopic.php?p=3637133#p3637133"]В данном случае - похоже модуль TWI используется[/uquote] не думаю
Вложения
Скриншот 21-05-2019 220711.jpg
(130.26 КБ) 321 скачивание
Реклама
Эиком - электронные компоненты и радиодетали
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18678
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

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

Мой уютный бложик... заходите!
Контактная информация:
Реклама
Грызет канифоль
Аватара пользователя
Сообщения: 287
Зарегистрирован: Сб янв 23, 2016 00:59:59
Откуда: Чебоксары

Сообщение ROMan2947 »

[uquote="ARV",url="/forum/viewtopic.php?p=3637368#p3637368"]не знаю, как в новой студии, но в старой обновление "квадратиков" в окошке портов происходило на такт позже, чем реально должно было происходить.[/uquote] да там можно тактировать бесконечно,с точки останова курсор ни на шаг не переходит. Да и в сравнении с другими портами этот ведет себя подозрительно.
Реклама
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18678
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

ну, что он не переходит - это, вероятно, там задержка ваша отрабатывает кучу циклов... А вообще-то симптомы странные - ваш МК симулятором студии вообще поддерживается? или у вас "железный" отладчик показывает такие парадоксы?
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Грызет канифоль
Аватара пользователя
Сообщения: 287
Зарегистрирован: Сб янв 23, 2016 00:59:59
Откуда: Чебоксары

Сообщение ROMan2947 »

[uquote="ARV",url="/forum/viewtopic.php?p=3637385#p3637385"]там задержка ваша отрабатывает в куч циклов...[/uquote] отладка до основного цикла дойти не может,все встает на конфигурации, до while

Добавлено after 1 minute 16 seconds:
[uquote="ARV",url="/forum/viewtopic.php?p=3637385#p3637385"]или у вас "железный" отладчик показывает такие парадоксы[/uquote] да, все это на железе

Добавлено after 1 minute 43 seconds:
[uquote="ARV",url="/forum/viewtopic.php?p=3637385#p3637385"]ваш МК симулятором студии вообще поддерживается[/uquote] в симуляторе все логично, проверял

Добавлено after 5 minutes 11 seconds:
[uquote="ARV",url="/forum/viewtopic.php?p=3637385#p3637385"]вообще-то симптомы странные[/uquote]
так и быть, завтра буду выпаивать :solder: и :kill:
akl
Друг Кота
Сообщения: 4450
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

Сообщение akl »

FUSE-бит M103C, который по умолчанию запрограммирован, как раз работает с портом D и, возможно, влияет. Программа скомпилированная - херь какая-то. Если есть

Код: Выделить всё

0000004C  CALL 0x00000052      Call subroutine 
то должен быть и
Спойлер

Код: Выделить всё

;22.05.2019

.include "m64Adef.inc"

.equ	Fo=8000000

.cseg

.org 0x000
RESET:
	LDI	ZH,HIGH($1FF)
	LDI	ZL,LOW($1FF)
	OUT	SPH,ZH
	OUT	SPL,ZL

;	LDI	R16,1<<JTD
;	OUT	MCUCSR,R16
GO:
	CLR	R1

	OUT	DDRA,ZL
	OUT	DDRB,ZL
	OUT	DDRC,ZL
	OUT	DDRD,ZL
	OUT	DDRE,ZL
	STS	DDRF,ZL
	STS	DDRG,ZL
TEST:
	RCALL	DEL_300ms
	OUT	PORTD,ZL
	RCALL	DEL_300ms
	OUT	PORTD,R1
	RJMP	GO
;***********************
DEL_300ms:
	LDI	R20,BYTE3(3*Fo/10/5)
	LDI	R21,BYTE2(3*Fo/10/5)
	LDI	R22,BYTE1(3*Fo/10/5)
DEL_GO:
	SUBI	R22,1
	SBCI	R21,0
	SBCI	R20,0
	BRNE	DEL_GO
	RET

.EXIT
Попробуйте, у меня на ATmega64A работает.
Проверил с запрограммированным M103C. Тоже работает.
Грызет канифоль
Аватара пользователя
Сообщения: 287
Зарегистрирован: Сб янв 23, 2016 00:59:59
Откуда: Чебоксары

Сообщение ROMan2947 »

[uquote="akl",url="/forum/viewtopic.php?p=3637433#p3637433"]FUSE-бит M103C[/uquote]
этот бит у меня сброшен, если его запрограммировать просто TWI не будет работает.

Добавлено after 9 minutes 8 seconds:
[uquote="akl",url="/forum/viewtopic.php?p=3637433#p3637433"]Попробуйте[/uquote]попробую, как вариант. я все же грешу на сам микроконтроллер.
Грызет канифоль
Аватара пользователя
Сообщения: 287
Зарегистрирован: Сб янв 23, 2016 00:59:59
Откуда: Чебоксары

Сообщение ROMan2947 »

Приветствую!кажись я нашел причину аномалии со своим девайсом. Перепаял я свой камушек, пытаюсь в отладчике прошарить все порты,а там такая же беда, даже хуже....там уже половина портов ведет себя не адекватно.Да и сигнатура читается через раз...Кстати попытался прошить FLASH,получл ошибку верификации...Было очень неожиданно,очень надеялся на положительный результат.Давай думать че за хер...что только не перепробовал,ничего не помогает. Купил я эти камушки с китая, по очень дешевой цене, а в одном из отзыве пишут мол они Б/У.Вот блин,думаю может китайцы мне сурогат какой-то прислали. :write: сегодня решил после работы зайти за новым камушком,да и взял самый дорогой,надеюясь на его исправность. Собрал схему по минималке, а там все точно так же. Эта версия не подтвердилась,давай думать дальше....Наверное Студия глючит,давай сносить и заново переустанавливать.И снова в молоко....Пу уж собрался закинуть все куда подальше....и тут чет меня подтолкнуло поменять шлейф JTAG. хоть я и знал что правильно распинован и цел, т.к. прозванивал я его раза три точно. Подключил значит, и ОПА как по маслу читаю,пишу,отрабатывается все как надо.....что за фокус :oops: а фокуса никакого нет ,просто их длина раза в 4 отличалась.тот шлейф,который чуть не погубил все, был см 40,а тот который спас все-см 10.Но с таким коротким шлейфом работать не удобно,решил попробовать сделать около 20 см,начал пробовать полет нормальный...Столько времени и сил потратил,но доволен,что все таки решена эта задача.И снова я убедился,все проблемы оказывается на поверхности лежат, а не где-то в китае.... :tea:
Ответить

Вернуться в «AVR»