Прошу помогите с SPI из USI на tiny85

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Аватара пользователя
Dimon49773
Встал на лапы
Сообщения: 108
Зарегистрирован: Ср янв 18, 2012 16:33:58

Re: Прошу помогите с SPI из USI на tiny85

Сообщение Dimon49773 »

всёравно не отвечаееееттт.... :o :o :o
Реклама
Аватара пользователя
Engineer_Keen
Друг Кота
Сообщения: 3872
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Re: Прошу помогите с SPI из USI на tiny85

Сообщение Engineer_Keen »

Ну вы сами то посмотрите что вы пытаетесь загнать в память. Конечно на постоянные 0x11 она ничего отвечать не обязана. Сделайте как я сказал, потом можно будет вопросы задавать.
Реклама
phanis
Вымогатель припоя
Сообщения: 513
Зарегистрирован: Сб фев 19, 2011 18:04:08
Откуда: Татарстан, пос. Актюбинский
Контактная информация:

Re: Прошу помогите с SPI из USI на tiny85

Сообщение phanis »

Вот чтение статуса по моему

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

#include <avr/io.h>
#include "util/delay.h"


unsigned char _FF_spi(unsigned char mydata);

unsigned char _FF_spi(unsigned char mydata)
{
      
asm("OUT    0x0F,R24");          
asm("LDI    R24,0x11");
asm("LDI    R17,0x13");

asm("OUT    0x0D,R24");
asm("OUT    0x0D,R17");
asm("OUT    0x0D,R24");
asm("OUT    0x0D,R17");
asm("OUT    0x0D,R24");
asm("OUT    0x0D,R17");
asm("OUT    0x0D,R24");
asm("OUT    0x0D,R17");
asm("OUT    0x0D,R24");
asm("OUT    0x0D,R17");
asm("OUT    0x0D,R24");
asm("OUT    0x0D,R17");
asm("OUT    0x0D,R24");
asm("OUT    0x0D,R17");
asm("OUT    0x0D,R24");
asm("OUT    0x0D,R17");


return (USIDR);
}
void port_init(void)
{   DDRB |= _BV(PB3); // as output (DO)
	DDRB |= _BV(PB1); // as output (DO)
  	DDRB |= _BV(PB2); // as output (USISCK)
  	DDRB &= ~_BV(PB0); // as input (DI)
  	PORTB |= _BV(PB0); // pullup on (DI)
    PORTB |= _BV(PB3);
}

int main(void)
{unsigned char resive_byte;

	port_init();
	
	
	while(1){
    _delay_ms(100);
	PORTB &= 0xFF- _BV(PB3);
	resive_byte =  _FF_spi(0x5);
	PORTB |= _BV(PB3);
}
	

return 0;
}

Аватара пользователя
Engineer_Keen
Друг Кота
Сообщения: 3872
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Re: Прошу помогите с SPI из USI на tiny85

Сообщение Engineer_Keen »

0x05 дойдет, а в другую сторону передача где? :facepalm:
И откуда вы знаете что параметр функции передается именно через R24? Ну и писали бы тогда asm("OUT 0x0F,mydata"), если компилятор конечно позволяет такое...
Последний раз редактировалось Engineer_Keen Ср янв 18, 2012 18:58:55, всего редактировалось 1 раз.
Реклама
Эиком - электронные компоненты и радиодетали
phanis
Вымогатель припоя
Сообщения: 513
Зарегистрирован: Сб фев 19, 2011 18:04:08
Откуда: Татарстан, пос. Актюбинский
Контактная информация:

Re: Прошу помогите с SPI из USI на tiny85

Сообщение phanis »

Ответ в симуляторе на 5 получил 0x80
попробую написать..
Реклама
phanis
Вымогатель припоя
Сообщения: 513
Зарегистрирован: Сб фев 19, 2011 18:04:08
Откуда: Татарстан, пос. Актюбинский
Контактная информация:

Re: Прошу помогите с SPI из USI на tiny85

Сообщение phanis »

так?

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

#include <avr/io.h>
#include "util/delay.h"

unsigned char _FF_spi(unsigned char mydata);

unsigned char _FF_spi(unsigned char mydata)
{
   unsigned char temp; 
	
USIDR  = mydata;
mydata = 0x11;
temp   = 0x13;

USICR  = mydata;
USICR  = temp;
USICR  = mydata;
USICR  = temp;
USICR  = mydata;
USICR  = temp;
USICR  = mydata;
USICR  = temp;
USICR  = mydata;
USICR  = temp;
USICR  = mydata;
USICR  = temp;
USICR  = mydata;
USICR  = temp;
USICR  = mydata;
USICR  = temp;	

return (USIDR);
}
void port_init(void)
{   DDRB |= _BV(PB3); // as output (CS)
	DDRB |= _BV(PB1); // as output (DO)
  	DDRB |= _BV(PB2); // as output (USISCK)
  	DDRB &= ~_BV(PB0); // as input (DI)
  	PORTB |= _BV(PB0); // pullup on (DI)
    PORTB |= _BV(PB3); // CS HI
}

int main(void)
{unsigned char resive_byte;

	port_init();
		
	while(1){
    _delay_ms(100);
	PORTB &= 0xFF- _BV(PB3);
	resive_byte =  _FF_spi(0x5);
	PORTB |= _BV(PB3);
}

return 0;
}
Реклама
Аватара пользователя
Engineer_Keen
Друг Кота
Сообщения: 3872
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Re: Прошу помогите с SPI из USI на tiny85

Сообщение Engineer_Keen »

Работает? Я все таки не пойму, где вторая пачка клоков генерируется, для чтения ответа...
phanis
Вымогатель припоя
Сообщения: 513
Зарегистрирован: Сб фев 19, 2011 18:04:08
Откуда: Татарстан, пос. Актюбинский
Контактная информация:

Re: Прошу помогите с SPI из USI на tiny85

Сообщение phanis »

из регистра USIDR выдвигается и записывается в регистр USIDR бит, один по фронту другой по спаду..
Аватара пользователя
Dimon49773
Встал на лапы
Сообщения: 108
Зарегистрирован: Ср янв 18, 2012 16:33:58

Re: Прошу помогите с SPI из USI на tiny85

Сообщение Dimon49773 »

а как команду на чтение слать???
вот что у меня показывает
Вложения
log.JPG
(71.5 КБ) 356 скачиваний
phanis
Вымогатель припоя
Сообщения: 513
Зарегистрирован: Сб фев 19, 2011 18:04:08
Откуда: Татарстан, пос. Актюбинский
Контактная информация:

Re: Прошу помогите с SPI из USI на tiny85

Сообщение phanis »

Чтение одного байта с адресом 0, в переменную resive_byte

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

#include <avr/io.h>
#include "util/delay.h"

unsigned char _FF_spi(unsigned char mydata);

unsigned char _FF_spi(unsigned char mydata)
{
   unsigned char temp; 
	
USIDR  = mydata;
mydata = 0x11;
temp   = 0x13;

USICR  = mydata;
USICR  = temp;
USICR  = mydata;
USICR  = temp;
USICR  = mydata;
USICR  = temp;
USICR  = mydata;
USICR  = temp;
USICR  = mydata;
USICR  = temp;
USICR  = mydata;
USICR  = temp;
USICR  = mydata;
USICR  = temp;
USICR  = mydata;
USICR  = temp;	

return (USIDR);
}
void port_init(void)
{   DDRB |= _BV(PB3); // as output (CS)
	DDRB |= _BV(PB1); // as output (DO)
  	DDRB |= _BV(PB2); // as output (USISCK)
  	DDRB &= ~_BV(PB0); // as input (DI)
  	PORTB |= _BV(PB0); // pullup on (DI)
    PORTB |= _BV(PB3); // CS HI
}

int main(void)
{unsigned char resive_byte;

	port_init();
		
	while(1){
    _delay_ms(100);
	PORTB &= 0xFF- _BV(PB3);
	_FF_spi(0x3);
	_FF_spi(0x0);
	_FF_spi(0x0);
	_FF_spi(0x0);
    resive_byte =  _FF_spi(0xFF);
	PORTB |= _BV(PB3);
}

return 0;
}

Аватара пользователя
Dimon49773
Встал на лапы
Сообщения: 108
Зарегистрирован: Ср янв 18, 2012 16:33:58

Re: Прошу помогите с SPI из USI на tiny85

Сообщение Dimon49773 »

Да, но почему мне в протеусе говорят что Unrecognized command code [FF]???
и вообще как сделать этот binary image file из которого читать данные???
Аватара пользователя
hybroid
Друг Кота
Сообщения: 8007
Зарегистрирован: Вс ноя 14, 2010 19:24:26
Откуда: Лукалэнд

Re: Прошу помогите с SPI из USI на tiny85

Сообщение hybroid »

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

USICR  = mydata;
USICR  = temp;
USICR  = mydata;
USICR  = temp;
USICR  = mydata;
USICR  = temp;
USICR  = mydata;
USICR  = temp;
USICR  = mydata;
USICR  = temp;
USICR  = mydata;
USICR  = temp;
USICR  = mydata;
USICR  = temp;
USICR  = mydata;
USICR  = temp;
Это чего за удав такой длинный? :)))
Аватара пользователя
Dimon49773
Встал на лапы
Сообщения: 108
Зарегистрирован: Ср янв 18, 2012 16:33:58

Re: Прошу помогите с SPI из USI на tiny85

Сообщение Dimon49773 »

я вписываю в еепром данные но в протеусе МК его не читает... :o :cry:
phanis
Вымогатель припоя
Сообщения: 513
Зарегистрирован: Сб фев 19, 2011 18:04:08
Откуда: Татарстан, пос. Актюбинский
Контактная информация:

Re: Прошу помогите с SPI из USI на tiny85

Сообщение phanis »

Я удаляю епромку создаю новую подключаю новый файл к епромке тогда начинает работать. Вот пример чтения 128 байт attiny85+eeprom.rar
Аватара пользователя
Engineer_Keen
Друг Кота
Сообщения: 3872
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Re: Прошу помогите с SPI из USI на tiny85

Сообщение Engineer_Keen »

hybroid писал(а): USICR = mydata;
USICR = temp;
[...]
USICR = mydata;
USICR = temp;[/code]
Это чего за удав такой длинный? :)))
Из даташита :write:
phanis писал(а):Я удаляю епромку создаю новую подключаю новый файл к епромке тогда начинает работать.
Надо просто в меню debug выбрать пункт reset persistent model data.
Dimon49773 писал(а):Да, но почему мне в протеусе говорят что Unrecognized command code [FF]???
Потому что память не понимает код операции FF, вы что-то не то выводите или не в том порядке.
Dimon49773 писал(а):и вообще как сделать этот binary image file из которого читать данные???
Из wav? Тупо переименовать в .bin (можно еще заголовок удалить, если нужны только звуковые данные).
phanis
Вымогатель припоя
Сообщения: 513
Зарегистрирован: Сб фев 19, 2011 18:04:08
Откуда: Татарстан, пос. Актюбинский
Контактная информация:

Re: Прошу помогите с SPI из USI на tiny85

Сообщение phanis »

Engineer_Keen писал(а):
hybroid писал(а): Надо просто в меню debug выбрать пункт reset persistent model data.
Воо меняет. Спасибо.
На русском Отладка - Сброс постоянных данных модели.
Аватара пользователя
s_black
Мучитель микросхем
Сообщения: 411
Зарегистрирован: Вс авг 10, 2008 19:35:49
Откуда: Евпатория
Контактная информация:

Re: Прошу помогите с SPI из USI на tiny85

Сообщение s_black »

2 TS.
О-о! А я на элктрониксе Вам уже ссылку дал
Аватара пользователя
Dimon49773
Встал на лапы
Сообщения: 108
Зарегистрирован: Ср янв 18, 2012 16:33:58

Re: Прошу помогите с SPI из USI на tiny85

Сообщение Dimon49773 »

Добрый всем день...

вроде с спи разобрался, за что огромно благодарен... а вот с воспроизведением то звука как быть???вроде бы делаю пвм а не поёт....

может посмотрите и направите на правильный путь??? :roll:

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


#include <avr/io.h>
#include "util/delay.h"
#include <avr/interrupt.h>
#include <avr/sleep.h>
#include <avr/wdt.h>


unsigned int MODE = 0;

unsigned char _FF_spi(unsigned char mydata);

unsigned char _FF_spi(unsigned char mydata)
{
   unsigned char temp; 
	
USIDR  = mydata;
mydata = 0x11;
temp   = 0x13;

USICR  = mydata;
USICR  = temp;
USICR  = mydata;
USICR  = temp;
USICR  = mydata;
USICR  = temp;
USICR  = mydata;
USICR  = temp;
USICR  = mydata;
USICR  = temp;
USICR  = mydata;
USICR  = temp;
USICR  = mydata;
USICR  = temp;
USICR  = mydata;
USICR  = temp;	

return (USIDR);
}
void port_init(void)
{   DDRB |= _BV(PB3); // as output (CS)
	DDRB |= _BV(PB1); // as output (DO)
  	DDRB |= _BV(PB2); // as output (USISCK)
  	DDRB &= ~_BV(PB0); // as input (DI)
  	PORTB |= _BV(PB0); // pullup on (DI)
    PORTB |= _BV(PB3); // CS HI

	MCUSR = 0;
	WDTCR = _BV(WDE) | 0b110;
}

void timer_init(void)
{
	PLLCSR = 0b00000110;	/* Select PLL clock for TC1.ck */
	GTCCR =  0b01100000;	/* Enable TC1.OCB as PWM out (L-ch) */
	TCCR1 = MODE ? 0b01100001 : 0b00000001;	/* Start TC1 with TC1.OCA is enabled as PWM out (R-ch) */
	TCCR0A = 0b00000010;	/* Enable TC0.ck = 2MHz as interval timer */
	TCCR0B = 0b00000010;
	TIMSK = _BV(OCIE0A);
	
}





int main(void)
{unsigned char resive_byte,count;

	port_init();
		
	while(1){
    count=128;
    _delay_ms(1);
	PORTB &= 0xFF- _BV(PB3);
	_FF_spi(0x3);
	_FF_spi(0x0);
	_FF_spi(0x0);
	_FF_spi(0x0);
	while(count--)  OCR1B =  _FF_spi(0xFF);
	PORTB |= _BV(PB3);
}

return 0;
}



Вложения
attiny85+eeprom=wav.rar
(63.39 КБ) 149 скачиваний
Аватара пользователя
Engineer_Keen
Друг Кота
Сообщения: 3872
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Re: Прошу помогите с SPI из USI на tiny85

Сообщение Engineer_Keen »

Я че-то не фтыкаю этот алгоритм...
1) ждем 1мс
2) читаем 128 байт, начиная с нулевого адреса? и сразу присваиваем их регистру сравнения?
3) переходим к пункту 1
Так что ли?
Аватара пользователя
Dimon49773
Встал на лапы
Сообщения: 108
Зарегистрирован: Ср янв 18, 2012 16:33:58

Re: Прошу помогите с SPI из USI на tiny85

Сообщение Dimon49773 »

Engineer_Keen писал(а):Я че-то не фтыкаю этот алгоритм...
1) ждем 1мс
2) читаем 128 байт, начиная с нулевого адреса? и сразу присваиваем их регистру сравнения?
3) переходим к пункту 1
Так что ли?
суть алгоритма в том что он читает один байт с епрома и втыкает его в пвм...который и воспроизводит звук...

ну да, в принципе логика такая...
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»