Tankor писал(а):В хедпе васика есть, но надо с английским дружить или онлайн переводчик использовать.
В хелпе нету, там много теории, от которой не легче, с начальным настройками понятно, всё работает, но когда кончается память для обычных переменных начинается черная магия.
http://bascomavr.3bb.ru/viewtopic.php?id=494
Я так методом втыка проверил - любая комбинация цифр в стеках не превышающая 63 ( с Вашей одной переменной) - работает. 64 и более ругается на отсутствие памяти. По крайней мере для Тини 2313. И еще, если добавляются переменные - то "магическое" число под стек уменьшается. Попробуйте сами - добавьте 2 переменные и стек придется уменьшать на 2.
P.S. Посмотрел на реальной проге - так переменные вроде и не влияют.
http://avrproject.ru/forum/9-122-1
Это распределение пространства статической памяти (SRAM) под нужды программы в байтах, так называемый стэк.
hwstack - аппаратный стек, он необходим контроллеру чтобы записывать в него адреса того места, откуда прыгнула программа на подпрограмму или функцию. Если проще то так, камень выполняет программу и тут ему нужно уйти на выполнение какой-то подпрограммы (например прерывание), вот чтобы знать куда возвращаться после того как подпрограмма отработана, необходимо место чтобы сохранить этот адрес. При использовании в программе одного Gosub необходимо место в 2 байта.
swstack - программный стэк. Практически тоже самое, но хранит переменные (вернее их адреса) чтобы не потерять их после ухода на подпрограмму. Для хранения каждого адреса переменной тоже нужно резервировать по 2 байта.
framesize - это размер выделяемой памяти для преобразований строк, их форматирования, подготовку вывода на дисплей по команде LCD или PRINT/INPUT. В общем та область памяти куда буферизируются переменные для последующей обработки.
Можно читать тут
http://www.mcselec.com/index.php?option ... &Itemid=57
но там теория сложная. Я ожидал что распределение памяти сделает какой-нибудь мастер.
Программу нет смысла выкладывать, чтобы не забивать голову, примерно такое что-то, беспощадный цикл, прерываний нет. Такое впечатление hwstack можно уменьшить до 0 (нет прерываний), swstack до 2 (одна подпрограмма), но не уверен что поможет и не будет глюков.
$regfile = "attiny13.dat"
$crystal = 9600000
$hwstack = 16
$swstack = 16
$framesize = 16
Dim A As Long
Dim B As Long
Dim C As Long
Dim D As Long
Dim E As Long
Do
incr A
incr B
incr C
incr D
incr E
if a>3335556666 then 'сколько то часов покрутили и хватит
gosub pdprogramma
return
if b>111555111 then 'сколько то часов покрутили и хватит
gosub pdprogramma
return
delayms(1) 'длительность цикла примерно
Loop
End
Podprogramma
a=0
b=0
c=0
d=0
e=0
return
