Мелкие вопросы по МК и ПЛИС.

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить
Chettuser

Сообщение Chettuser »

А что скажете по поводу моего вопроса?
Реклама
Друг Кота
Аватара пользователя
Сообщения: 3961
Зарегистрирован: Пн июл 13, 2009 14:37:39
Откуда: Московская область, наукоград.....

Сообщение Meteor »

Весьма странная конструкция
1: begin i=0; cout=clk; end;
Смущает зачем в процессе реагирующему на положительный фронт, присваивать значение выходу clk<=1? может потому квартус и ругается?
Более того, coutу присваивается значения в двух местах. вы уж выберите одно чтоли
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
Контактная информация:
Реклама
skk
Сверлит текстолит когтями
Сообщения: 1123
Зарегистрирован: Вт июн 30, 2009 14:56:58
Откуда: Казань

Сообщение skk »

извините, что вмешиваюсь в Вашу беседу, что можете сказать про микру DS12887 компании DALLAS? как я понял это микра часов реального времени с батарей на борту. только я че-то не нашел схемы с этой микрой, може дать ссылку если видели :))
Теория и практика иногда сталкиваются. Когда это случается, теория проигрывает. Всегда.
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 3961
Зарегистрирован: Пн июл 13, 2009 14:37:39
Откуда: Московская область, наукоград.....

Сообщение Meteor »

skk писал(а):...что можете сказать про микру DS12887 компании DALLAS?
Если вы ко мне, то я ничего нового не скажу- в моей практике надобности в ней не было
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Chettuser

Сообщение Chettuser »

Meteor писал(а):Смущает зачем в процессе реагирующему на положительный фронт, присваивать значение выходу clk<=1?
Попытка применить "ключ" для случая i=0.
Реклама
skk
Сверлит текстолит когтями
Сообщения: 1123
Зарегистрирован: Вт июн 30, 2009 14:56:58
Откуда: Казань

Сообщение skk »

Meteor писал(а):Если вы ко мне, то я ничего нового не скажу- в моей практике надобности в ней не было
Всем :))
Теория и практика иногда сталкиваются. Когда это случается, теория проигрывает. Всегда.
Контактная информация:
Реклама
Первый раз сказал Мяу!
Сообщения: 26
Зарегистрирован: Пн дек 24, 2012 18:32:07
Откуда: Беларусь, Гомель

Сообщение nozyl »

Доброго времени суток!

Прошу помочь разобратся в подключении к программатору громова (com) микросхему PIC16F628A
Последний раз редактировалось nozyl Пн дек 24, 2012 20:16:16, всего редактировалось 1 раз.
Родился
Сообщения: 3
Зарегистрирован: Вс ноя 25, 2012 08:12:54

Сообщение buregon »

Добый день, не могу разобраться с работой каунтера на AVR (atmega8). По аналогии с обучалкой сделал моргалку, только вместо лампочек - последовательный вывод на 8-сегментный индикатор цифр от 0 до 9. Смена цифр идет по прерыванию Timer/Counter1 Compare Match A, пытаюсь настроить смену скорости переключения изменением значения каунтера по кнопке:

Код: Выделить всё

ldi Temp2,0x0d
sbis PINC, 3
out OCR1AH,Temp2

ldi Temp2,0x3d
sbis PINC, 4
out OCR1AH,Temp2
При нажатии на кнопку 3 - не происходит ничего, при нажатии на 4 - пропускает одну цифру на вывод. Не могу понять, в какую сторону копать...

Полный код:
Спойлер

Код: Выделить всё

.cseg
.org 0

rjmp Reset				;1  All Reset
rjmp INT_0              ;2  External Interrupt Request 0
rjmp INT_1              ;3  External Interrupt Request 1
rjmp TM2_COM            ;4  Timer/Counter2 Compare Match
rjmp TM2_OVF            ;5  Timer/Counter2 Overflow
rjmp TM1_CAPT           ;6  Timer/Counter1 Capture Event
rjmp TM1_COMA           ;7  Timer/Counter1 Compare Match A
rjmp TM1_COMB           ;8  Timer/Counter1 Compare Match B
rjmp TM1_OVF            ;9  Timer/Counter1 Overflow
rjmp TM0_OVF            ;10 Timer/Counter0 Overflow
rjmp SerTrCom           ;11 Serial Transfer Complete
rjmp UsRxCom            ;12 USART Rx Complete
rjmp UsEmt              ;13 USART Data Register Empty
rjmp UsTxCom            ;14 USART Tx Complete
rjmp ADCCom             ;15 ADC Conversion Complete
rjmp EprRdy             ;16 EEPROM Ready
rjmp AnCom              ;17 Analog Comparator
rjmp TWSerIn            ;18 Two-Wire Serial Interface
rjmp ProMemRdy          ;19 Store Program Memory Ready


;Reset:                         ;1  All Reset
INT_0:                          ;2  External Interrupt Request 0
INT_1:                          ;3  External Interrupt Request 1
TM2_COM:                        ;4  Timer/Counter2 Compare Match
TM2_OVF:                        ;5  Timer/Counter2 Overflow
TM1_CAPT:                       ;6  Timer/Counter1 Capture Event
;TM1_COMA:                      ;7  Timer/Counter1 Compare Match A
TM1_COMB:                       ;8  Timer/Counter1 Compare Match B
TM1_OVF:                        ;9  Timer/Counter1 Overflow
TM0_OVF:                        ;10 Timer/Counter0 Overflow
SerTrCom:                       ;11 Serial Transfer Complete
UsRxCom:                        ;12 USART Rx Complete
UsEmt:                          ;13 USART Data Register Empty
UsTxCom:                        ;14 USART Tx Complete
ADCCom:                         ;15 ADC Conversion Complete
EprRdy:                         ;16 EEPROM Ready
AnCom:                          ;17 Analog Comparator
TWSerIn:                        ;18 Two-Wire Serial Interface
ProMemRdy:                      ;19 Store Program Memory Ready
          reti

.def     Temp=R16  ; общий
.def     Temp1=R17 ; забит счетчиком массива
.def     Temp2=R18
.def     Temp3=R19
.def     Temp4=R20 ; флаг для точки


Reset:    ldi Temp,0b11111111   
          out DDRD,Temp

          ldi Temp,0b00010000   
          out TIMSK,Temp

          ldi Temp,0b00000011   
          out TCCR1B,Temp

          ldi Temp,0x3d         
          out OCR1AH,Temp
          ldi Temp,0x09
          out OCR1AL,Temp

                  ldi r16,low(RAMEND)
                  out spl,r16
                  ldi r16,high(RAMEND)
                  out sph,r16

          ldi Temp1,0b00000001  

          ldi Temp,0            
          out TCNT1H,Temp
          out TCNT1L,Temp

          sei                   
;#####################################
;Основной цикл
;#####################################
Inf:     
sbis PINC, 0
ldi Temp1,10

sbis PINC, 1
ldi Temp4,1

sbis PINC, 2
ldi Temp4,0

ldi Temp2,0x0d
sbis PINC, 3
out OCR1AH,Temp2

ldi Temp2,0x3d
sbis PINC, 4
out OCR1AH,Temp2

jmp Inf             
;#####################################
;конец основного цикла
;#####################################


;#####################################
;Прерывание по счетчику
;#####################################
TM1_COMA:
         ldi Temp,0         ;   
         out TCNT1l,Temp	;
         out TCNT1h,Temp	;Обнуление таймера

         cpi Temp1,10       ;Проверка конца массива   
         breq Init          ;Если конец - пеход на обнулени адреса 


ReadArray:
         ldi ZH,High(Array*2) 
         ldi ZL,Low(Array*2)

         ldi Temp,0           
         add ZL,Temp1
         adc ZH,Temp

         lpm                  

         mov Temp,R0           
         inc Temp1            

		 cpi Temp4, 1
		 breq point

         rjmp Output          

point:
		ldi Temp3, 0b01000000
		add Temp,Temp3
		rjmp Output

Init:    ldi Temp1,0         
         rjmp ReadArray

Output:  out PortD,Temp       

         reti                  
;#####################################
;Конец прерывания по счетчику
;#####################################

Array:
.db   0b10011111,0b00000101,0b10110011,0b10100111,0b00101101,0b10101110,0b10111110,0b00000111,0b10111111,0b10101111
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 162
Зарегистрирован: Вс дек 09, 2012 12:14:44

Сообщение 1essor1 »

Хочу начать обучаться в направлении програмирования и использования МК, но инфы так много что не знаешь с чего начать. Например с каких мк AVR или PIC? Что неопходимо уже иметь в багаже знаний и умений чтобы начать? Бывалые люди в этом вопросе подскажете как быть и за что браться, как эффективнее начать обучение? Можно носом ткнуть в соответсвующие источники. Всякой помощи буду премного благодарен.
Мучитель микросхем
Сообщения: 436
Зарегистрирован: Сб апр 10, 2010 16:46:26

Сообщение murzila »

Начните хотя бы отсюда или отсюда.
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 162
Зарегистрирован: Вс дек 09, 2012 12:14:44

Сообщение 1essor1 »

Благодарю! А почему именно семейство AVR? В чем их преимущество или просто отличия?
Друг Кота
Аватара пользователя
Сообщения: 7360
Зарегистрирован: Пт авг 28, 2009 21:34:30
Откуда: 845-й км.

Сообщение uldemir »

AVR - это прошлый век. Начинайте лучше с MSP430 от техасских инструментов. Простенькие микросхемки - никакой возни с фьюзами. правда для программирования нужно купить ихний Launchpad - макетка с программатором/отладчиком. Продаётся очень дёшево и работает через USB - не надо никаких LPT или com-портов. Если нужно что помощнее - берете от ST контроллеры STM8S, STM8L или, вообще, STM32.

А на самом деле - лучше выбирать то, что приглянется или первым попадёт под руку. Или кто есть из знакомых специалистов. Можешь заглянуть в тему где "девушка с паяльником желает познакомиться" - там тоже можно что-нибудь почерпнуть. Короче, послушай советов и делай по-своему.
А люди посмотрят и скажут: "Собаки летят. Вот и осень."
Мучитель микросхем
Сообщения: 436
Зарегистрирован: Сб апр 10, 2010 16:46:26

Сообщение murzila »

Человек спросил про AVR/PIC, я ответил. Просто эти две платформы гораздо легче в изучении (и до сих пор достаточно популярны), чем упомянутые вами STM (про Cortex я вообще промолчу). Да и нагрузочная способность портов позволяет цеплять к ним те же светодиоды без опаски спалить порты. Программаторы для обеих платформ давно уже не требуют ни COM, ни LPT и вы это прекрасно знаете. Зачем же вводить человека в заблуждение. Предложенные вами MSP430 достаточно специфичны, ну и с периферией там весьма небогато в младших семействах. Не так ли?
Модератор
Аватара пользователя
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Сообщение ploop »

AVR - это прошлый век.
А алгебра логики - 19 век вообще, но без неё никуда :)
VR/PIC очень просты с точки зрения архитектуры, и хорошо подходят для обучения. После них уже не страшны более серьёзные МК. Иначе есть риск бездумного копипаста кусков кода и использования тяжёлых библиотек, без понимания сути, там, где этого совсем не надо. А это не есть хорошо.
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 162
Зарегистрирован: Вс дек 09, 2012 12:14:44

Сообщение 1essor1 »

Спасибо люди добрые) Сделал выводы, теперь знаю в каком направлении двигаться)
Друг Кота
Аватара пользователя
Сообщения: 7360
Зарегистрирован: Пт авг 28, 2009 21:34:30
Откуда: 845-й км.

Сообщение uldemir »

Мой пост был о том, что не надо зацикливаться на выборе из двух возможностей. Есть и другие.
А люди посмотрят и скажут: "Собаки летят. Вот и осень."
Родился
Аватара пользователя
Сообщения: 15
Зарегистрирован: Чт июн 21, 2012 09:59:29

Сообщение Volt_A »

Прошу прощения, что копирую с соседней ветки, изначальный вопрос, просто ещё не до конца изучил структуру форума. Начал изучать мк ST, конкретно - stm8s103f2, скачал пример, но в нем используются другой порт I/O (да и МК другой), помогите (или ткните носом :)) ), где что изменить, для работы вывода на порт С (конкретно на PC7, так как использую мк в корусе TSSOP20/SO20, а вывода PD там нет: ПО IAR6.0 + ST-Link) , (а ещё лучше, где скачать примеры для этого мк :wink:) заранее спасибо...
Спойлер// ----------------------------------------------------------------------------
// Учебный проект по STM8
// Урок-1.1 "Hello, world? No! Hello LED!!!"
// Мигание светодиодом с использованием программной задержки
// Автор: Eugeny Monastyrev
// Плата: STM8 Discovery, CLK=16MHz
//
// main.c подходит для любого компилятора IAR, Cosmic, Raisonance
// с использованием определений из библиотеки STMicroelectronics
// для компиляции требуются файлы stm8s.h и stm8s_type.h из библиотеки.
// В файле stm8s.h найдите и закомментируйте #define USE_STDPERIPH_DRIVER
// ----------------------------------------------------------------------------
#include "stm8s.h"
#define LED_BIT 0 //на Discovery светодиод подключен на PD0, активный уровень - 0

void main( void )
{
long i;
//Инициализируем CLK
CLK->ECKR|=CLK_ECKR_HSEEN; //Разрешаем работу генератора с внешним кварцем (HSEEN)
CLK->SWCR|=CLK_SWCR_SWEN; //Разрешаем автопереключение источника Clock при неисправности генератора
CLK->SWR=0xB4; //Включаем clock от кварцевого генератора (HSE)
CLK->CKDIVR=0; //Делители частоты внутреннего и внешнего генератора на 1 - частота ядра максимальная
while(CLK->CMSR!=0xB4); //Ждем стабилизации частоты
CLK->CSSR|=CLK_CSSR_CSSEN; //Разрешаем автопереключение источника Clock на внутренний при неисправности генератора

//Инициализируем GPIO
GPIOD->DDR|=1<<LED_BIT; //PD0 - на вывод
GPIOD->CR1&=~(1<<LED_BIT); //PD0 - открытый сток
GPIOD->CR2&=~(1<<LED_BIT); //PD0 - ограничение скорости отключено

//Собственно мигание
while(1)
{
GPIOD->ODR^=(1<<LED_BIT); //Переключим светодиод
for(i=0;i<200000;i++) //Подождем...
{
asm("nop"); //для исключения влияния оптимизации
}
}
}
Модератор
Аватара пользователя
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Сообщение ploop »

Так у вас же каждая строчка раскомментирована!

Код: Выделить всё

#define LED_BIT 0 //на Discovery светодиод подключен на PD0, активный уровень - 0

Код: Выделить всё

//Инициализируем GPIO
GPIOD->DDR|=1<<LED_BIT; //PD0 - на вывод
GPIOD->CR1&=~(1<<LED_BIT); //PD0 - открытый сток
GPIOD->CR2&=~(1<<LED_BIT); //PD0 - ограничение скорости отключено
Меняете на нужный порт (GPIOC, и в цикле не забудьте), и нужный бит в дефайне (LED_BIT)

Это просто следуя логике.
Открыл глаза
Аватара пользователя
Сообщения: 43
Зарегистрирован: Ср дек 05, 2012 13:28:03
Откуда: Марляндия

Сообщение masmax »

Помогите засветить модуль светодиодов. Попался под руку вот такой модуль китайский: http://leddiscovery.en.made-in-china.co ... odule.html Никакой инструкции нет, есть только маркировка входов. Подключил его к Atmega8535. Получилось поиграться с цветами, можно засветить либо весь экран, либо по половинкам. А как засветить отдельную точку?

Входы у модуля: по два на каждый цвет (R1,G1,B1,R2,G2,B2 верхняя и нижняя половины) плюс входы A,B,C с которыми я до сих пор не пойму логики. И стандартные Clock и OE. С последними двумя разобрался, с цветами тоже, а вот в ABC что писать? Плюс еще вход LAT есть непонятный. Даташит не нашел на модуль.
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

Сообщение ibiza11 »

Ставим плюсы: )
Ответить

Вернуться в «Разные вопросы по МК»