Страница 21 из 132

Добавлено: Ср фев 25, 2009 20:47:14
Valera_112
Я понял в чем проблема. Вопрос теперь в другом, как уменьшить частоту сингранизации при програмировании в CVAVR по интерфейсу SPI?

Добавлено: Ср фев 25, 2009 21:51:21
nictrace
может, попробовать uniprof?

Добавлено: Вт мар 03, 2009 22:43:25
Pooher
2Кирилл
Подключать можно к любому порту.
Обработка примерно такая(кнопка на PD0):

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

reset:
        ldi Tmp, RamEnd	; инициализация стэка
        out SPL, Tmp
        cbi PORTD, 0 ; подтяжка откл
        cbi DDRD, 0  ; линия на ввод
forever:
        sbiс PIND, 0  ; пропустить следующую команду если PD0 сброшен
        rcall lable      ; перейти, если PD0 установлен
rjmp forever

lable:
        nop
ret

Добавлено: Чт мар 05, 2009 23:44:34
Елисей
доброго времени суток! имеется такая проблема.- ATtiny2313 успешно распознается и шьется прогой AvrOsp_II_400. только вот при загрузке ЛЮБОЙ прошивки он на 19 ногу выдает 5 вольт а на остальные 3 вольта. программки для него брал и из обучалки где просто некоторые светодиоды засветить и свою писал, все одна и та же реакция. кварц я не ставил, но и заводские фьюзы не менял, т.е. по идее он должен работать от внутреннего генератора. как быть?

Добавлено: Пт мар 06, 2009 17:29:39
Pooher
2Елисей
Код прошивки выложите.

Добавлено: Пт мар 06, 2009 17:40:01
Елисей
прошивка самая любая, например вот эта

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

.include "C:\Program Files (x86)\Atmel\AVR Tools\AvrAssembler\Appnotes\tn2313def.inc"
.def     Temp=R16
.def     Temp1=R17
.def     Temp2=R18
.def     Temp3=R19
.def     Temp4=R20
.cseg
.org 0
ldi Temp, 0b11111111  ;присвоение константы
out DDRB,Temp         ;вывод
;выводим число 11010010 на светодиоды
ldi Temp,0b11010010  ;присвоение константы
out PortB,Temp         ;вывод на индикацию
та что была с самого начала зашита- в приложении. (должна опрашивать датчики и включать светодиоды)

Добавлено: Пт мар 06, 2009 18:06:19
Елисей
вот это как называется? утро вечера мудреннее? я его забыл на ночь из розетки вытащить так он раскачался, щас заново прошил- вроде работает. только почемуто не в том порядке (заказываю 11010010 а выдает 01001011 если считать с ножки PB0).да еще и не прямым сигналом а на 500 килогерцовой частоте и довольно хитрой формы(может потому что я его от нокиевского зарядника питаю?). можно это какнибудь исправить? а та прога которую я в приложении к предыдущему сообщению выложил все таки не работает. на 19 ноге есть сигнал на остальных нету. независимо от состояния входов. в симуляторе AVR studio все работает на ура

Добавлено: Пт мар 06, 2009 20:23:37
Pooher
Я бы сделал вот так:

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

.include "C:\Program Files (x86)\Atmel\AVR Tools\AvrAssembler\Appnotes\tn2313def.inc" 
.def     Temp=R16 
.def     Temp1=R17 
.def     Temp2=R18 
.def     Temp3=R19 
.def     Temp4=R20 
.cseg
.org 0
;reset:
   rjmp start
; Начальная инициализация 
Start:
ldi Temp, 0b11111111  ;присвоение константы 
out DDRB,Temp         ;вывод 
;выводим число 11010010 на светодиоды 
ldi Temp,0b11010010  ;присвоение константы 
out PortB,Temp         ;вывод на индикацию
; Бесконечный цикл.
; Если его не будет, то очень сложно предположить, что контроллер
; будет делать дальше
Forever:
nop
rjmp Forever

Добавлено: Вс мар 08, 2009 09:52:13
Pooher
По поводу программы из приложения:

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

breq   del1
.....
del1:  
ldi Temp2,0b0001000
out Portb,Temp2
ret;??!! 
ret-это команда возвращения из подпрограммы.
Подпрограмма вызывается командами типа call, при выполнении которых содержимое счётчика программ (PC) помещается в стэк(который у Вас,к стати, даже не инициализирован).
Команда ret извлекает PC из стэка, и возвращает программу в соответствующее место.
Как думаете, в Вашем случае что и откуда извлекает ret?

Инициализация стэка:

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

ldi tmp, LOW(RAMEND); младший байт адреса конца RAM в tmp
out SPL, tmp               ; tmp в младший байт указателя стэка

; если RAM>256 байт, то надо инициализировать SPH

ldi tmp, HIGH(RAMEND); старший байт адреса конца RAM в tmp
out SPH, tmp               ; tmp в старший байт указателя стэка
ЗЫ: Срочно в обучалку.

Добавлено: Пн мар 09, 2009 17:45:44
DataLife
Такого рода проблема:
Прошил тини2313 простенько прошивочкой аля бегущие огоньки:

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

      PORTB.0=1; 
      delay_ms(200); 
      
      PORTB.1=1; 
      delay_ms(200);
      
      PORTB.2=1; 
      delay_ms(200); 
      ...
      
      //начинаем потихоньку тухнуть
      
      PORTB.0=0;
      delay_ms(200);
      PORTB.1=0;
      delay_ms(200);
      PORTB.2=0;
      delay_ms(200);
      ...      
И что было замечено... Первый N-циклов всё хорошо работает. Но после начинается сбой: приблизительно раз в 2-3 цикла, не доходя до конца затухания, диоды тухнут и снова начинают зажигаться. Пройдя 2-3 раза - снова та же история.
Частота выставлена на внутрений генератор 8МГц. Fuse SUT0..1 00.
Побывал и на 4-х МГц ... Так же.
Программно (в плане прошивки) нет ошибок.
При моделировании в Протеусе - предупреждение. Что-то не так со сторожевым таймером. Но продолжает работать.
Кто что подскажет?

Добавлено: Пн мар 09, 2009 18:04:14
nictrace
DataLife писал(а): При моделировании в Протеусе - предупреждение. Что-то не так со сторожевым таймером.
Думаю, он просто срабатывает :)

Добавлено: Пн мар 09, 2009 18:24:43
DataLife
Есть способы его отключить? Так как этот "эффект" мне уж никак не нужен.
На странице 38 Даташита написано что-то про него... Но я толком мне понял, как его отключить... Да и на 42-й есть программный код ...

Добавлено: Пн мар 09, 2009 18:43:48
sachok
Вот так я отключал в Atmega16. Но протеус продолжает ругаться, такой вот он дурак:) собрал все в железе и никаких проблем.

Добавлено: Пн мар 09, 2009 19:00:39
DataLife
Вроде бы как вылечено строчками:

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

#asm ("wdr")
/* Write logical one to WDTOE and WDE */
WDTCR |= 0x18;      //(1<<WDTOE) | (1<<WDE);
/* Turn off WDT */
WDTCR = 0x00;
5 минут полёт нормальный :)))

AT90S2313/ATTiny2313

Добавлено: Вт мар 10, 2009 17:45:16
kret_a_v
AT90S2313/ATTiny2313

памагите !!!!
Гуру помогите новичку
сделал стк200/300
а как к нему присобачить AT90S2313/ATTiny2313 ????

за ранее мяу

Добавлено: Вт мар 10, 2009 19:31:23
Aheir
У программатора есть выходы MOSI, MISO, Reset и т.д. - их нужно соединить с соответствующими выводами контроллера. Ну и питание не забыть подать на программатор и МК. И вперед. :)

Re: AT90S2313/ATTiny2313

Добавлено: Вт мар 10, 2009 21:10:28
DataLife
kret_a_v писал(а):помогите новичку
сделал стк200/300
а как к нему присобачить AT90S2313/ATTiny2313 ????

за ранее мяу
Скажем проще...
Если собирал по ЭТОЙ статье, что там есть приатаченый архив со схемой программатора и плат расширения. Одна из плат - плата для тини2313/90s2313. Делаешь, подключаешь, горя не знаешь :)
Только одно НО! Если будешь запускать от внешнего генератора (кварц), то нужно убрать перемычку от 5-й ноги к порту х2.

Добавлено: Ср мар 11, 2009 12:00:38
kret_a_v
DataLife - сори

спасибо уже разобрался

а как без кварца будет ?

Добавлено: Ср мар 11, 2009 12:11:06
kret_a_v
я набрел пока на этот

Добавлено: Ср мар 11, 2009 12:12:46
kret_a_v
есть печатка без кварца вроде
а открыть не могу