Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту


 
Опции темы
Непрочитано 04.10.2011, 19:41  
zheleznjakov
Прописка
 
Аватар для zheleznjakov
 
Регистрация: 31.03.2010
Сообщений: 200
Сказал спасибо: 3
Сказали Спасибо 48 раз(а) в 41 сообщении(ях)
zheleznjakov на пути к лучшему
По умолчанию Re: STM8(S/L), первые впечатления

Сообщение от evil_laugh Посмотреть сообщение
Первый вопрос: где можно посмотреть значения контроллерных спецрегистров? Наблюдать их в окне Memory, которое сплошняком показывает всю память контроллера, как-то не очень наглядно.
Второй вопрос: у многих регистров есть так называемое Reset Value. Почему в окне Memory все регистры, кроме очищенных в начале кода, равны 0xFF?
Третий вопрос: почему приведённый выше код, хоть и изменяет значения регистров (от 0xFF) согласно данным командам, ни к чему не приводит? Как вообще правильно инициализировать контроллер? В примерах из сети якобы всё прекрасно работает, хотя там всего одна строчка (выдача 1цы на ножку) добавляется вместо бесконечного цикла, который с самого начала в программе стоит.
И, наконец, четвёртый вопрос - есть ли что-то ... ну, поприличнее, что ли, этой среды разработки, где можно нормально писать на ассемблере под STM8? После MPLAB этот STVD поначалу кажется неудобным, да ещё и симулятор как-то странно работает.
1) меню - вид - регистры периферии
2) см. доку
3) к сожалению симулятор слабенький и не позволяет симулировать работу внешнего генератора, да и ещё много чего не позволяет
4) нет.

Лучший вариант для вас дождаться платы и поработать с ней напрямую.
Реклама:
__________________
ziblog.ru
zheleznjakov вне форума  
Сказали "Спасибо" zheleznjakov
evil_laugh (04.10.2011)
Непрочитано 04.10.2011, 20:00  
evil_laugh
Прохожий
 
Регистрация: 04.10.2011
Сообщений: 7
Сказал спасибо: 2
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
evil_laugh на пути к лучшему
По умолчанию Re: STM8(S/L), первые впечатления

zheleznjakov, спасибо большое.

А что касается "смотри доку" - не могли бы вы чуточку подробнее объяснить, куда именно хотя бы там смотреть? Я правда не понимаю. Казалось бы, запустился контроллер, и все регистры должны принять своё значение после ресета. Почему так не происходит? Это пока основная моя загвоздка...
evil_laugh вне форума  
Непрочитано 04.10.2011, 20:24  
st_1
Заблокирован
 
Регистрация: 26.12.2009
Сообщений: 3,124
Сказал спасибо: 116
Сказали Спасибо 867 раз(а) в 614 сообщении(ях)
st_1 на пути к лучшему
По умолчанию Re: STM8(S/L), первые впечатления

Патамушта STVD это жалкое подобие левой руки...
Попробуйте IAR под STM8... он со своими тараканами... но всё таки...
st_1 вне форума  
Сказали "Спасибо" st_1
evil_laugh (04.10.2011)
Непрочитано 04.10.2011, 20:34  
evil_laugh
Прохожий
 
Регистрация: 04.10.2011
Сообщений: 7
Сказал спасибо: 2
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
evil_laugh на пути к лучшему
По умолчанию

st_1, благодарю! Да, я вот только что установил IAR WB Kickstart edition. Со вчерашнего дня не мог разобраться, почему установщик мне пишет, что только что выданный мне ключ активации истёк. Оказалось, дата на компе на день сбита была

В нём хотя бы... хотя бы... Да! В нём можно нормально просмотреть регистры! и они даже принимают свои изначальные значения!

Осталось понять, как инициализировать контроллер. Код, генерируемый STVD и IAR очень сильно отличаются... У STVD это куча строчек для инициализации стэка и очистки памяти, а у IAR это всего лишь

Код:
        MODULE  asmmain

        PUBLIC  __iar_program_start
        PUBLIC  main

        EXTERN  CSTACK$$Limit

        SECTION `.near_func.text`:CODE:NOROOT(0)

__iar_program_start:
        LDW     X, #CSTACK$$Limit-1     ; Set stackpointer
        LDW     SP, X

main:

        HALT                            ; End of program
        NOP

        END
И всё... А в даташите сказано, что надо стек правильно инициализировать... Плюс к тому, IAR даже не спросил, какой у меня контроллер вообще

Вот ещё что. Я правильно понимаю, что файл с описанием всех регистров - это "iostmXXXXXXX.h" в директории \\Program Files\IAR Systems\Embedded Workbench 6.0 Kickstart\stm8\inc ? Ничего, что он на Си вроде как написан? После включения его в #include компилятор вроде бы больше не ругается на неописанные регистры.

Последний раз редактировалось dosikus; 04.10.2011 в 22:32.
evil_laugh вне форума  
Непрочитано 05.10.2011, 16:38  
evil_laugh
Прохожий
 
Регистрация: 04.10.2011
Сообщений: 7
Сказал спасибо: 2
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
evil_laugh на пути к лучшему
По умолчанию Re: STM8(S/L), первые впечатления

Ура! Приехала моя платка, точнее, я с ней приехал

Стал разбираться. Подключил к компу, что IAR, что STVD плату опознали.

Решил попробовать предыдущий проект запустить сперва в IAR. Результат плачевен. Вместо того, чтобы начать выполнение с начала кода, контроллер следует какой-то своей программе (видно в дизасме) и в начало моего кода никак не попадает. Интересно, почему так? Непонятно.

Ладно, попробовал теперь STVD. Здесь всё немного получше - программа выполняется, и я даже сумел зажечь свой первый диодик да, я счастлив))

Но при попытке, как в первый раз, переключить источник тактирования, я потерпел неудачу. Во-первых, почему в регистре CLK_SWR постоянно находится непонятное мне значение 0x01? Почему не 0хЕ1? И при попытке записать туда 0xE1 ничего не происходит. Я догадываюсь, что это как-то связано с режимом отладки, но как? Кто может подсказать? В IAR всё то же самое.

Нашёл информацию в даташите на свой контроллер. Там действительно Reset Value регистра CLK_SWR равняется 0x01. Но это же совершенно не стыкуется с Reference Manual...


[проблема решена, читал Reference Manual не на тот контроллер... ]

To dosikus&Other_Moderators. Добрый день. Пожалуйста, не объединяйте этот пост с предыдущим. Тема постепенно сползает вниз и рано или поздно потеряется, а здесь, похоже, единственный ресурс, где могут хоть как-то помочь (если заметят ).

Upd: проблемы продолжаются... При попытке установить бит SWEN в CLK_SWCR STVD вылетает с ошибкой "Flash memory is not accessible while core is running".

А IAR, похоже, вообще работать не собирается корректно. Программа (написанная не мной, а генерированная, видимо, средой) начинается с инструкции LD A,__iar_program_start. Почему-то эта инструкция закидывает в A не 0x8000, как это делает STVD, а невесть что, и в результате имеем какой-то дикий замкнутый цикл с невыходом в EPT.

Вопрос: где взять это самое __iar_program_start (где оно определено вообще?), как его переопределить и почему происходит такая ерунда?

Помогите, шесть часов уже мучаюсь ...

Последний раз редактировалось evil_laugh; 05.10.2011 в 20:16.
evil_laugh вне форума  
Непрочитано 30.11.2011, 14:20  
LDZ
Временная регистрация
 
Регистрация: 16.06.2006
Адрес: Даугавпилс
Сообщений: 52
Сказал спасибо: 1
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
LDZ на пути к лучшему
По умолчанию Re: STM8(S/L), первые впечатления

Код:
I2C_GenerateSTART (ENABLE);
  while (!I2C_CheckEvent(I2C_EVENT_MASTER_MODE_SELECT));
              I2C_Send7bitAddress(0xa0, I2C_DIRECTION_TX);
  while (I2C_CheckEvent(I2C_EVENT_MASTER_TRANSMITTER_MODE_  SELECTED));
              I2C_SendData(0x02);  // 
  while (!I2C_CheckEvent(I2C_EVENT_MASTER_BYTE_TRANSMITTIN  G)); 
  
              I2C_GenerateSTART (ENABLE);
  while (!I2C_CheckEvent(I2C_EVENT_MASTER_MODE_SELECT));
              I2C_Send7bitAddress(0xa0, I2C_DIRECTION_RX);
  while (I2C_CheckEvent(I2C_EVENT_MASTER_RECEIVER_MODE_SEL  ECTED));
Код:
              I2C_GenerateSTART (ENABLE);
    008C68    A601           LD        A, #?b1
    008C6A    CD98B9         CALL      I2C_GenerateSTART
  while (!I2C_CheckEvent(I2C_EVENT_MASTER_MODE_SELECT));
??read_clock_0:
    008C6D    AE0301         LDW       X, #0x0301
    008C70    CD94AB         CALL      I2C_CheckEvent
    008C73    A100           CP        A, #0x00
    008C75    27F6           JREQ      ??read_clock_0
              I2C_Send7bitAddress(0xa0, I2C_DIRECTION_TX);
    008C77    3F00           CLR       0x00
    008C79    A6A0           LD        A, #0xA0
    008C7B    CD988D         CALL      I2C_Send7bitAddress
  while (I2C_CheckEvent(I2C_EVENT_MASTER_TRANSMITTER_MODE_  SELECTED));
??read_clock_1:
    008C7E    AE0782         LDW       X, #0x0782
    008C81    CD94AB         CALL      I2C_CheckEvent
    008C84    A100           CP        A, #0x00
    008C86    26F6           JRNE      ??read_clock_1
              I2C_SendData(0x02);  // 
    008C88    A602           LD        A, #?b2
    008C8A    CD9946         CALL      I2C_SendData
  while (!I2C_CheckEvent(I2C_EVENT_MASTER_BYTE_TRANSMITTIN  G)); 
??read_clock_2:
    008C8D    AE0780         LDW       X, #0x0780
    008C90    CD94AB         CALL      I2C_CheckEvent
    008C93    A100           CP        A, #0x00
    008C95    27F6           JREQ      ??read_clock_2
              I2C_GenerateSTART (ENABLE);
    008C97    A601           LD        A, #?b1
И куда пропало I2C_SendData(0x02); ? Третье устройство на шине, оптимизация отключена... Что то IAR... или я... ничего не понимаю... Может кто подскажет что.
Миниатюры:
Нажмите на изображение для увеличения
Название: img.jpg
Просмотров: 70
Размер:	28.6 Кб
ID:	28913  
LDZ вне форума  
Непрочитано 30.11.2011, 15:16  
kison
Почётный гражданин KAZUS.RU
 
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
kison на пути к лучшему
По умолчанию Re: STM8(S/L), первые впечатления

Сообщение от LDZ Посмотреть сообщение
И куда пропало I2C_SendData(0x02); ?
Код:
I2C_SendData(0x02); // 
 008C88 A602 LD A, #?b2
 008C8A CD9946 CALL I2C_SendData
А это тогда что?
kison вне форума  
Непрочитано 30.11.2011, 15:36  
LDZ
Временная регистрация
 
Регистрация: 16.06.2006
Адрес: Даугавпилс
Сообщений: 52
Сказал спасибо: 1
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
LDZ на пути к лучшему
По умолчанию Re: STM8(S/L), первые впечатления

Сообщение от kison Посмотреть сообщение
А это тогда что?
По идеи это должно быть то, что я ищу. Но почему вместо 0х02 стоит какая-то переменная? И где ЭТО на шине?
LDZ вне форума  
Непрочитано 30.11.2011, 15:48  
kison
Почётный гражданин KAZUS.RU
 
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
kison на пути к лучшему
По умолчанию Re: STM8(S/L), первые впечатления

Сообщение от LDZ Посмотреть сообщение
Но почему вместо 0х02 стоит какая-то переменная?
Это какой то глюк листинга. Если смотреть опкод - все в порядке. A602 это именно ld A,#0x02.
Сообщение от LDZ Посмотреть сообщение
И где ЭТО на шине?
А что - нету? Может до этой строчки вообще не доходит? Может ошибка в библиотеке. Может все есть, но Вы просто не замечаете.
kison вне форума  
Сказали "Спасибо" kison
LDZ (30.11.2011)
Непрочитано 30.11.2011, 15:59  
LDZ
Временная регистрация
 
Регистрация: 16.06.2006
Адрес: Даугавпилс
Сообщений: 52
Сказал спасибо: 1
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
LDZ на пути к лучшему
По умолчанию Re: STM8(S/L), первые впечатления

Ага, спасибо за разъяснение. Выше картинка есть... не знаю, как еще смотреть... Это третье устройство, которое не хочет работать. Два работают, библиотека не при делах, надеюсь.
LDZ вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
KiCAD-объявления и впечатления al_dan KiCAD 32 03.10.2016 17:02
Народ, посмотрите quasm, Как ваши впечатления? suri Proteus, KiCAD и другие ECAD 5 14.10.2009 11:57


Часовой пояс GMT +4, время: 16:36.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot