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

Когда включен аппаратный модуль на соответствующих выводах порта работа в режиме порта отключается.
Бывают и нюансы - но то внимательно вычитывать надо как относительно самого порта, так и относительно используемого аппаратного модуля. В данном случае - похоже модуль TWI используется - следловательно смотрим описание работы его лапок.
[uquote="ПростоНуб",url="/forum/viewtopic.php?p=3637086#p3637086"]А можно увидеть что получилось в ассемблере? Просто чтобы убедиться, что при Ваших параметрах/дефайнах компиляции Вы обращаетесь к адресу регистров порта D именно ATMega64/L, а не какой-то другой ATMega.[/uquote]
это на С
assembler code
Добавлено after 3 minutes 37 seconds:
[uquote="BOB51",url="/forum/viewtopic.php?p=3637133#p3637133"]В данном случае - похоже модуль TWI используется[/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);
}
}Спойлер
Код: Выделить всё
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 [uquote="BOB51",url="/forum/viewtopic.php?p=3637133#p3637133"]В данном случае - похоже модуль TWI используется[/uquote] не думаю
- Вложения
-
- Скриншот 21-05-2019 220711.jpg
- (130.26 КБ) 321 скачивание
не знаю, как в новой студии, но в старой обновление "квадратиков" в окошке портов происходило на такт позже, чем реально должно было происходить.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Реклама
[uquote="ARV",url="/forum/viewtopic.php?p=3637368#p3637368"]не знаю, как в новой студии, но в старой обновление "квадратиков" в окошке портов происходило на такт позже, чем реально должно было происходить.[/uquote] да там можно тактировать бесконечно,с точки останова курсор ни на шаг не переходит. Да и в сравнении с другими портами этот ведет себя подозрительно.
ну, что он не переходит - это, вероятно, там задержка ваша отрабатывает кучу циклов... А вообще-то симптомы странные - ваш МК симулятором студии вообще поддерживается? или у вас "железный" отладчик показывает такие парадоксы?
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
[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]
так и быть, завтра буду выпаивать
и 
Добавлено 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]
так и быть, завтра буду выпаивать
FUSE-бит M103C, который по умолчанию запрограммирован, как раз работает с портом D и, возможно, влияет. Программа скомпилированная - херь какая-то. Если есть
то должен быть и
Попробуйте, у меня на ATmega64A работает.
Проверил с запрограммированным M103C. Тоже работает.
Код: Выделить всё
0000004C CALL 0x00000052 Call subroutine Код: Выделить всё
RETСпойлер
Код: Выделить всё
;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Проверил с запрограммированным M103C. Тоже работает.
[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]попробую, как вариант. я все же грешу на сам микроконтроллер.
этот бит у меня сброшен, если его запрограммировать просто TWI не будет работает.
Добавлено after 9 minutes 8 seconds:
[uquote="akl",url="/forum/viewtopic.php?p=3637433#p3637433"]Попробуйте[/uquote]попробую, как вариант. я все же грешу на сам микроконтроллер.
Приветствую!кажись я нашел причину аномалии со своим девайсом. Перепаял я свой камушек, пытаюсь в отладчике прошарить все порты,а там такая же беда, даже хуже....там уже половина портов ведет себя не адекватно.Да и сигнатура читается через раз...Кстати попытался прошить FLASH,получл ошибку верификации...Было очень неожиданно,очень надеялся на положительный результат.Давай думать че за хер...что только не перепробовал,ничего не помогает. Купил я эти камушки с китая, по очень дешевой цене, а в одном из отзыве пишут мол они Б/У.Вот блин,думаю может китайцы мне сурогат какой-то прислали.
сегодня решил после работы зайти за новым камушком,да и взял самый дорогой,надеюясь на его исправность. Собрал схему по минималке, а там все точно так же. Эта версия не подтвердилась,давай думать дальше....Наверное Студия глючит,давай сносить и заново переустанавливать.И снова в молоко....Пу уж собрался закинуть все куда подальше....и тут чет меня подтолкнуло поменять шлейф JTAG. хоть я и знал что правильно распинован и цел, т.к. прозванивал я его раза три точно. Подключил значит, и ОПА как по маслу читаю,пишу,отрабатывается все как надо.....что за фокус
а фокуса никакого нет ,просто их длина раза в 4 отличалась.тот шлейф,который чуть не погубил все, был см 40,а тот который спас все-см 10.Но с таким коротким шлейфом работать не удобно,решил попробовать сделать около 20 см,начал пробовать полет нормальный...Столько времени и сил потратил,но доволен,что все таки решена эта задача.И снова я убедился,все проблемы оказывается на поверхности лежат, а не где-то в китае.... 


