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

Очень странно, где то трабл, чудес не бывает. Можете выложить полный код еще раз?

Нет проблем

    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$;;;

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот мой "моргающий код" на библиотечных функциях.

 

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); 
  }
}

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Приболел, засем долго не появлялся.

Вы свою проблему так и не победили? Могу только высказать предположение. Максимальная частота изменения пина 10МГц. У вас другом за другомЭ, в общем цикле, идет инкрементирование счетчика(порта), может тут собака зарыта? Попробуйте "подергать" именно проблемными пинами через задежку. Если и это не поможет, то я не знаю даже....

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Приболел, засем долго не появлялся.

Вы свою проблему так и не победили? Могу только высказать предположение. Максимальная частота изменения пина 10МГц. У вас другом за другомЭ, в общем цикле, идет инкрементирование счетчика(порта), может тут собака зарыта? Попробуйте "подергать" именно проблемными пинами через задежку. Если и это не поможет, то я не знаю даже....

Нет, проблема до сих пор не решена. Собрал вторую плату - ведет себя аналогично первой. Если говорить насчет частоты, то6 во-первых PORTD все-таки работает; во-вторых, изначально я пробовал запускать программу с внутренним генератором (16МГц / 8) и результат был тот же самый. Инкрементирование порта ни чем не отличается от инкрементирования любой другой ячейки памяти (в PIC, кстати сказать, сделано аналогично). Я пробовал по-разному изменять программу. Например, инкрементировал аккумулятор и результат пересылал в порт, инкрементировал один порт (неработающий) и результат пересылал в другой (работающий) порт. Абсолютно нет никакой разницы. Ни один порт толком не заработал.

В общем, пришел к выводу, что дело скорее всего не в программе, а именно в "железе". Правда, единственное в чем я отошел от рекомендаций фирмы, это величина емкости внешнего конденсатора. Фирма рекомендует значения 0.47 - 1.0 мкф. У меня стоит конденсатор номиналом 2.2 мкф. Есть призрачная надежда, что с заменой конденсатора все встанет на свои места. Но ...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нет, проблема до сих пор не решена. Собрал вторую плату - ведет себя аналогично первой. Если говорить насчет частоты, то6 во-первых PORTD все-таки работает; во-вторых, изначально я пробовал запускать программу с внутренним генератором (16МГц / 8) и результат был тот же самый. Инкрементирование порта ни чем не отличается от инкрементирования любой другой ячейки памяти (в PIC, кстати сказать, сделано аналогично). Я пробовал по-разному изменять программу. Например, инкрементировал аккумулятор и результат пересылал в порт, инкрементировал один порт (неработающий) и результат пересылал в другой (работающий) порт. Абсолютно нет никакой разницы. Ни один порт толком не заработал.

В общем, пришел к выводу, что дело скорее всего не в программе, а именно в "железе". Правда, единственное в чем я отошел от рекомендаций фирмы, это величина емкости внешнего конденсатора. Фирма рекомендует значения 0.47 - 1.0 мкф. У меня стоит конденсатор номиналом 2.2 мкф. Есть призрачная надежда, что с заменой конденсатора все встанет на свои места. Но ...

Дам-с, выходит какие то проблемы с железом, поставка такая что ли, я с таким не сталкивался...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нет, проблема до сих пор не решена. Собрал вторую плату - ведет себя аналогично первой.

2 _Bill может попробовать проверить железо на Си, а потом перейти к ассемблеру (можно и листинг подсмотреть). Аналогично Dog Pawlowa в IAR сделал пробный проектик моргания штатным светодиодом Discovery с использованием библиотек из примера - по прерыванию 2 таймера светодиодик исправно мигает. Ассемблер STM8 хорош, но на Си хороши и готовые библиотеки - не пришлось сильно копаться в даташите.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 _Bill может попробовать проверить железо на Си, а потом перейти к ассемблеру (можно и листинг подсмотреть). Аналогично Dog Pawlowa в IAR сделал пробный проектик моргания штатным светодиодом Discovery с использованием библиотек из примера - по прерыванию 2 таймера светодиодик исправно мигает. Ассемблер STM8 хорош, но на Си хороши и готовые библиотеки - не пришлось сильно копаться в даташите.

Делал я на Си. Попробовал IAR. Разницы абсолютно никакой нет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Проверил все пины D - порта, на своем ките, все работает. Что то у вас не то с партией наверное....

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Проверил все пины D - порта, на своем ките, все работает. Что то у вас не то с партией наверное....

В партии еще осталось 8 штук. Что-то не хочется их все запаивать.

А какой контроллер у вас? Может свой код выложите?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Контроллер у меня 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;
    }
}

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Код до безобразия прост, все в одном файле)

Попробовал как у вас. Никаких изменений. Уже не знаю что и делать.

Изменено пользователем rezident
Нарушение п.3.4 Правил форума.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Даааа, причина должна быть, чудес не бывает. А больше вариантов никаких нет? Проблема только с этим железом или другие мк от STM8 вы не пробывали? Прям мистика какае то. жаль что вы из другого города, я бы вам дал свой кит для теста, или подарил) второй такой же подаренный лежит без толку)

Изменено пользователем topkin

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Даааа, причина должна быть, чудес не бывает. А больше вариантов никаких нет? Проблема только с этим железом или другие мк от STM8 вы не пробывали? Прям мистика какае то. жаль что вы из другого города, я бы вам дал свой кит для теста, или подарил) второй такой же подаренный лежит без толку)

Нет, других МК пока нет. Жду когда появится STM8S Discovery в "Промэлектроника".

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нет, других МК пока нет. Жду когда появится STM8S Discovery в "Промэлектроника".

В общем, дело такое. Прошил свою программу в STM8S Discovery. Все работает нормально. Так что, похоже, все упирается в STM8S103K6 (в Discovery стоит STM8S105C6). Или нет?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В общем, дело такое. Прошил свою программу в STM8S Discovery. Все работает нормально.

 

А чем вы прошивали контроллер до появления у вас STM8S-Discovery ?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...