21.11.2013, 19:04
|
|
Почётный гражданин KAZUS.RU
Регистрация: 10.01.2007
Сообщений: 3,412
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
|
Re: FAQ по STM8
__________________
There's always more than one way to skin a cat.
|
|
|
|
21.11.2013, 19:36
|
|
Временная регистрация
Регистрация: 18.04.2011
Сообщений: 84
Сказал спасибо: 23
Сказали Спасибо 6 раз(а) в 4 сообщении(ях)
|
Re: FAQ по STM8
И снова здравствуйте.
Опять проблема. Суть ситуации АЦП меряет напряжение циклически с 2 входов и пишет через ДМА в массив. А потом из массива в счетчик ШИМ. Все бы хорошо только иногда значения каналов АЦП пишутся не в свою ячейку памяти.
Код:
PHP код:
|
u16 rev[2];
INTERRUPT_HANDLER(DMA_IRQ, 2)
{
DMA1_Channel0-›CSPR &= ~DMA_CSPR_TCIF;
TIM1_CCR2H= rev[0]››8;
TIM1_CCR2L|= (u8)rev[0];
TIM1_CCR1H= rev[1]››8;
TIM1_CCR1L|= (u8)rev[1];
}
CLK_CKDIVR = 0;
PD_DDR_bit.DDR2=1;
PD_CR1_bit.C12=1;
PD_CR2_bit.C22=1;
PD_DDR_bit.DDR3=1;
PD_CR1_bit.C13=1;
PD_CR2_bit.C23=1;
PD_DDR_bit.DDR4=1;
PD_CR1_bit.C14=1;
PD_CR2_bit.C24=1;
CLK-›PCKENR2 |= CLK_PCKENR2_ADC1;
CLK_PCKENR2_bit.PCKEN21 = 1; //Включаем тактирование таймера
CLK-›PCKENR2 |= CLK_PCKENR2_DMA1;
TIM1_CCMR1_bit.OC1M=6; //Режим работы
TIM1_CCMR2_bit.OC2M=6;
TIM1_BKR_bit.MOE=1;
TIM1_PSCRH = 0;
TIM1_PSCRL = 0; //Делитель на 1
TIM1_ARRH =(4100)››8;
TIM1_ARRL =(4100)&0x00ff;
TIM1_CCER1_bit.CC1E=1; // разрешение канала
TIM1_CCER1_bit.CC2E=1;
ADC1-›CR1 |= ADC_CR1_ADON|ADC_CR1_CONT|ADC_CR1_EOCIE;
ADC1-›SQR[3] |=0x0C;
// ADC1-›CR2 |= 3;
DMA1_Channel0-›CNBTR=2;
DMA1_Channel0-›CPARH = (ADC1_BASE+4)››8; //Адрес регистра АЦП (старший байт)
DMA1_Channel0-›CPARL = (uint8_t)(ADC1_BASE+4); //Младший
DMA1_Channel0-›CM0ARH = (uint8_t)((uint16_t)rev››8); //Адрес буфера
DMA1_Channel0-›CM0ARL =(uint8_t)((uint16_t)rev);
DMA1_Channel0-›CSPR |= DMA_CSPR_16BM; //Режим работы с 16и битными числами.
DMA1_Channel0-›CCR |= DMA_CCR_ARM; //ARM - Auto-Reload mode
DMA1_Channel0-›CCR |= DMA_CCR_IDM | DMA_CCR_CE |DMA_CCR_TCIE; //Включаем канал и разрешаем прерывание
DMA1-›GCSR |= DMA_GCSR_GE; //Включаем DMA
enableInterrupts(); //Разрешаем прерывания
ADC1-›CR1|=ADC_CR1_START;
TIM1_CR1_bit.CEN=1;
|
иногда это через 2-3 цикла измерения.
Правильно я понял что прерывании от ДМА приходит при заполнении всего массива (записи указанного числа байт)?
Последний раз редактировалось Uvavan; 21.11.2013 в 20:25.
|
|
|
|
21.11.2013, 20:48
|
|
Заблокирован
Регистрация: 25.04.2013
Сообщений: 1,431
Сказал спасибо: 0
Сказали Спасибо 385 раз(а) в 254 сообщении(ях)
|
Re: FAQ по STM8
Сообщение от Uvavan
|
Все бы хорошо только иногда значения каналов АЦП пишутся не в свою ячейку памяти.
|
А куда они пишутся? Сразу скажу, никуда в другое место они писаться не могут!
|
|
|
|
21.11.2013, 20:57
|
|
Временная регистрация
Регистрация: 18.04.2011
Сообщений: 84
Сказал спасибо: 23
Сказали Спасибо 6 раз(а) в 4 сообщении(ях)
|
Re: FAQ по STM8
Сообщение от nahimovv
|
А куда они пишутся? Сразу скажу, никуда в другое место они писаться не могут!
|
Получается значения каналов АЦП меняются в массиве местами. Пару раз в 0 элементе массива 2 канал, а в 1 - 3 канала. Потом значения поменялись местами и так скачут.
Последний раз редактировалось Uvavan; 21.11.2013 в 21:05.
|
|
|
|
21.11.2013, 21:53
|
|
Почётный гражданин KAZUS.RU
Регистрация: 19.08.2006
Адрес: Львов
Сообщений: 1,616
Сказал спасибо: 65
Сказали Спасибо 315 раз(а) в 264 сообщении(ях)
|
Re: FAQ по STM8
Сообщение от Uvavan
|
Получается значения каналов АЦП меняются в массиве местами. Пару раз в 0 элементе массива 2 канал, а в 1 - 3 канала. Потом значения поменялись местами и так скачут.
|
Опять программы начинают жить самостоятельно от задумок создателя. Вспоминается, здесь однажды утверждал наш коллега, что у него "программа не заходит в функцию". Очень похоже. Только тут значения "скачут по памяти", как лошадки на лужайке.
Читайте и еще раз читайте, что же вы там написали. И постарайтесь написанное вами же понять.
__________________
С уважением,
Vic / ut1wpr
|
|
|
|
23.11.2013, 15:27
|
|
Гражданин KAZUS.RU
Регистрация: 13.06.2005
Адрес: РК г.Павлодар
Сообщений: 866
Сказал спасибо: 99
Сказали Спасибо 216 раз(а) в 140 сообщении(ях)
|
Re: FAQ по STM8
Решил таки и либы STD попробовать.
STM8L к IAR прикрутилась без проблем, а вот STM8S не получается.
Где я накосячил? Поправьте проект кому не влом.
__________________
Не ошибается лишь тот, кто ни чего не делает!
|
|
|
|
23.11.2013, 16:24
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
Re: FAQ по STM8
woroba, На кой хрен, проблем мало? Ради бога .
1) Удаляешь папку inc из менеджера проекта и свои абсолютные пути в препроцессоре .
Вместо этого прописываешь путь к хэдерам в препроцессоре :
$PROJ_DIR$\inc
2) Удаляешь
Код:
|
#include "stm8s.h"
#include "stm8s_adc1.h"
#include "stm8s_gpio.h" |
И вписываешь только
Код:
|
#include "stm8s_conf.h" |
3) Добавляешь в конец main.c
Код:
|
#ifdef USE_FULL_ASSERT
void assert_failed(u8* file, u32 line)
{
while (1)
{
}
}
#endif |
В stm8l скорей всего точно так же "насоздавал" без понятия.
Прикольно конечно наблюдать, как новичок вместо изучения архитектуры и С , наслушавшись кухарок-визажистов любителей SPL, сам себе злобный буратино...
__________________
Осторожно , злой кот
Последний раз редактировалось dosikus; 23.11.2013 в 16:27.
|
|
|
Сказали "Спасибо" dosikus
|
|
|
23.11.2013, 18:18
|
|
Заблокирован
Регистрация: 25.04.2013
Сообщений: 1,431
Сказал спасибо: 0
Сказали Спасибо 385 раз(а) в 254 сообщении(ях)
|
Re: FAQ по STM8
dosikus, может пора выложить новую мурзилку с весёлыми картинками для создателей проекта ИАР с применением SPL? У тя хорошо получается! Не?
|
|
|
|
23.11.2013, 18:36
|
|
Почётный гражданин KAZUS.RU
Регистрация: 19.08.2006
Адрес: Львов
Сообщений: 1,616
Сказал спасибо: 65
Сказали Спасибо 315 раз(а) в 264 сообщении(ях)
|
Re: FAQ по STM8
Сообщение от nahimovv
|
dosikus, может пора выложить новую мурзилку с весёлыми картинками для создателей проекта ИАР с применением SPL? У тя хорошо получается! Не?
|
Точно. Типа "как правильно прошивать фьюзы?"...
Только вот ведь беда. Сколько уже про эти фьюзы и мурзилок, и юнтехников понаписано, а вопросы эти в соответствующих темах/ветках по количеству бьют все остальные.
Написать можно. Кто читать будет?
Ну и еще одно. Многие из новисов требуют, чтобы выложили им как "раз и навсегда правильно..." И невдомек им, что существуют много способов сконфигурировать среду до рабочего состояния. И впадают они в ступор, когда читают в одной мурзилке "У мну вот так и все работает, знацца у мну истина!", а в другой, не менее уважаемой мурзилке совсем другие картинки, и (о ужас) - "У мну работает, знацца у мну полный ТРУ!".
__________________
С уважением,
Vic / ut1wpr
|
|
|
|
23.11.2013, 18:54
|
|
Заблокирован
Регистрация: 25.04.2013
Сообщений: 1,431
Сказал спасибо: 0
Сказали Спасибо 385 раз(а) в 254 сообщении(ях)
|
Re: FAQ по STM8
Та не! На тру пьедестал никто не замахивается, просто я попробовал как предложил dosikus, ан не взлетело!
Я понимам, что у меня в голове свои тараканы, элитные и откормленные, свои привычки и требования.
Ладно, пусть не выкладывает, а то действительно думать и разговаривать разучатся!
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 19:12.
|
|