одно и тоже устройство не хочет работать с кодом на разных языках
на асме работает на Си не хочет
состав устройства мега64 видеопроц V9990 датафлэш45db161
причём с кодом на си я вижу выход данных с датафлэш с помошью осцилографа а картинку не получаю
на асме всё ок
по фьюзам
SUT0=0 BOOTSZ0=0 BOOTSZ1=0
если M103C=0 на Си не вижу выхода данных с датафлэш при 1 они есть
если M103C=1 то код на асме не работает
растолкуйте что не так
пожалуйста
у меня видео проц подключен по схеме внешней памяти но без регистра защёлки
данные видеопроца (D0-D7) сидят на (AD0-AD7)Mega64
(A0-A2)видеопроца сидят на (A8-A10) Mega64 ну и RD WR соответственно
или какой у вас компилятор? потому что я смутно припоминаю где используется вот это - "@"...
избавляемся от необходимости ставить регистр-защёлку (74HC573) на младшие адреса контроллера A0..A7 для адреса
да работаю в CVAVR
для того чтоб на внешней шине сгенерировалось обращение ко ВНЕШНЕЙ ПАМЯТИ (вместо неё висит V9990) а не к адресам внутренней,
посылаем какой-нить старший бит адреса=1, тоесть:
Биты AD0 AD1 AD2 AD3 AD4 AD5 AD6 AD7 A8 A9 A10 A11 A12 A13 A14 A15 - контроллер
* * * * * * * * A0 A1 A2 q w e r t - V9990 (порты)
* - ничего не значащие биты (при нулевых битах A8..A15 - внутреннее ОЗУ контроллера)
A0..A2 - порты V9990
q,w,e,r,t - биты с произвольным значением (по крайней мере какой-то из них должен быть равен 1 - чтоб сделать цикл обращения к внешней шине сделать)
В данном примере: Port0 - эта переменная позволяющая обращаться к порту 0 V9990 (*=0,A0( A8 )=0, A1(A9)=0,A2(A10)=0,q=1(хотя бы один бит=1),w=0,e=0,r=0,t=0)
Тоесть её адрес получается 0x1000 (unsigned char Port0 @0x1000)
вообще код изначально был написан для Меги8515
я его хочу приспособить для Меги64
вот код для меги8515
#include <mega8515>
#include <stdlib>
#include <delay>
void Init()
{
PORTA=0x00;
DDRA=0x00;
DDRB=0b00010000;
PORTB=0b00011111;
PORTC=0x00;
DDRC=0x00;
PORTD=0x00;
DDRD=0x00;
PORTE=0x00;
DDRE=0x00;
TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
MCUCR=0xC0;
EMCUCR=0x02;
TIMSK=0x00;
ACSR=0x80;
}
как правильно его переложить для 64меги помимо хидера mega64.h
ipkin писал(а):
как правильно его переложить для 64меги помимо хидера mega64.h
начать с того, что все обнуления просто исключить - после сброса во всех регистрах ввода-вывода и так нули. а оставшихся будет очень немного - надо установить соответствие устанавливаемых битов и регистров в этих МК. с помощью даташитов это несложно.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
ipkin писал(а):
как правильно его переложить для 64меги помимо хидера mega64.h
начать с того, что все обнуления просто исключить - после сброса во всех регистрах ввода-вывода и так нули. а оставшихся будет очень немного - надо установить соответствие устанавливаемых битов и регистров в этих МК. с помощью даташитов это несложно.
вроде так и делаю
мега8515 MCUCR=0xC0 для меги64 те же биты 7и 6
далее
мега8515 EMCUCR=0x02 для меги64 это XMCRA опять тот же бит 1(SRW11)
Эх жалко нет в этом форуме раздела "Разборки" можно было бы пообщаться.
Вообще то уважаемый PLL или как Вас там Rom****ch форумы для того и делаются чтобы люди могли общаться ,решать какие то вопросы , не все такие УМНЫЕ как ВЫ (наверное родились с паяльником в руках).
Обсир*****ть это у нас всегда пожалусто и сколько угодно.
Спасибо Вам за столь понятливый ответ на мой вопрос.
Всё равно найдутся люди кто поможет(разъяснит)как правильнее сделать