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

KIr85

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

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

  • Посещение

Репутация

0 Обычный

Информация о KIr85

  • Звание
    Участник
    Участник
  • День рождения 21.02.1985

Контакты

  • Сайт
    Array
  • ICQ
    Array

Информация

  • Город
    Array
  1. Спасибо! Заработало!!! Обработчик выглядит след. образом #pragma vector=0x08 // внешие прерывания PORTD __interrupt void PORD_edge(void){ asm("nop"); asm("nop"); asm("nop"); asm("nop"); } 0x08 = 0x06+const, где const = 0x02, а 0x06 берется отсюда Откуда берется 0x02 хз, но работает ))
  2. Здравствуйте. Имеется отладочная плата STM8S-DISCOVERY http://www.st.com/jp/evalboard/product/247087.jsp Код пишу в IAR... Для прерывания по переполнению TIM1 все прозрачно. Смотрим подключаемый файл iostm8s105c6.h, находим строчку #define TIM1_OVR_TIF_vector 0x0D Далее в main.cpp пишем обработчик... #pragma vector=TIM1_OVR_UIF_vector // прерывание каждые 20мкс __interrupt void Tim1_over(void){ TIM1_SR1_bit.UIF = 0; // Сброс флага прерывания, обязательно делать вручную!!! counter++; if(counter == 25000){ // это 0,5 сек c_c = c_c+1; counter=0; if(c_c == 2){ // Это 1 сек c_c=0; PD_ODR_bit.ODR0 = ~PD_ODR_bit.ODR0; } } } Теперь стал дальше изучать... Появилось два вопроса.. 1. Что значит значение 0x0D в подключаемом файле iostm8s105c6.h??? 2. Как узнать это значение для внешнего прерывания, т.к. в файле iostm8s105c6.h я его не нашел... Т.е. как написать обработчик для внешнего прерывания.. Весь код main.cpp ниже #include "iostm8s105c6.h" char flag = 1; int counter = 0; char c_c = 0; bool c=false; #pragma vector=TIM1_OVR_UIF_vector // прерывание каждые 20мкс __interrupt void Tim1_over(void) { // Обработчик прерывания таймера здесь! TIM1_SR1_bit.UIF = 0; // Сброс флага прерывания, обязательно делать вручную!!! counter++; if(counter == 25000){ // это 0,5 сек c_c = c_c+1; counter=0; if(c_c == 2){ // Это 1 сек c_c=0; PD_ODR_bit.ODR0 = ~PD_ODR_bit.ODR0; } } } void init(void){ //Инициализируем CLK CLK_ECKR_bit.HSEEN=1; //Разрешаем работу генератора с внешним кварцем (HSEEN) CLK_SWCR_bit.SWEN=1; //Разрешаем переключение генераторов; CLK_SWR=0xB4; //Выбираем clock от кварцевого генератора (HSE) CLK_CKDIVR=0; //Делители частоты внутреннего и внешнего генератора на 1 - частота ядра максимальная while(CLK_CMSR!=0xB4); //Ждем стабилизации частоты CLK_CSSR_bit.CSSEN=1; //Разрешаем автопереключение источника Clock на внутренний при неисправности генератора //Инициализируем GPIO //на Discovery светодиод подключен на PD0, активный уровень - 0 PD_DDR_bit.DDR0=1; // PD0 - на выход, TIM3_CH2 PD_CR1_bit.C10=1; // In output mode (DDR = 1): 0: Pseudo open drain 1: Push-pull, slope control for the output depends on the // corresponding CR2 bit PD_CR2_bit.C20=1; // In output mode (DDR = 1): 0: Output speed up to 2 MHz 1: Output speed up to 10 MHz PD_ODR_bit.ODR0=0; // Writing to the ODR register when in output mode applies a digital value to the I/O through the latch. PD_DDR_bit.DDR2 = 0; // PD1 - на вход PD_CR1_bit.C12=0; // In input mode (DDR = 0): 0: Floating input 1: Input with pull-up PD_CR2_bit.C22=1; // In input mode (DDR = 0): 0: External interrupt disabled 1: External interrupt enabled //PD_ODR_bit.ODR0=0; // In input mode, writing in the ODR register, latche s the value in the register but does not change the pin state. CPU_CCR_bit.I0 = 1; CPU_CCR_bit.I1 = 1; EXTI_CR1_PDIS = 3; // 00: Falling edge and low level 01: Rising edge only 10: Falling edge only 11: Rising and falling edge //Инициализируем TIM1, прерывание каждые 20мкс TIM1_PSCRH = 0x00; // The counter clock frequency fCK_CNT is equal to fCK_PSC / (PSCR[15:0]+1) TIM1_PSCRL = 0x00; // При 16 МГц один такт 62,5нс. Для 20 мкс нужно 320 тактов. TIM1_ARRH=0x01; TIM1_ARRL=0x40; // Досчитать 320. TIM1_IER_bit.UIE = 1; TIM1_CR1_bit.CEN = 1; } void main( void ) { init(); asm("rim"); while(1){ asm("nop"); asm("nop"); asm("nop"); asm("nop"); } }
  3. Спасибо! В последней версии Альтиума этот баг не исправлен?
  4. Красным кружком отметил "особые" места соединения проводников на схеме (см. рис. ниже). После обычного перемещения всех элементов на схеме, пропадают соединения (см. рис. ниже). Баг?? Версия Альтиума
  5. На плате два полигона на разных слоях с одинаковым именами (poly_in). Создал для них правило, которое регламентирует зазор от...(ниже список по приоритетам, см. рис. 003.jpg) 1. между полигоном и компонентом DD5 2. между полигоном и компонентом DD1 3. между полигоном и всем остальным Как видно из рисунков (см. ниже), на один из полигонов это правило подействовало, а на другой нет.
  6. Ну кто к чему привык... Если вы только видели заводскую пайку, то можете так говорить. Это ручная пайка ХОРОШЕГО качества. Говорю как человек, который уже не первый год работает в этой сфере и паяльник держать умею B) Единственное что сам признаю, на этом экземпляре маленько косо поставил контроллер DD1. Но это лишь следствие того, что собирал дома на коленке в 2 часа ночи )
  7. При запуске Design Rule Check вылезло такое окошко Но вроде как проверка прошла до конца...
  8. 1 шт. отправил в Челябинск. индекс получателя 454016
  9. Программатор AVRISP-MKII от компании Atmel - весьма серьезное устройство, которое может прошивать (только прошивать, внутрисхемную отладку он делать не умеет) большой список микроконтроллеров по протоколам ISP, PDI и TPI. Данный программатор выполнен на микросхеме AT90USB162AU. Программирует ВСЕ контроллеры фирмы Atmel, у которых есть интерфейс SPI, PDI, TPI Тестировался в среде AVR Studio 4.18, определяется как AVRISP-MKII Обратите внимание! Размер печатной платы 36мм Х 25мм Стоимость 500руб. Бесплатная доставка по РФ!!!
  10. Возникает СЕРЬЕЗНАЯ ОШИБКА с NetLabel!!! К проводнику в схеме подсоединяю NetLabel (см. рис1), при этом wire не принимает имя NetLabel Хотя если его перетащить в другое место на данной wire (см. рис2), то сама wire переименновывается как нужно! Кому интересно, прилагаю к сообщению еще лист этой схемы. system_connector.zip
  11. Теперь все цены фиксированы. Стоимость изготовления можно посмотреть на моем сайте! см. подпись под сообщением Прототипирование печатных плат Акция!!! До конца этой недели стоимость изготовления 2-х слойной ПП с маской всего 500р. за дм2 + 100р. доставка по России
  12. Тема актуальна. Отписал в личку координаты для связи
  13. Если вы имеете ввиду трассировку платы линиями со скругленными углами, то после начала трассирован проводника нажмите shift + пробел несколько раз, пока проводник при дальнейшей трассировке не начнет поворачивать не под углом а по окружности
  14. Правой кнопкой мыши в любом месте печатной платы (Option->Board Options...), выходит такое окно чуть выше сообщение прочитай ) под номером 2186
×
×
  • Создать...