Bill 0 21 мая, 2010 Опубликовано 21 мая, 2010 · Жалоба Очень странно, где то трабл, чудес не бывает. Можете выложить полный код еще раз? Нет проблем switch .text ; ; ** InitPorts -- функция инициализайии портов В/В ; InitPorts: ld a, #0FFh ; Initiate ports ld PB_DDR, a ; ld PB_CR1, a ; ld PD_DDR, a ; ld PD_CR1, a ; ld PD_CR2, a ; ; ld a, #LED_MASK ; Установить порт управления LED драйвером на вывод ; ld LED_DDR, a ; ; ld LED_CR1, a ; включить push-pull режим ; clr LED_PORT ; Сбросить порт ret ; ; ***** main - головная функция ***** ; _main: ldw x, #RAM_END ; Инициализировать стек ldw sp, x ; bset SWEN ; Switch clock to HSE mov CLK_SWR, #0xB4 ; callr InitPorts ; Инициализировать порты 1$: ;;; Бесконечный цикл ; btjf TIM_05, 2$ ; Проверить флаг события и переход, если не установлен ; bres TIM_05 ; Сбросить флаг ; callr Bin2BCD ; Преобразовать новое значение счетчикак для вывода ;2$: ; callr LEDout ; Вывод значения счетчика на индикатор inc PB_ODR ; Use ports a a binary counter inc PD_ODR ; ; bcpl PB_ODR, #1 ; bcpl PD_ODR, #1 ; bcpl PD_ODR, #6 ; bres PD_ODR, #0 jra 1$;;; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DogPawlowa 0 21 мая, 2010 Опубликовано 21 мая, 2010 · Жалоба Вот мой "моргающий код" на библиотечных функциях. void main(void) { CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1); GPIO_DeInit(GPIOD); GPIO_Init(GPIOD, GPIO_PIN_0, GPIO_MODE_OUT_PP_LOW_FAST); for (;;) { GPIO_WriteReverse(GPIOD, GPIO_PIN_0); } } Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
topkin 0 25 мая, 2010 Опубликовано 25 мая, 2010 · Жалоба Приболел, засем долго не появлялся. Вы свою проблему так и не победили? Могу только высказать предположение. Максимальная частота изменения пина 10МГц. У вас другом за другомЭ, в общем цикле, идет инкрементирование счетчика(порта), может тут собака зарыта? Попробуйте "подергать" именно проблемными пинами через задежку. Если и это не поможет, то я не знаю даже.... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Bill 0 25 мая, 2010 Опубликовано 25 мая, 2010 · Жалоба Приболел, засем долго не появлялся. Вы свою проблему так и не победили? Могу только высказать предположение. Максимальная частота изменения пина 10МГц. У вас другом за другомЭ, в общем цикле, идет инкрементирование счетчика(порта), может тут собака зарыта? Попробуйте "подергать" именно проблемными пинами через задежку. Если и это не поможет, то я не знаю даже.... Нет, проблема до сих пор не решена. Собрал вторую плату - ведет себя аналогично первой. Если говорить насчет частоты, то6 во-первых PORTD все-таки работает; во-вторых, изначально я пробовал запускать программу с внутренним генератором (16МГц / 8) и результат был тот же самый. Инкрементирование порта ни чем не отличается от инкрементирования любой другой ячейки памяти (в PIC, кстати сказать, сделано аналогично). Я пробовал по-разному изменять программу. Например, инкрементировал аккумулятор и результат пересылал в порт, инкрементировал один порт (неработающий) и результат пересылал в другой (работающий) порт. Абсолютно нет никакой разницы. Ни один порт толком не заработал. В общем, пришел к выводу, что дело скорее всего не в программе, а именно в "железе". Правда, единственное в чем я отошел от рекомендаций фирмы, это величина емкости внешнего конденсатора. Фирма рекомендует значения 0.47 - 1.0 мкф. У меня стоит конденсатор номиналом 2.2 мкф. Есть призрачная надежда, что с заменой конденсатора все встанет на свои места. Но ... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
topkin 0 25 мая, 2010 Опубликовано 25 мая, 2010 · Жалоба Нет, проблема до сих пор не решена. Собрал вторую плату - ведет себя аналогично первой. Если говорить насчет частоты, то6 во-первых PORTD все-таки работает; во-вторых, изначально я пробовал запускать программу с внутренним генератором (16МГц / 8) и результат был тот же самый. Инкрементирование порта ни чем не отличается от инкрементирования любой другой ячейки памяти (в PIC, кстати сказать, сделано аналогично). Я пробовал по-разному изменять программу. Например, инкрементировал аккумулятор и результат пересылал в порт, инкрементировал один порт (неработающий) и результат пересылал в другой (работающий) порт. Абсолютно нет никакой разницы. Ни один порт толком не заработал. В общем, пришел к выводу, что дело скорее всего не в программе, а именно в "железе". Правда, единственное в чем я отошел от рекомендаций фирмы, это величина емкости внешнего конденсатора. Фирма рекомендует значения 0.47 - 1.0 мкф. У меня стоит конденсатор номиналом 2.2 мкф. Есть призрачная надежда, что с заменой конденсатора все встанет на свои места. Но ... Дам-с, выходит какие то проблемы с железом, поставка такая что ли, я с таким не сталкивался... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
oll 0 25 мая, 2010 Опубликовано 25 мая, 2010 · Жалоба Нет, проблема до сих пор не решена. Собрал вторую плату - ведет себя аналогично первой. 2 _Bill может попробовать проверить железо на Си, а потом перейти к ассемблеру (можно и листинг подсмотреть). Аналогично Dog Pawlowa в IAR сделал пробный проектик моргания штатным светодиодом Discovery с использованием библиотек из примера - по прерыванию 2 таймера светодиодик исправно мигает. Ассемблер STM8 хорош, но на Си хороши и готовые библиотеки - не пришлось сильно копаться в даташите. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Bill 0 26 мая, 2010 Опубликовано 26 мая, 2010 · Жалоба 2 _Bill может попробовать проверить железо на Си, а потом перейти к ассемблеру (можно и листинг подсмотреть). Аналогично Dog Pawlowa в IAR сделал пробный проектик моргания штатным светодиодом Discovery с использованием библиотек из примера - по прерыванию 2 таймера светодиодик исправно мигает. Ассемблер STM8 хорош, но на Си хороши и готовые библиотеки - не пришлось сильно копаться в даташите. Делал я на Си. Попробовал IAR. Разницы абсолютно никакой нет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
topkin 0 27 мая, 2010 Опубликовано 27 мая, 2010 · Жалоба Проверил все пины D - порта, на своем ките, все работает. Что то у вас не то с партией наверное.... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Bill 0 27 мая, 2010 Опубликовано 27 мая, 2010 · Жалоба Проверил все пины D - порта, на своем ките, все работает. Что то у вас не то с партией наверное.... В партии еще осталось 8 штук. Что-то не хочется их все запаивать. А какой контроллер у вас? Может свой код выложите? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
topkin 0 28 мая, 2010 Опубликовано 28 мая, 2010 · Жалоба Контроллер у меня STM8S105C6T6. Я предпочитаю использовать готовые библиотеки, но для вашего случая написал на прямую с регистрами, для более понятного восприятия. Код до безобразия прост, все в одном файле) /* MAIN.C file * * Copyright (c) 2002-2005 STMicroelectronics */ #include "STM8S105C6.h" void GPIO_Conf(void) { PD_DDR = 0xFF; // all PD pins as output PD_CR1 = 0xFF; // all PD pins output push pull PD_CR2 = 0; // all PD pins speed 2MHz PD_ODR = 0; // all set to 0 } void main() { unsigned long int i; GPIO_Conf(); while (1) { for(i = 0; i < 10000; i++); PD_ODR = PD_ODR ^ 0xFF; } } Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Bill 0 28 мая, 2010 Опубликовано 28 мая, 2010 (изменено) · Жалоба Код до безобразия прост, все в одном файле) Попробовал как у вас. Никаких изменений. Уже не знаю что и делать. Изменено 28 мая, 2010 пользователем rezident Нарушение п.3.4 Правил форума. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
topkin 0 28 мая, 2010 Опубликовано 28 мая, 2010 (изменено) · Жалоба Даааа, причина должна быть, чудес не бывает. А больше вариантов никаких нет? Проблема только с этим железом или другие мк от STM8 вы не пробывали? Прям мистика какае то. жаль что вы из другого города, я бы вам дал свой кит для теста, или подарил) второй такой же подаренный лежит без толку) Изменено 28 мая, 2010 пользователем topkin Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Bill 0 28 мая, 2010 Опубликовано 28 мая, 2010 · Жалоба Даааа, причина должна быть, чудес не бывает. А больше вариантов никаких нет? Проблема только с этим железом или другие мк от STM8 вы не пробывали? Прям мистика какае то. жаль что вы из другого города, я бы вам дал свой кит для теста, или подарил) второй такой же подаренный лежит без толку) Нет, других МК пока нет. Жду когда появится STM8S Discovery в "Промэлектроника". Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Bill 0 23 июня, 2010 Опубликовано 23 июня, 2010 · Жалоба Нет, других МК пока нет. Жду когда появится STM8S Discovery в "Промэлектроника". В общем, дело такое. Прошил свою программу в STM8S Discovery. Все работает нормально. Так что, похоже, все упирается в STM8S103K6 (в Discovery стоит STM8S105C6). Или нет? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimka76 42 23 июня, 2010 Опубликовано 23 июня, 2010 · Жалоба В общем, дело такое. Прошил свою программу в STM8S Discovery. Все работает нормально. А чем вы прошивали контроллер до появления у вас STM8S-Discovery ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться