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

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20092
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

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

Сообщение Gudd-Head »

Когда вывод притянут к земле, не течёт ток через подтягивающий резистор.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Аватара пользователя
ibiza11
Поставщик валерьянки для Кота
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

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

Сообщение ibiza11 »

Если исключить резистор, то можно работать какое-то время в режиме push-pull. До тех пор, пока slave не захочет замедлиться (clock strething) http://www.i2c-bus.org/clock-stretching/
В этом случае выходной транзистор (либо в МК верхний, либо в slave устройстве единственный на выводе SCK) сгорит, поскольку произойдет КЗ.
Хотя здесь можно ограничить ток, включив в шину SCL последовательно резистор.

Монтажное-И сделано именно для поддержки нескольких мастер-устройств на шине. Ну и для случая описанного выше.
Ставим плюсы: )
Аватара пользователя
greenkas
Первый раз сказал Мяу!
Сообщения: 21
Зарегистрирован: Пт ноя 02, 2012 21:08:27
Откуда: Белгород
Контактная информация:

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

Сообщение greenkas »

Подскажите пожалуйста, у кого есть схема и прошивка часов на Atmega8 + LCD Nokia 3310?
Аватара пользователя
unalex
Мучитель микросхем
Сообщения: 424
Зарегистрирован: Сб авг 25, 2007 22:02:05
Откуда: Германия, Viernheim

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

Сообщение unalex »

greenkas писал(а):Подскажите пожалуйста, у кого есть схема и прошивка часов на Atmega8 + LCD Nokia 3310?


тут пример ATmega16+ LCD Nokia 3310
http://serg22.sibgtu.ru/radio/Clock-Mega16-3310-example.rar
Коктейль "Рекурсивный": 20% спирта, 30% воды, 50% коктейля "Рекурсивный"...
Аватара пользователя
greenkas
Первый раз сказал Мяу!
Сообщения: 21
Зарегистрирован: Пт ноя 02, 2012 21:08:27
Откуда: Белгород
Контактная информация:

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

Сообщение greenkas »

тут пример ATmega16+ LCD Nokia 3310
http://serg22.sibgtu.ru/radio/Clock-Mega16-3310-example.rar

Спасибо большое!
Chettuser

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

Сообщение Chettuser »

Народ! А существуют ли версии кросс-компиляторов для запуска на планшетниках (ОС Андроид)? :)))
Ноут с собой не везде потаскаешь.
Или тупо сносить Андроид и как то натягивать туды Линух?
Аватара пользователя
Kavka
Мудрый кот
Сообщения: 1810
Зарегистрирован: Чт июн 10, 2010 08:55:35
Откуда: Сибирские Афины

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

Сообщение Kavka »

Видать этот секрет Полишинеля обошёл вас стороной. :) Андроид это линукс!
Все инструменты имеющиеся под линуксом, по идее, можно собрать под Андроид. Android SDK
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Chettuser

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

Сообщение Chettuser »

Видать да :)))

Другой вопрос - XILINIX кто-нибудь юзает?
Проблема в следующем: Есть XCS20-3PQ208I с циферками что то там 81Ана корпусе, попались несколько с циферками 87А. При прошивке последние не хотят опрашивать конфигурацию. Где бы узнать про то что на корпусе порасписано?
bit
Родился
Сообщения: 1
Зарегистрирован: Ср ноя 30, 2011 09:23:29
Откуда: Серов

Как за программировать атмега 8?

Сообщение bit »

Привет всем тема такая собрал плату на мк атмега8 ардуино
Спаял программатор самый простой LPT пытаюсь зашить чтобы он работал как
Ардуино и не как не получается
Аватара пользователя
ibiza11
Поставщик валерьянки для Кота
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

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

Сообщение ibiza11 »

Красавчик, че. Тема такая давай подробнее, телепаты в отпуске.
Ставим плюсы: )
Аватара пользователя
vitalik_1984
Поставщик валерьянки для Кота
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень
Контактная информация:

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

Сообщение vitalik_1984 »

и не как не получается
Интересно узнать в каком месте загвоздка.
Какой программой для прошивки пользуетесь? Откуда взята прошивка?
Лично я прошивал через LPT и все с первого раза прошилось.Главное все правильно подключить и питание подать на Мк.
Аватара пользователя
unalex
Мучитель микросхем
Сообщения: 424
Зарегистрирован: Сб авг 25, 2007 22:02:05
Откуда: Германия, Viernheim

Re: Как за программировать атмега 8?

Сообщение unalex »

bit писал(а):Спаял программатор самый простой LPT пытаюсь зашить чтобы он работал как
Ардуино и не как не получается


как ты считаешь, этих данных достаточно чтобы тебе дали адекватный ответ?
Коктейль "Рекурсивный": 20% спирта, 30% воды, 50% коктейля "Рекурсивный"...
Chettuser

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

Сообщение Chettuser »

Как я понял - XILINIX нынче некошерно? :))
Как бы узнать по номеру lot code поподробнее откуда он?
Kostya_Kasp
Родился
Сообщения: 2
Зарегистрирован: Вт фев 12, 2013 22:04:56

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

Сообщение Kostya_Kasp »

Здравствуйте всем! Помогите разобраться с прерыванием в простой программе на ассемблере=)
На ATMega328p делаю переключатель 8 светодиодов с 2 кнопками. 8 светодиодов подключены к линиям порта B, кнопка START подключена к линии 0 порта D, кнопка STOP на линии 2 порта D (прерывание INT0). После нажатия кнопки STOP выполнение прерывается, при нажатии на START запускается снова. Код отлаживаю в Atmel Studio, AVR Simulator. Проблема: основная программа выполняется нормально, но прерываение INT0 не работает! Даже когда я вручную выставляю флаг прерывания INT0, программа не реагирует на прерывание. Вот код:

Спойлер

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

.include "m328pdef.inc"
.def temp = r16
.def reg_led = r20
.equ START = 0

.org $000
;***Векторы прерываний***
   rjmp INIT
   rjmp STOP_PRESSED

;***Инициализация***
INIT: ldi reg_led, 0xFE
   ldi temp, $5F
   out SPL, temp
   ldi temp, $02
   out SPH, temp
   sec
   set
   ser temp
   out DDRB, temp
   out PORTB, temp
   clr temp
   out DDRD, temp
   ldi temp, 0x05
   out PORTD, temp
   ldi temp, (1<< INT0)
   out EIMSK, temp      ;Разрешаем прерывание INT0
   ldi temp, 0x00
   sts EICRA, temp      ;Прерывание по низкому уровню сигнала INT0
   sei

;***Ждем нажатия кнопки***
WAITSTART:
   sbic PIND, START
   rjmp WAITSTART

;***Переключаем светодиоды
LOOP: out PORTB, reg_led
   rcall DELAY
   ser temp
   out PORTB,temp
   brts LEFT
   sbrs reg_led,0
   set
   ror reg_led
   rjmp LOOP
LEFT:
   sbrs reg_led,7
   clt
   rol reg_led
   rjmp LOOP

;***Обработка прерывания (INT0) от кнопки STOP***
STOP_PRESSED:
WAITSTART_2:
   sbic PIND,START
   rjmp WAITSTART_2
   reti
;***Задержка***
DELAY:
   ldi r17,2
d1: ldi r18,2
d2:   dec r18
   brne d2
   dec r17
   brne d1
   ret

P.S.: проект учебный, поэтому хочу реализовать его именно с прерыванием.
Вложения
first_asm.asm
(1.13 КБ) 242 скачивания
Аватара пользователя
vitalik_1984
Поставщик валерьянки для Кота
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень
Контактная информация:

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

Сообщение vitalik_1984 »

Kostya_Kasp Не вижу где прописаны вектора прерываний.
http://SSMaker.ru/9b94709d/
Внимательно посмотрите на адреса векторов. Адресация в больших мегах устроена по две ячейки на прерывание, поэтому нужно как то так:

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

;***Векторы прерываний***
  .org $0000
 rjmp INIT                     ;Reset вектор
  .org 0x0002
rjmp STOP_PRESSED  ;Вектор внешнего прерывания
Kostya_Kasp
Родился
Сообщения: 2
Зарегистрирован: Вт фев 12, 2013 22:04:56

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

Сообщение Kostya_Kasp »

нужно как то так:

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

;***Векторы прерываний***
  .org $0000
 rjmp INIT                     ;Reset вектор
  .org 0x0002
rjmp STOP_PRESSED  ;Вектор внешнего прерывания


Да-да, заглядывал в даташит, переписал код и проверил. Результат тот же. Может быть, что-то в настройках AVR Simulator?
Аватара пользователя
vitalik_1984
Поставщик валерьянки для Кота
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень
Контактная информация:

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

Сообщение vitalik_1984 »

Сейчас только что создал проект все работает. Только подтяжка не активирована, для симуляции нужно вручную PIND выставить в 1
Пробуйте так, у меня работает. Немного упростил - выбросил лишний цикл.
Спойлер

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

.include "m328pdef.inc"
.def temp = r16
.def temp1 = r17
.def reg_led = r20
.equ START = 0


;***Векторы прерываний***
 .org $0000
   rjmp INIT
 .org $0002
   rjmp STOP_PRESSED

;***Инициализация***
INIT:in temp,MCUCR
   andi temp,~(1<<PUD)
   out MCUCR, temp
   ldi reg_led, 0xFE
   ldi temp, $5F
   out SPL, temp
   ldi temp, $02
   out SPH, temp
   sec
   set
   ser temp
   out DDRB, temp
   out PORTB, temp
   clr temp
   out DDRD, temp
   ldi temp, 0x05
   out PORTD, temp
   ldi temp, (1<< INT0)
   out EIMSK, temp      ;Разрешаем прерывание INT0
   ldi temp, 0x00
   sts EICRA, temp      ;Прерывание по низкому уровню сигнала INT0
   sei


;***Обработка прерывания (INT0) от кнопки STOP***
STOP_PRESSED:
   sbic PIND,START ;***Ждем нажатия кнопки START***
   rjmp STOP_PRESSED
   reti

;***Переключаем светодиоды
LOOP: out PORTB, reg_led
   rcall DELAY
   ser temp
   out PORTB,temp
   brts LEFT
   sbrs reg_led,0
   set
   ror reg_led
   rjmp LOOP
LEFT:
   sbrs reg_led,7
   clt
   rol reg_led
   rjmp LOOP

;***Задержка***
DELAY:
   ldi r17,2
d1: ldi r18,2
d2:   dec r18
   brne d2
   dec r17
   brne d1
   ret
Аватара пользователя
Kavka
Мудрый кот
Сообщения: 1810
Зарегистрирован: Чт июн 10, 2010 08:55:35
Откуда: Сибирские Афины

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

Сообщение Kavka »

vitalik_1984 писал(а):***Векторы прерываний***
Ну что вы советуете неправильно. :)) Шутка.

Kostya_Kasp, посмотрите вот эту тему. Пару страниц всего. Там описан более грамотный способ объявления таблицы прерываний.
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
uuuu
Родился
Сообщения: 9
Зарегистрирован: Ср фев 13, 2013 11:47:56

как переключаться по сигналу

Сообщение uuuu »

привет всем!кто подскажет,как переключаться между тремя портами по сигналу .


DDRB=0x00;
DDRD=11111111;
PORTD=11111111;
ACSR=0x80;

while(1)
{
while(PINB==0b00000001)
{PORTD=0b11111110;}
if(PINB==0b00000000) {}


while(PINB==0b00000010)
{PORTD=0b11111101;}
if(PINB==0b00000000)
{}

while(PINB==0b00000100)
{PORTD=0b11111011;}
if(PINB==0b00000100)
{}

}
у меня получилось,если на первом порту 1,то при нажатии кнопки на второй порт,не переключается на второй ,а включен всё время первый.что нужно добавить в код?
Аватара пользователя
ibiza11
Поставщик валерьянки для Кота
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

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

Сообщение ibiza11 »

учитывая очевидность ответа на ваш вопрос, прошу добавить схему по которой у вас что-то не работает
Ставим плюсы: )
Ответить

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