Соединение двух at16 через SPI и глюки атмеги128...

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Мучитель микросхем
Аватара пользователя
Сообщения: 493
Зарегистрирован: Ср фев 14, 2007 12:07:58
Откуда: Москва

Сообщение Fasterpast »

Подскажите, пытаюсь связать два МК по SPI... Код сгенерирован CVAVR, второй МК еще передает данные по УСАРТ.
Первый мастер, там просто spi(128); для теста, второй слейв без прерывания, забираю данные командой переменная=SPDR; а потом переменную по усарту.
При загрузке по усарту никаких данных не идет, отключаю проводок от СПИ, с УСАРТА сразу идут данные, правда не с 128, но и не с 0... Подключаю проводок, усарт опять замерает... Пробовал с прерыванием на слейве - та же картина.
пин СС на мастере выход, на слейве вход. Пробовал и соединять их, и пин слейва ручками пускать на 0 или на+5. Реакции нет...
В протеусе причем все работает.

и еще вопрос в догонку... После очередного ресета на 128й меге на всех ногах стало 5В... Почему она могла вот так сдохнуть?, до этого отлично работала, ресет делал уже много раз...
Постояла без питания минут 10, терь на ногах все ок, но не шьётся и признаков жизни не подаёт..(

Оказалось кварц сдох 0_о такое вообще бывает? Хотя нет, с другим кварцем тоже не пашет, а от внешнего осцилятора той же частоты пашет... Бред какой-то. Фузы как поставил с самого начала, так они и стоят, ща еще раз проверил... Сделал фузы на внутренний осц., теперь вообще никак не шьётся.... 400р в помойку (

А вопрос про SPI еще открыт... Там у меня две атмеги16
Контактная информация:
Реклама
Открыл глаза
Сообщения: 79
Зарегистрирован: Сб май 08, 2010 09:33:42

Сообщение of_silence »

Я как-то раз умудрился упалить выходную ножку кварцевого генератора. Пришлось ваять внешний генератор, дело было как раз на мере 128. Не знаю, как это у меня получилось, но факт на лицо - такое в жизни явно случается.
А про спи не понятно, что написано. В чем суть проблемы? не передается, или не принимается? или и то, и другое?
Реклама
Мучитель микросхем
Аватара пользователя
Сообщения: 493
Зарегистрирован: Ср фев 14, 2007 12:07:58
Откуда: Москва

Сообщение Fasterpast »

Да припаял другой кварц - та же фигня. С внешнего работал, но криво, только удавалось стереть его и фузы прошить. В итоге прошил на внутренний осц., теперь вообще не пашет.

А с SPI проблема в том, что при соединении ножек SCK и MOSI двух МК, слейв зависает. Причем даже если убрать все while и прерывания SPI. Разъединяю ножки - всё работает дальше. Соединяю - виснет. В протеусе всё работает.
Контактная информация:
Собутыльник Кота
Аватара пользователя
Сообщения: 2512
Зарегистрирован: Пн апр 06, 2009 19:33:29
Откуда: Молдова, Кишинев

Сообщение BCluster »

код покажи, вообще зависает при передаче или просто висит всегда?
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Мучитель микросхем
Аватара пользователя
Сообщения: 493
Зарегистрирован: Ср фев 14, 2007 12:07:58
Откуда: Москва

Сообщение Fasterpast »

На мастере:

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

// SPI initialization
// SPI Type: Master
// SPI Clock Rate: 250,000 kHz
// SPI Clock Phase: Cycle Start
// SPI Clock Polarity: Low
// SPI Data Order: MSB First
SPCR=0x56;
SPSR=0x00;

while (1)
      {
      adc = read_adc(0);
      delay_ms(100);
      spi(adc);
      delay_ms(100);
      }; 
пробовал вместо adc ставить 123, пробовал разные задержки и без них.

На слейве:

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

// SPI interrupt service routine
interrupt [SPI_STC] void spi_isr(void)
{
unsigned char data;
data=SPDR;
// Place your code here
amp_temp = data;
}


// SPI initialization
// SPI Type: Slave
// SPI Clock Rate: 250,000 kHz
// SPI Clock Phase: Cycle Start
// SPI Clock Polarity: Low
// SPI Data Order: MSB First
SPCR=0xC6;
SPSR=0x00;

// Clear the SPI interrupt flag
#asm
    in   r30,spsr
    in   r30,spdr
#endasm

// Global enable interrupts
#asm("sei")
Пробовал отключать прерывания, пробовал разные скорости, пробовал на слейве вообще не запрашивать никак SPI - виснет... Не пробовал отключать SPI и подключать проводки. Соединение 10раз проверил...

PORTB на котором висит SPI сконфигурен кодвижном...

Зависает сразу после соединения SCK и MOSI. Как бы через те же ножки оно у меня программируется, так что SPI разведен и пашет нормально сам по себе...
Контактная информация:
Реклама
Мучитель микросхем
Аватара пользователя
Сообщения: 493
Зарегистрирован: Ср фев 14, 2007 12:07:58
Откуда: Москва

Сообщение Fasterpast »

Даже больше скажу... Отключаю в обоих МК SPI... Соединяю их... И второй виснет! Причем иногда сразу обрывается поток данных с UART, а иногда еще пару байт выкинет несуразных и виснет. Даже уже другие меги пробовал, все равно не хотят... :shock:
Либо где-то я дико туплю, либо это полтергейст.

Опытным путём установлено, что виснет при соединении SCK...
Может нужно его чем-нибудь к чему-нибудь подтянуть?
Контактная информация:
Реклама
Мявтор!
Аватара пользователя
Сообщения: 384
Зарегистрирован: Ср май 17, 2006 18:39:01
Откуда: Москва

Сообщение Pavel V. »

Ну так это прямое следствие "генерации кода". Предлагаю обратиться в CodeVision для решения проблемы :))
Контактная информация:
Мучитель микросхем
Аватара пользователя
Сообщения: 493
Зарегистрирован: Ср фев 14, 2007 12:07:58
Откуда: Москва

Сообщение Fasterpast »

А в шпротеусе почему пашет?
И я вообще ставлю
SPCR=0x00;
SPSR=0x00;
А он всё равно виснет при соединении SCK линий...
В студии тоже всё прогнал, пашет.
Контактная информация:
Мучитель микросхем
Аватара пользователя
Сообщения: 493
Зарегистрирован: Ср фев 14, 2007 12:07:58
Откуда: Москва

Сообщение Fasterpast »

Короче ну нафиг, пойду с xmega'ми ковыряться, там USARTов много хоть... :))
Контактная информация:
Мявтор!
Аватара пользователя
Сообщения: 384
Зарегистрирован: Ср май 17, 2006 18:39:01
Откуда: Москва

Сообщение Pavel V. »

Fasterpast писал(а):Короче ну нафиг, пойду с xmega'ми ковыряться, там USARTов много хоть... :))
А может, ну нафиг эти микроконтроллеры с этой электроникой.. Лучше пойти пива попить во дворе :)

Какой-то слабенький подход.. Не получилось, так все бросил и побежал другими делами заниматься. Неужели не интересно разобраться, мозг свой потренировать? Советую выкинуть свой протеус в мусорное ведро и почитать что-нибудь умное (например, даташит) :)

Удачи!
Контактная информация:
Мучитель микросхем
Аватара пользователя
Сообщения: 493
Зарегистрирован: Ср фев 14, 2007 12:07:58
Откуда: Москва

Сообщение Fasterpast »

А вообще здравая мысль.. Пойду за пивом ))))
Ну а если серьёзно, эт я канеш "в порыве гнева" сказал...
Правда всё равно не понимаю почему оно виснет. Может частота слишком большая?
В даташите про SPI вообще три с половиной слова написано... Ща апноуты перебираю...
Кстати, начитался тут про xmeg'у и не смог себе отказать в удовольствии - купить одну ))
Вообще кто-нить с ними работал? Инфы в инете ну очень мало...
Контактная информация:
Мявтор!
Аватара пользователя
Сообщения: 384
Зарегистрирован: Ср май 17, 2006 18:39:01
Откуда: Москва

Сообщение Pavel V. »

Fasterpast писал(а):А вообще здравая мысль.. Пойду за пивом ))))
Ну а если серьёзно, эт я канеш "в порыве гнева" сказал...
Правда всё равно не понимаю почему оно виснет. Может частота слишком большая?
В даташите про SPI вообще три с половиной слова написано... Ща апноуты перебираю...
Первое, что я бы сделал на твоем месте, это выкинул код сгенерированный CV и переписал его ручками. Причем, не в виде SPCR=0x56;, а как положено, чтобы было наглядно, например:
SPCR = (1<<SPE) | (1<<MSTR) | (1<<SPR1);

Вот тогда можно и поговорить.
Контактная информация:
Мучитель микросхем
Аватара пользователя
Сообщения: 493
Зарегистрирован: Ср фев 14, 2007 12:07:58
Откуда: Москва

Сообщение Fasterpast »

ща попробую пересобрать макетки, чтобы там не было ничего лишнего, кроме усарта, спи и пару светодиодиков для дебага...
ну и код попробую вручную загнать. по резалтам отпишусь..
Контактная информация:
Закрыто

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