Мелкие вопросы по МК и ПЛИС.
- Gudd-Head
- Друг Кота
- Сообщения: 20092
- Зарегистрирован: Чт сен 18, 2008 12:27:21
- Откуда: Столица Мира Санкт-Петербург
Re: Мелкие вопросы по МК и ПЛИС.
Когда вывод притянут к земле, не течёт ток через подтягивающий резистор.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
- ibiza11
- Поставщик валерьянки для Кота
- Сообщения: 1900
- Зарегистрирован: Сб фев 21, 2009 13:11:40
- Откуда: Москва
Re: Мелкие вопросы по МК и ПЛИС.
Если исключить резистор, то можно работать какое-то время в режиме push-pull. До тех пор, пока slave не захочет замедлиться (clock strething) http://www.i2c-bus.org/clock-stretching/
В этом случае выходной транзистор (либо в МК верхний, либо в slave устройстве единственный на выводе SCK) сгорит, поскольку произойдет КЗ.
Хотя здесь можно ограничить ток, включив в шину SCL последовательно резистор.
Монтажное-И сделано именно для поддержки нескольких мастер-устройств на шине. Ну и для случая описанного выше.
В этом случае выходной транзистор (либо в МК верхний, либо в slave устройстве единственный на выводе SCK) сгорит, поскольку произойдет КЗ.
Хотя здесь можно ограничить ток, включив в шину SCL последовательно резистор.
Монтажное-И сделано именно для поддержки нескольких мастер-устройств на шине. Ну и для случая описанного выше.
Ставим плюсы: )
- greenkas
- Первый раз сказал Мяу!
- Сообщения: 21
- Зарегистрирован: Пт ноя 02, 2012 21:08:27
- Откуда: Белгород
- Контактная информация:
Re: Мелкие вопросы по МК и ПЛИС.
Подскажите пожалуйста, у кого есть схема и прошивка часов на Atmega8 + LCD Nokia 3310?
- unalex
- Мучитель микросхем
- Сообщения: 424
- Зарегистрирован: Сб авг 25, 2007 22:02:05
- Откуда: Германия, Viernheim
Re: Мелкие вопросы по МК и ПЛИС.
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: Мелкие вопросы по МК и ПЛИС.
тут пример ATmega16+ LCD Nokia 3310
http://serg22.sibgtu.ru/radio/Clock-Mega16-3310-example.rar
Спасибо большое!
-
Chettuser
Re: Мелкие вопросы по МК и ПЛИС.
Народ! А существуют ли версии кросс-компиляторов для запуска на планшетниках (ОС Андроид)?
Ноут с собой не везде потаскаешь.
Или тупо сносить Андроид и как то натягивать туды Линух?
Ноут с собой не везде потаскаешь.
Или тупо сносить Андроид и как то натягивать туды Линух?
Re: Мелкие вопросы по МК и ПЛИС.
Видать этот секрет Полишинеля обошёл вас стороной.
Андроид это линукс!
Все инструменты имеющиеся под линуксом, по идее, можно собрать под Андроид. Android SDK
Все инструменты имеющиеся под линуксом, по идее, можно собрать под Андроид. Android SDK
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
-
Chettuser
Re: Мелкие вопросы по МК и ПЛИС.
Видать да
Другой вопрос - XILINIX кто-нибудь юзает?
Проблема в следующем: Есть XCS20-3PQ208I с циферками что то там 81Ана корпусе, попались несколько с циферками 87А. При прошивке последние не хотят опрашивать конфигурацию. Где бы узнать про то что на корпусе порасписано?
Другой вопрос - XILINIX кто-нибудь юзает?
Проблема в следующем: Есть XCS20-3PQ208I с циферками что то там 81Ана корпусе, попались несколько с циферками 87А. При прошивке последние не хотят опрашивать конфигурацию. Где бы узнать про то что на корпусе порасписано?
Как за программировать атмега 8?
Привет всем тема такая собрал плату на мк атмега8 ардуино
Спаял программатор самый простой LPT пытаюсь зашить чтобы он работал как
Ардуино и не как не получается
Спаял программатор самый простой LPT пытаюсь зашить чтобы он работал как
Ардуино и не как не получается
- ibiza11
- Поставщик валерьянки для Кота
- Сообщения: 1900
- Зарегистрирован: Сб фев 21, 2009 13:11:40
- Откуда: Москва
Re: Мелкие вопросы по МК и ПЛИС.
Красавчик, че. Тема такая давай подробнее, телепаты в отпуске.
Ставим плюсы: )
- vitalik_1984
- Поставщик валерьянки для Кота
- Сообщения: 2482
- Зарегистрирован: Пт авг 27, 2010 05:57:06
- Откуда: Тюмень
- Контактная информация:
Re: Мелкие вопросы по МК и ПЛИС.
Интересно узнать в каком месте загвоздка.и не как не получается
Какой программой для прошивки пользуетесь? Откуда взята прошивка?
Лично я прошивал через LPT и все с первого раза прошилось.Главное все правильно подключить и питание подать на Мк.
- unalex
- Мучитель микросхем
- Сообщения: 424
- Зарегистрирован: Сб авг 25, 2007 22:02:05
- Откуда: Германия, Viernheim
Re: Как за программировать атмега 8?
bit писал(а):Спаял программатор самый простой LPT пытаюсь зашить чтобы он работал как
Ардуино и не как не получается
как ты считаешь, этих данных достаточно чтобы тебе дали адекватный ответ?
Коктейль "Рекурсивный": 20% спирта, 30% воды, 50% коктейля "Рекурсивный"...
-
Chettuser
Re: Мелкие вопросы по МК и ПЛИС.
Как я понял - XILINIX нынче некошерно?
Как бы узнать по номеру lot code поподробнее откуда он?
Как бы узнать по номеру lot code поподробнее откуда он?
-
Kostya_Kasp
- Родился
- Сообщения: 2
- Зарегистрирован: Вт фев 12, 2013 22:04:56
Re: Мелкие вопросы по МК и ПЛИС.
Здравствуйте всем! Помогите разобраться с прерыванием в простой программе на ассемблере=)
На ATMega328p делаю переключатель 8 светодиодов с 2 кнопками. 8 светодиодов подключены к линиям порта B, кнопка START подключена к линии 0 порта D, кнопка STOP на линии 2 порта D (прерывание INT0). После нажатия кнопки STOP выполнение прерывается, при нажатии на START запускается снова. Код отлаживаю в Atmel Studio, AVR Simulator. Проблема: основная программа выполняется нормально, но прерываение INT0 не работает! Даже когда я вручную выставляю флаг прерывания INT0, программа не реагирует на прерывание. Вот код:
P.S.: проект учебный, поэтому хочу реализовать его именно с прерыванием.
На 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
retP.S.: проект учебный, поэтому хочу реализовать его именно с прерыванием.
- Вложения
-
- first_asm.asm
- (1.13 КБ) 242 скачивания
- vitalik_1984
- Поставщик валерьянки для Кота
- Сообщения: 2482
- Зарегистрирован: Пт авг 27, 2010 05:57:06
- Откуда: Тюмень
- Контактная информация:
Re: Мелкие вопросы по МК и ПЛИС.
Kostya_Kasp Не вижу где прописаны вектора прерываний.
http://SSMaker.ru/9b94709d/
Внимательно посмотрите на адреса векторов. Адресация в больших мегах устроена по две ячейки на прерывание, поэтому нужно как то так:
http://SSMaker.ru/9b94709d/
Внимательно посмотрите на адреса векторов. Адресация в больших мегах устроена по две ячейки на прерывание, поэтому нужно как то так:
Код: Выделить всё
;***Векторы прерываний***
.org $0000
rjmp INIT ;Reset вектор
.org 0x0002
rjmp STOP_PRESSED ;Вектор внешнего прерывания-
Kostya_Kasp
- Родился
- Сообщения: 2
- Зарегистрирован: Вт фев 12, 2013 22:04:56
Re: Мелкие вопросы по МК и ПЛИС.
нужно как то так:Код: Выделить всё
;***Векторы прерываний***
.org $0000
rjmp INIT ;Reset вектор
.org 0x0002
rjmp STOP_PRESSED ;Вектор внешнего прерывания
Да-да, заглядывал в даташит, переписал код и проверил. Результат тот же. Может быть, что-то в настройках AVR Simulator?
- vitalik_1984
- Поставщик валерьянки для Кота
- Сообщения: 2482
- Зарегистрирован: Пт авг 27, 2010 05:57:06
- Откуда: Тюмень
- Контактная информация:
Re: Мелкие вопросы по МК и ПЛИС.
Сейчас только что создал проект все работает. Только подтяжка не активирована, для симуляции нужно вручную 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
Re: Мелкие вопросы по МК и ПЛИС.
Ну что вы советуете неправильно.vitalik_1984 писал(а):***Векторы прерываний***
Kostya_Kasp, посмотрите вот эту тему. Пару страниц всего. Там описан более грамотный способ объявления таблицы прерываний.
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
как переключаться по сигналу
привет всем!кто подскажет,как переключаться между тремя портами по сигналу .
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,то при нажатии кнопки на второй порт,не переключается на второй ,а включен всё время первый.что нужно добавить в код?
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: Мелкие вопросы по МК и ПЛИС.
учитывая очевидность ответа на ваш вопрос, прошу добавить схему по которой у вас что-то не работает
Ставим плюсы: )