Страница 1 из 1

Tiny13 и 26 - программа из 3 строк работает по разному

Добавлено: Вт апр 14, 2009 17:01:19
pushka
Добрый день всем.

Помогите новичку.
Я пробую моргать светодиодиком с помощью примера программы найденного вот тут http://icmicro.narod.ru/avr/avr.htm. Компилирую в AVR Studio - там же пытаюсь отлаживать написанное.
Искомые три строки:

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


        cbi     PORTB,0 ; Гасим вывод PB0
        ldi     fTEMP,0
        rcall   Big_delay ; Задержка около 200 мс.

На tiny13 все работает. Дебаг в AVR Studio работает как ожидается.
НО! Если в AVR Studio поставить целевым чип ATTiny26 то выход из подпрограммы задержки выкидывает меня .... на начало программы. Причем, судя по тому что светодиодик не зажигается (или просто горит если первой командой стоит sbi ) - в кристалле все происходит ровно так же.
Как такое вообще может быть ? :shock: Что - у них команда RET по разному работает в разных кристаллах ?

Добавлено: Вт апр 14, 2009 17:52:13
pomidor
наверное, надо стек инициализировать для большой тиньки в самом начале программы

.include "tn26def.inc"
; Для удобства даем регистрам имена.
.def fTEMP =r16
.def fCOUNTER =r17
.def fCOUNTER2 =r18
.cseg ; Сегмент CODE.
.org 0 ; Адрес выполнения первой команды
rjmp start ; Переход на команду по адресу 'start'
; Метка 'start' - это адрес следующей за меткой команды.
start:
ldi r16,RAMEND ;(страница 59 даташита тини26)
out Sp,r16

ldi fTEMP,0b00111110; PB0 - вход, остальные - выход.
out DDRB,fTEMP

итд

Добавлено: Вт апр 14, 2009 21:42:32
GP1
у 13-таньки стек также программый :)))
по выдранным строчкам понять работу программы вряд ли возможно :shock:

Добавлено: Вт апр 14, 2009 22:22:45
pomidor
а у тиньки12 из http://icmicro.narod.ru/avr/avr.htm ? [тут должен был бы стоять смайлик]

не поленился, проверил
на т13 симулятор выдает ворнинг
AVR Simulator: Uninitialized stack pointer used at 0x0005
но прыгает, куда надо (как будто SP инициализирован ), на т26 выдает такой же ворнинг и прыгает туда, куда стакпойнтер неинициализированный показывает - то бишь в 0.

так шта, где-то в симуляторе собака порылась, но предупреждения читать надо и стакпойнтер все-таки инициализировать

Добавлено: Вт апр 14, 2009 23:11:31
Pooher
В Tiny11/12 HARDWARE
STACK.

Добавлено: Ср апр 15, 2009 09:54:11
pushka
Большое спасибо, инициализация стека поставила все на место.
Удивительно что на 13-й все работает без этого.

А что такое Hardware stack и почему это не сделано в старших вариантах МК ?

Добавлено: Ср апр 15, 2009 10:31:23
pomidor
поищите книжки на http://www.infanata.org/ , найдется что-нить вроде
"Практическое программирование микроконтроллеров
Atmel AVR на языке ассемблера" Ю. Ревич,2008, 384c, 5.7Mb, djvu

http://rapidshare.com/files/190788477/p ... mk_avr.rar
http://natahaus.ifolder.ru/10265793

Добавлено: Ср апр 15, 2009 13:36:28
GP1
pushka писал(а): А что такое Hardware stack и почему это не сделано в старших вариантах МК ?
это аппаратный стек под который отведено 3 ЯП так что число волженности подпрограмм не может превышать 3х, для старших моделей с обширной перефирией этого явно не достаточно :idea: