Прошу помогите с SPI из USI на tiny85
- Dimon49773
- Встал на лапы
- Сообщения: 108
- Зарегистрирован: Ср янв 18, 2012 16:33:58
Re: Прошу помогите с SPI из USI на tiny85
всёравно не отвечаееееттт....

- Реклама
- Engineer_Keen
- Друг Кота
- Сообщения: 3872
- Зарегистрирован: Пт янв 29, 2010 10:27:40
- Откуда: Москва
Re: Прошу помогите с SPI из USI на tiny85
Ну вы сами то посмотрите что вы пытаетесь загнать в память. Конечно на постоянные 0x11 она ничего отвечать не обязана. Сделайте как я сказал, потом можно будет вопросы задавать.
-
phanis
- Вымогатель припоя
- Сообщения: 513
- Зарегистрирован: Сб фев 19, 2011 18:04:08
- Откуда: Татарстан, пос. Актюбинский
- Контактная информация:
Re: Прошу помогите с SPI из USI на tiny85
Вот чтение статуса по моему
Код: Выделить всё
#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
0x05 дойдет, а в другую сторону передача где? 
И откуда вы знаете что параметр функции передается именно через R24? Ну и писали бы тогда asm("OUT 0x0F,mydata"), если компилятор конечно позволяет такое...
И откуда вы знаете что параметр функции передается именно через R24? Ну и писали бы тогда asm("OUT 0x0F,mydata"), если компилятор конечно позволяет такое...
Последний раз редактировалось Engineer_Keen Ср янв 18, 2012 18:58:55, всего редактировалось 1 раз.
-
phanis
- Вымогатель припоя
- Сообщения: 513
- Зарегистрирован: Сб фев 19, 2011 18:04:08
- Откуда: Татарстан, пос. Актюбинский
- Контактная информация:
Re: Прошу помогите с SPI из USI на tiny85
Ответ в симуляторе на 5 получил 0x80
попробую написать..
попробую написать..
- Реклама
-
phanis
- Вымогатель припоя
- Сообщения: 513
- Зарегистрирован: Сб фев 19, 2011 18:04:08
- Откуда: Татарстан, пос. Актюбинский
- Контактная информация:
Re: Прошу помогите с SPI из USI на tiny85
так?
Код: Выделить всё
#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
Работает? Я все таки не пойму, где вторая пачка клоков генерируется, для чтения ответа...
-
phanis
- Вымогатель припоя
- Сообщения: 513
- Зарегистрирован: Сб фев 19, 2011 18:04:08
- Откуда: Татарстан, пос. Актюбинский
- Контактная информация:
Re: Прошу помогите с SPI из USI на tiny85
из регистра USIDR выдвигается и записывается в регистр USIDR бит, один по фронту другой по спаду..
- Dimon49773
- Встал на лапы
- Сообщения: 108
- Зарегистрирован: Ср янв 18, 2012 16:33:58
Re: Прошу помогите с SPI из USI на tiny85
а как команду на чтение слать???
вот что у меня показывает
вот что у меня показывает
- Вложения
-
- log.JPG
- (71.5 КБ) 356 скачиваний
-
phanis
- Вымогатель припоя
- Сообщения: 513
- Зарегистрирован: Сб фев 19, 2011 18:04:08
- Откуда: Татарстан, пос. Актюбинский
- Контактная информация:
Re: Прошу помогите с SPI из USI на tiny85
Чтение одного байта с адресом 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
Да, но почему мне в протеусе говорят что Unrecognized command code [FF]???
и вообще как сделать этот binary image file из которого читать данные???
и вообще как сделать этот binary image file из которого читать данные???
Re: Прошу помогите с SPI из USI на tiny85
Код: Выделить всё
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
я вписываю в еепром данные но в протеусе МК его не читает...

-
phanis
- Вымогатель припоя
- Сообщения: 513
- Зарегистрирован: Сб фев 19, 2011 18:04:08
- Откуда: Татарстан, пос. Актюбинский
- Контактная информация:
Re: Прошу помогите с SPI из USI на tiny85
Я удаляю епромку создаю новую подключаю новый файл к епромке тогда начинает работать. Вот пример чтения 128 байт attiny85+eeprom.rar
- Engineer_Keen
- Друг Кота
- Сообщения: 3872
- Зарегистрирован: Пт янв 29, 2010 10:27:40
- Откуда: Москва
Re: Прошу помогите с SPI из USI на tiny85
Из даташитаhybroid писал(а): USICR = mydata;
USICR = temp;
[...]
USICR = mydata;
USICR = temp;[/code]
Это чего за удав такой длинный?
Надо просто в меню debug выбрать пункт reset persistent model data.phanis писал(а):Я удаляю епромку создаю новую подключаю новый файл к епромке тогда начинает работать.
Потому что память не понимает код операции FF, вы что-то не то выводите или не в том порядке.Dimon49773 писал(а):Да, но почему мне в протеусе говорят что Unrecognized command code [FF]???
Из wav? Тупо переименовать в .bin (можно еще заголовок удалить, если нужны только звуковые данные).Dimon49773 писал(а):и вообще как сделать этот binary image file из которого читать данные???
-
phanis
- Вымогатель припоя
- Сообщения: 513
- Зарегистрирован: Сб фев 19, 2011 18:04:08
- Откуда: Татарстан, пос. Актюбинский
- Контактная информация:
Re: Прошу помогите с SPI из USI на tiny85
Воо меняет. Спасибо.Engineer_Keen писал(а):hybroid писал(а): Надо просто в меню debug выбрать пункт reset persistent model data.
На русском Отладка - Сброс постоянных данных модели.
- s_black
- Мучитель микросхем
- Сообщения: 411
- Зарегистрирован: Вс авг 10, 2008 19:35:49
- Откуда: Евпатория
- Контактная информация:
Re: Прошу помогите с SPI из USI на tiny85
2 TS.
О-о! А я на элктрониксе Вам уже ссылку дал
О-о! А я на элктрониксе Вам уже ссылку дал
- Dimon49773
- Встал на лапы
- Сообщения: 108
- Зарегистрирован: Ср янв 18, 2012 16:33:58
Re: Прошу помогите с SPI из USI на tiny85
Добрый всем день...
вроде с спи разобрался, за что огромно благодарен... а вот с воспроизведением то звука как быть???вроде бы делаю пвм а не поёт....
может посмотрите и направите на правильный путь???
вроде с спи разобрался, за что огромно благодарен... а вот с воспроизведением то звука как быть???вроде бы делаю пвм а не поёт....
может посмотрите и направите на правильный путь???
Код: Выделить всё
#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
Я че-то не фтыкаю этот алгоритм...
1) ждем 1мс
2) читаем 128 байт, начиная с нулевого адреса? и сразу присваиваем их регистру сравнения?
3) переходим к пункту 1
Так что ли?
1) ждем 1мс
2) читаем 128 байт, начиная с нулевого адреса? и сразу присваиваем их регистру сравнения?
3) переходим к пункту 1
Так что ли?
- Dimon49773
- Встал на лапы
- Сообщения: 108
- Зарегистрирован: Ср янв 18, 2012 16:33:58
Re: Прошу помогите с SPI из USI на tiny85
суть алгоритма в том что он читает один байт с епрома и втыкает его в пвм...который и воспроизводит звук...Engineer_Keen писал(а):Я че-то не фтыкаю этот алгоритм...
1) ждем 1мс
2) читаем 128 байт, начиная с нулевого адреса? и сразу присваиваем их регистру сравнения?
3) переходим к пункту 1
Так что ли?
ну да, в принципе логика такая...


