Курс: программирование AVR, учимся "с нуля"

 
1 2 3 4 5 6 7 12
RU termostat #02.06.2004 21:37
+
-
edit
 

termostat

аксакал

Продолжение !

предыдущая, 20-я страница 2-й части:
Форумы Авиабазы

Начало 1-й части:
Курс: программирование МК AVR "с нуля"

Прочитать 1-ю часть топика целиком (очень советую!!!): Форумы Авиабазы

Прочитать 2-ю часть топика целиком (очень советую!!!): Форумы Авиабазы


\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

"Курс AVR с нуля" - avr123.by.ru одним файлом для офф-лайн чтения

avrkurs.zip (456 кБ) обновлен 10 сент. 2004

Форумы Авиабазы

Качайте, читайте, програмируйте что вам нужно.

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

как поставить компилятор Си CodeVision для AVR:
Форумы Авиабазы

примеры программ на Си из пакета CV, для ознакомления (28 кБ): Форумы Авиабазы

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

Очень хороший компилятор Си для AVR от ImageCraft ImageCraft Development Tools

скачивайте наздоровье: ICCAVR DEMO VERSION (будет работать без ограничений 45 дней!)

ftp://ftp.imagecraft.com/pub/pub/iccavrdem.exe

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

Проверить работу вашего устройства, не имея копонентов и не делая пайки,
можно с помощью - софт эмулятора AVR - VMLAB от AVR simulator, debugger and IDE with WinAVR support

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

Если ВСЕ прочитано, и есть вопросы, задавайте!

Если есть идеи - предлагайте!
Это сообщение редактировалось 12.09.2004 в 03:28
UA Alex, Chernigiv #02.06.2004 23:29
+
-
edit
 

Alex, Chernigiv

новичок
Насчет кнопок - и то правда. Просто, я на всякий случай описал, как это в промышленном приборе организовано. Если использование двух кнопок подразумевает какие-то программные сложности - нафиг оно надо.
Ну, а если все-таки no problem - тады... Дело в том, что кнопки будет нажимать не вахта (всё, что ей нужно - индицируется без всяких нажатий), а приборист. И то - не постоянно, а только иногда, когда руководство решит уставку сдвинуть. Такое бывает изредка, после неудачного ремонта, когда приходится мириться с повышенным на пять-десять микрон уровнем вибрации. Раз в пять лет где-то. Инструкцию написать - типа той, что я привел - и все дела. А можно еще проще - тупо последовательности кнопок нарисовать - в зависимости от того, что ты хочешь сделать. Как в мануалах на эти гребаные телефоны и часики.
Электронный коммутатор. Вообще, конечно, клево будет сразу все точки смотреть. Одну - на индикатор, остальные - под контролем, на предмет превышения уставки. Вот только как в смысле стоимости? Он ведь, коммутатор, должен переменку через себя уметь пропускать, да аккуратно, без искажений. Пойдет ли здесь обычный мультиплексор, или он только для цифровых сигналов предназначен, и искажения там не нормируются? А было бы здорово... Выпрямлять сигналы до мультиплексора экономически неоправдано - это на каждую точку надо будет свой выпрямитель городить... Или как?
 

pokos

аксакал

Alex, Chernigiv,02.06.2004 22:29:37 :
Пойдет ли здесь обычный мультиплексор, или он только для цифровых сигналов предназначен, и искажения там не нормируются?
 


Мультиплексоров и аналоговых навалом, надо просто подыскать подходящий. Если брать 8515, то у него уже 8шт (вроде бы) аналоговых входов АЦП есть.
Выпрямлять ничего не надо, оно даже вредно в смысле диагностики.

А вот, кстати, и первая вариация схемы. Загромождать индикацией не стал, там и так всё ясно. Вопросы принимаются.
Прикреплённые файлы:
Quake.pdf (скачать) [10,6 кБ]
 
 
 
?? Alex, Chernigiv #03.06.2004 10:15
+
-
edit
 

Alex, Chernigiv

новичок
Во, БЛИН!
This file is damaged and couldn't be repaired.
Это у меня такое про Quake.pdf выпадает... Может, картинкой простой запостишь?
 
?? Alex, Chernigiv #03.06.2004 10:32
+
-
edit
 

Alex, Chernigiv

новичок
Переустановил Акробат. Та же фигня... Слушай, а кинь мне на ящик:
777ok.net.ua
 

pokos

аксакал

Дело не в Акробате. Это чё-то нездоровое с форумом. Я сегодня тоже ни одного файла не смог слить отсюда.
На почту скину несколько позже, у нас в офисе электричество обрубили, сижу у соседей.
 
?? Tosha_443 #03.06.2004 12:49
+
-
edit
 

Tosha_443

втянувшийся
pokos, 03.06.2004 08:27:02 :
Alex, Chernigiv,02.06.2004 22:29:37 :
Пойдет ли здесь обычный мультиплексор, или он только для цифровых сигналов предназначен, и искажения там не нормируются?
 


Мультиплексоров и аналоговых навалом, надо просто подыскать подходящий. Если брать 8515, то у него уже 8шт (вроде бы) аналоговых входов АЦП есть.
Выпрямлять ничего не надо, оно даже вредно в смысле диагностики.

А вот, кстати, и первая вариация схемы. Загромождать индикацией не стал, там и так всё ясно. Вопросы принимаются.
 


в 8535 это. в8515 нет ацп. :rolleyes:
Не ошибается тот, кто ничего не делает  

Yuran

опытный

Господа случаем ниукого нет кряку к ICCAVR 630d <_<

а точнее лицензии... или чую опять в ИДЕ сидеть ;)
 
Это сообщение редактировалось 03.06.2004 в 19:28
RU termostat #03.06.2004 21:38
+
-
edit
 
RU termostat #03.06.2004 21:38
+
-
edit
 

termostat

аксакал

i2c память к AVR через TWI
 


TWI - это "железная" реализация интерфейса i2c, т.е. она привязана к определенным ногам МК и не вовсех чипах в наличии.

Я использовал софтверный вариант - он позволяет использовать любые ножки МК, применим для любых AVR'ов.

За основу я взял исходник примера КодВижен для датчика температуры LM75. И переделал код под память: 24c128 24с256 24с512. Исходники на 20 странице предыдущей части темы.

Проблема только в том что частота клоков на линии SCL всего 42 кГц хотя память при 5 вольтах позволяет работать при клоке до 1 МГц. Устраняется она выкидыванием цикла задержки из готового ассемблерного кода. Я достиг скорости 400 кГц при кварце 8 МГц.

В имэйдж крафт сразу происходит компиляция примерно на 400 кГц.

Но по деньгам выгодней применять дата флэш at45db161b стоит 6 баксов а памяти 2 Мбайта.

\\\\\\

Прицепил непровереный код Си для TWI
Прикреплённые файлы:
 

Yuran

опытный

termostat, 03.06.2004 20:38:09 :
Yuran, 03.06.2004 17:59:05 :
Господа случаем ниукого нет к ICCAVR 630d
 


тут покопай

avr
 


Пасиба. ;)
 
UA Alex, Chernigiv #03.06.2004 22:26
+
-
edit
 

Alex, Chernigiv

новичок
Схему получил. Вопросов, боюсь, никаких задать не могу при всем желании. Ситуация очень напоминает клуб любителей шахмат в г. Васюки, с той только разницей, что гроссмейстер-таки знал первый ход - Е2Е4.
Впрочем, и я вроде девятивольтовый стабилизатор узнал, да кварц еще. :) Настало время присмотреться к началу топика, да почитать перечисленные Термостатом первоисточники... Только, боюсь, начну этим заниматься не ранее как через месяц - уезжаю на сессию.
А сейчас могу только искренне поблагодарить pokosa за проявленное деятельное сочувствие. Буду рад увидеть тебя на этом же месте пятого июля.
До встречи и БОЛЬШОЕ СПАСИБО.
 
RU termostat #06.06.2004 02:16
+
-
edit
 

termostat

аксакал

Однако мощнейшую штучку прислал Zilog. Сегодня познакомился поближе.

eZ80F91 оказался 144 ногим зверушкой работающей с частотой до 50 МГц, при этом как и АВР большинство инструкций выполняются заодин клок.
- Флэш память 256 КБайт (у АВР максимум 128)
- да еще SRAM 16 КБайт
- да еще внешняя быстрая дешовая память подключается до 2 МБайт.
- да 2 независимых UART
- да "железный" i2c
- IrDA encoder на борту
- SPI само сабой
- четыре 16 битных счетчика-таймера
- часы реального времени

Я просто балдею...

МК на отдельном маленьком модуле смонтирован, очень удобно.

Кстати этот набор они продают по 149 баксов как я понял.

//////

По компилятору и пробным проектам, у меня StarterProject скомпилировался сразу как написано в инструкции.

приатачиваю полученые .HEX ы для симуляции и для зашивки в МК.

Web сервер не пробовал так как нет сетевой карточки у меня в ПК.
Прикреплённые файлы:
 

Yuran

опытный

Ну блин с таким процом не на километры как у нас, а к марсу лететь можно :P !
 

AlexG

новичок
Да, eZ80 штука мощная. Я подписался на почтовую рассылку по поводу этого дизайн-контеста, там обсуждается масса возникших проблем(и их решения). Наример, кит нельзя пограммировать кнопкой Burn&verify, только Burn. Я пока приостановил разбирательство с китом - сессия.

PS: На форуме IXBT обсуждают изготовление эмулятора JTAG ICE для AVR,
выложена максимально упрощенная схема и чертеж платы.
 

Lioxa

втянувшийся
Termostat - нашёл в твоём описании это ->
///////// Записать 64 байта на страницу номер page_number
//
// Номер страницы это биты с 6-го и старше в абсолютном


// адресе ячейки памяти.

//
// А младшие 6 бит (с 0 до 5-го) это номер байта на странице


//

что такое абсолютный адрес ячейки памяти ?? где это

 
BG Реконструктор #07.06.2004 16:40
+
-
edit
 
[quote|termostat, 06.06.2004 00:16:05 :]Однако мощнейшую штучку прислал Zilog. Сегодня познакомился поближе.[/quote]

Сколько такой проц стоит, лекго ли программируется?
 
RU termostat #08.06.2004 10:22
+
-
edit
 

termostat

аксакал

Lioxa :
что такое абсолютный адрес ячейки памяти ?? где это.
 


Это внутри флэш памяти типа 24с256. Абсолютный адрес ячейки памяти - это ее порядковый номер: 0, 1, 2 ... последняя ячейка памяти. в этой микросхеме 215 ячеек памяти емкостью по одному байту.

Деление памяти на страницы физически НЕ СУЩЕСТВУЕТ. Просто встроенный автомат записи предлагает пользователю возможность записать 64 байта почти за то время сколько занимает запись одного байта. Для этого нужно указать абсолютный адрес ячейки в которую нужно записать 1й байт и затем передать в память 64 байта, они будут записаны друг за другом.

Я привел пример условного разбиения памяти на страницы начиная с 0-й ячейки памяти.

Вобщем как всегда - читать дата шит и апликейшн ноуты.

Еще раз повторю, что этот код Си я проверил "в железе"! он работает. компилятор КодВижн.


\\\\\\\\\\\\\\\\\\\\\\\



Resurrector :
Сколько такой проц стоит, лекго ли программируется?
 


Скока стоит и где купить на пространcтве СССР можно посмотреть на einfo.ru efind.ru

а по миру так: Digikey Mouser Arrows

Zilog.com - на худой конец попросить прислать бесплатные образцы под проект.

Програмируется проосто для простых задач, для сложных сложнее.

Вообще, для всех сообщаю, что программу сложно сделать в виде алгоритмической диаграмы - это суть и есть создать программу.

А уже диаграму записать на каком либо языке программирования это ОЧЕНЬ просто.

Советую скачать Апликейшн ноуты - там примеры устройств (не бесполезных), теория и процесс программирования и алгоритмические диаграммы.









BG Реконструктор #08.06.2004 11:16
+
-
edit
 
termostat, 08.06.2004 08:22:53 :
Програмируется проосто для простых задач, для сложных сложнее.
 


Я имел ввиду "прошивать". :) Т.е. заливать код в память проц-а. Программатор для АВР очень простой, а так как архитектура позволяет самопрограммирование чипа, то заливать код можно буквально как угодно.
 

Lioxa

втянувшийся
Ситуация такая Мега8 к ней подключена 24С256 EEPROM через TWI.

Кто знает ASM помогите пожалуйста. В Датащите Меги8 ничего ненаписанно о том как адресовать память через TWI написанно только что для этого используется тотже регистор что и для передачи/приёма данных TWDR. В пдф по 24LC256

на схеме 6-1 написанно что сначала идёт Старт байт потом Control байт эти два я вроде понял дальше идут два байта АДРЕССА байт данных и стоп байт. Так вот КУДА и КАК пихать байты адреса я не понимаю ваще !!!

Люди очень надо, уже вторую неделю сижу с этим дурацким TWI так и с ума сойти недолго. На С не помогайте ..... ну непонимаю я его :(

MASTER_TX:

cli ; Interrupts not used; must poll TWINT bit

; Set bitrate for master mode
; ---------------------------
ldi r16, 13 ; Minimum value must be 10 !
out TWBR, r16 ; See formula in Atmel manual

; Send start and wait for TWINT flag
; ----------------------------------
ldi r16, (1<<TWINT) | (1<<TWSTA) | (1<<TWEN)
out TWCR, r16
rcall wait_twint

; Load SLA + W and clear int flag
; -------------------------------
ldi r16, 0xA0 | 0 ; Address = 0x1E, Write (TX)
out TWDR, r16
ldi r16, (1<<TWINT) | (1<<TWEN)
out TWCR, r16
rcall wait_twint

in r16, TWSR
andi r16, 0xF8
cpi r16, 0x18 ; Status code must be 0x18
brne ERROR

; Check TWI Status register
; -------------------------
in r16, TWSR
andi r16, 0xF8
cpi r16, 0x28 ; Status code must be 0x28
brne ERROR

ldi r18, 0x0F ; Init byte to transmit
write_loop:

; Load data into TWDR register
; ----------------------------
mov r16, r18 ; r18 holds the code to transfer
out TWDR, r16
ldi r16, (1<<TWINT)|(1<<TWEN)
out TWCR, r16
rcall wait_twint ; Wait for completion

; Check TWI Status register
; -------------------------
in r16, TWSR
andi r16, 0xF8
cpi r16, 0x28 ; Value must be 0x28
brne ERROR

dec r18 ; Decrement data for
brne write_loop ; next cycle

; Send STOP and return
; --------------------
ldi r16, (1<<TWINT) | (1<<TWEN) | (1<<TWSTO)
out TWCR, r16
ret
 
BG Реконструктор #08.06.2004 17:37
+
-
edit
 
У меня та же ситуация - 24LC515 (LC256, только 512 Мбит) подключена к меги16 по TWI (он же I2C), с той разницей, что у меня все на Си написано и все работает. :) Могу выложить скомпилированый и дезассемблированный код, если есть, гм, спрос. :)
 

Lioxa

втянувшийся
Ну кидай на С и дезассемблированный код, а вдруг чего получится ;)
 
?? Tosha_443 #09.06.2004 11:30
+
-
edit
 

Tosha_443

втянувшийся
хочется заставить Codevision компилировать константы в асм типа
.equ const1=0x70
конструкция
#define const1 0x70
хранит 0х70 в ОЗУ, а меняться константа не будет...
может есть метод? хочется максимально отвязаться от кристалла(имена портов, маски, константы, задержки).
Не ошибается тот, кто ничего не делает  

Yuran

опытный

Tosha_443, 09.06.2004 10:30:31 :
хочется заставить Codevision компилировать константы в асм типа
.equ const1=0x70
конструкция
#define const1 0x70
хранит 0х70 в ОЗУ, а меняться константа не будет...
может есть метод? хочется максимально отвязаться от кристалла(имена портов, маски, константы, задержки).
 


Константы лучше хранить либо в памяти программы либо в епроме нефиг им в озу делать :P
 
?? Tosha_443 #09.06.2004 14:04
+
-
edit
 

Tosha_443

втянувшийся
Yuran, 09.06.2004 10:37:19 :
Константы лучше хранить либо в памяти программы либо в епроме нефиг им в озу делать :P
 


Да не константы это вовсе....
я хотел применить
.equ const1=0x70 для масок и пр.
представьте: на МК с одной ноги на другую переносится сигнал (или на другой кристалл переходим) и для проверки этого сигнала используется например 0х70. у меня, например, сейчас ~400 строк текста. и в каждом случае применения маски или имени регистра надо лезть по всему тексту и все менять. некузяво. с именами регистров все хорошо получается--#define ignit_11 PINB — , а с этими масками что делать?
неплохо было бы еще и порты резать на нужное кол-во бит и им присваивать имена, но в асме это все тяжелым будет...
Не ошибается тот, кто ничего не делает  
1 2 3 4 5 6 7 12

в начало страницы | новое
 
Поиск
Настройки
Твиттер сайта
Статистика
Рейтинг@Mail.ru