Перейти к содержанию
    

Pavlike

Участник
  • Постов

    12
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный

Посетители профиля

468 просмотров профиля
  1. Добрый вечер! А есть еще в продаже платы? Актуально!
  2. ================== РЕШЕНО!!!====================== В разделе EWARMv5 содержался файл startup_STM32F10x_MD_VL.s, заменил его на коннект лайн для 32F105 startup_STM32F10x_CL.s и все ОК!
  3. Добрый всем вечер! Я пробую запустить CAN на STM32-discovery (заменил камень только на 105й) Собрал пакет из библиотеки STM32F10x_stdPeriph_Lib ( там есть примеры с 2мя канами и с одним LoopBack) В обоих случаях в дебагере я не вижу прерывания по приему(просто оно не компилируется) Не могу понять почему... Пробовал в 100% рабочий проект из боарда воткнуть библиотеку, тоже компилируется, дисплей, светодиоды, кнопки - все работает а CAN передавать - передает, а на приеме нет прерывания ... куда копать? (проект я могу весь выложить или частями) P.S Iar ARM 6.20
  4. Спасибо - помогло! Прерывания по приему не было в вообще в коде... поэтому по приему быйта контроллер сбрасывался..
  5. Доброго времени суток! Вкратце проблема такова: перебросил проект из ИАРа в АВРСтудию. (проект атмеловский AVR323), добавил немного своего кода, все компилируется без ошибок(в железе не работает), кроме варнинга: ../sms_com.c: In function 'SIGNAL': ../sms_com.c:100: warning: type of '__vector_11' defaults to 'int' Пробовал с разной оптимизацией, по разному прерывание называл... все равно варнинг.. Вот код прерывания (прием байта из УСАРТ) //#pragma vector=USART_RXC_vect // Это оригинал из ИАРа //__interrupt void USART0_RX_interrupt( void ) // ---..---- // ISR (USART_RXC_vect) // Это я пробовол эти варианты //int ISR (SIG_UART_RECV) int SIGNAL (SIG_UART_RECV) { unsigned char data; //Local variable data = UDR; //Always read something rx_buffer[ rx_wr_i++ ] = data; //Store new data if( rx_wr_i > RX_BUFFER_MASK ) //Check for overflow { rx_wr_i = 0; //Reset write index rx_overflow = 1; //Set flag high UCSRB &= ~( 1 << RXCIE ); // Disable RX interrupt } if( searchFor[rx_i] == data ) //Test response match { rx_i++; if( !searchFor[rx_i] ) //End of new_message string...received new message! { rx_i = 0; if( searchStr == CMTI_ ) //+CMTI: { searchFor = searchStrings[ CRLF_ ]; //Wait for searchStr = CRLF_; } else //Normal acknowledgement { rx_ack = 1; //Set new message flag UCSRB &= ~( 1 << RXCIE ); // Disable RX interrupt } } } else { rx_i = 0; //Not valid search pattern...start again. } // return 0; // это тоже пробовал } Если не писать перед ISR(SIGNAL) Int - то пишет 3 варнинга: ../sms_com.c:100: warning: return type defaults to 'int' ../sms_com.c: In function 'SIGNAL': ../sms_com.c:100: warning: type of '__vector_11' defaults to 'int' ../sms_com.c:139: warning: control reaches end of non-void function Оригинальный проект был на меге 128, я писал для меги8. В итоге, железо не работает, команду отсылает, но приема невидит, мало того происходит рестарт программы... Я пробовал пошагово, но выловить не смог.. Мысли: - может непорядок со стеком(хотя проект занимает меньше 40% памяти и данных. - может непорядок с прерыванием! Подскажите плиз еще мысли!
  6. Всем большое спасибо за участие! Просиженная ночь дала свои плоды :) Все вроде работает нормально. Проблема решилась увеличением СSTACK почти в 2 раза. Теперь с железом глюк :)) Может кто сталкивался? Нужно ли при инициализации УСАРТа (в меге128) ногу на которой ТхД назначать как оутпут DDRD=8; ? Нигде в примерах этого нету а реально не работает. Правда МК подключен напрямую к другой МК.
  7. В том то и дело что используется... А к внешней фунуции никакого отношения не имеет..
  8. Спасибоо, пробую.. Обидно то, что на м8 все работало а при переходе на м128 работоспособность меняется в зависимости от оптимизации :( (от вообще ничего не выводит на дисп, до почти работает но несовсем) Я в мейне обьявил переменную uchar val; судя по коду он ее положил в Р24, по ходу я вызываю из библиотеки функцию вывода на дисп. Дык он при вызове, регистры не сохраняет в стеке и смело там использует Р24 чем порит его:( как заставить в стеке сохранять? или может как-то по иному обьявить переменную?
  9. А где рамер искать? vbb4.map vbb4.txt
  10. Листинг я с самого начала изучал.... но ничего там крамольного не увидел.. указателей у меня навалом в основном на тексты во флеше. А memspy я даже не знаю что это :( Тут прочитал что больше 2-х переменных в функцию не стоит передавать сейчас попробую.
  11. IAR проблемы со стеком ...

    lcd.txtГоспода, может подскажет кто, где почитать толковую инфу (желательно на русском) как компилятор распоряжается памятью АВРа. В частности периодически возникают ошибка CSTACK. Методом тыка изнменяя параметр в опциях ИАРа ошибка исчезает. Но программа глючит. Компилируется нормально а в железе непредсказуемые глюки связанные с передачей значений переменных внешним функциям... Образ кода сейчас подготовлю. Пробовал оптимизацию менять, переменные в разных местах обьявлять... Глючит в подсчете sum3 и в некоторых позициях sum2. Причем в зависимости от различных модификаций в разных местах. В начале была мега8 сейчас перешел на м128. на 128 еще хуже стало :( Вообще дисплей отказывается текст писать...
×
×
  • Создать...