Администрация форума не несёт ответственности за достоверность информации и оставляет за собой право редактировать или в особых случаях даже удалять посты без предупреждения. Спасибо за понимание.

Программирование ATMEL в BASCOM.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Программирование ATMEL в BASCOM. » Вопросы - ответы » atmega128 фризы при генерировании сигнала


atmega128 фризы при генерировании сигнала

Сообщений 1 страница 8 из 8

1

Здравствуйте. У меня какое то странное поведение контроллера.
Пытаюсь генерировать, например, синус следующим кодом:

Код:
$regfile = "m128def.dat"
$Crystal=4000000
$hwstack=40
$swstack=16
$framesize=32

Config Portf = Output

Dim Sinusp As Byte

Do

Portf = Lookup(sinusp , Sinus) : Incr Sinusp

Loop

Sinus:
Data 64 , 65 , 67 , 68 , 70 , 72 , 73 , 75
Data 76 , 78 , 79 , 81 , 82 , 84 , 85 , 87
Data 88 , 90 , 91 , 92 , 94 , 95 , 97 , 98
Data 99 , 100 , 102 , 103 , 104 , 105 , 107 , 108
Data 109 , 110 , 111 , 112 , 113 , 114 , 115 , 116
Data 117 , 118 , 118 , 119 , 120 , 121 , 121 , 122
Data 123 , 123 , 124 , 124 , 125 , 125 , 126 , 126
Data 126 , 127 , 127 , 127 , 127 , 127 , 127 , 127
Data 128 , 127 , 127 , 127 , 127 , 127 , 127 , 127
Data 126 , 126 , 126 , 125 , 125 , 124 , 124 , 123
Data 123 , 122 , 121 , 121 , 120 , 119 , 118 , 118
Data 117 , 116 , 115 , 114 , 113 , 112 , 111 , 110
Data 109 , 108 , 107 , 105 , 104 , 103 , 102 , 100
Data 99 , 98 , 97 , 95 , 94 , 92 , 91 , 90
Data 88 , 87 , 85 , 84 , 82 , 81 , 79 , 78
Data 76 , 75 , 73 , 72 , 70 , 68 , 67 , 65
Data 64 , 62 , 61 , 59 , 58 , 56 , 54 , 53
Data 51 , 50 , 48 , 47 , 45 , 44 , 42 , 41
Data 39 , 38 , 36 , 35 , 34 , 32 , 31 , 30
Data 28 , 27 , 26 , 25 , 23 , 22 , 21 , 20
Data 19 , 18 , 17 , 15 , 14 , 13 , 13 , 12
Data 11 , 10 , 9 , 8 , 8 , 7 , 6 , 5
Data 5 , 4 , 4 , 3 , 3 , 2 , 2 , 2
Data 1 , 1 , 1 , 0 , 0 , 0 , 0 , 0
Data 0 , 0 , 0 , 0 , 0 , 0 , 1 , 1
Data 1 , 2 , 2 , 2 , 3 , 3 , 4 , 4
Data 5 , 5 , 6 , 7 , 8 , 8 , 9 , 10
Data 11 , 12 , 13 , 13 , 14 , 15 , 17 , 18
Data 19 , 20 , 21 , 22 , 23 , 25 , 26 , 27
Data 28 , 30 , 31 , 32 , 34 , 35 , 36 , 38
Data 39 , 41 , 42 , 44 , 45 , 47 , 48 , 50
Data 51 , 53 , 54 , 56 , 58 , 59 , 61 , 62


А он выдает 4 штуки, потом уходит в ноль, и через небольшую задержку снова выдает 4 синуса, и так далее.

http://photo.qip.ru/photo/she1eh/200973837/large/110802121.jpg

При чем это не обязательно могут быть синусы.
И с треугольником:

Код:
'While Portf < 255
'Incr Portf
'Wend
'While Portf > 0
'Decr Portf
'Wend


И с шумом
Portf = Rnd(255)
Такая же беда.

При чем с шумом, что интересно, каждая новая порция шума повторяет предыдущую. Как будто бы контроллер зависает и перезапускается заного.

Так же нет разницы от чего тактируется контроллер. Картинка одинаковая как от внутреннего генератора, так и от кварца.

Куда копать?

0

2

В конфигурации сторожевой таймер выключен?

+1

3

Я со своеобразием работы функции  рандом столкнулся еще в Q-Васике.
Она вроде как рандом, но не совсем...
Q-Васику было лень каждый раз генерировать свежий  рандом и он просто повторял ряд рандом, сформированный в-первый раз.
Может в AVR-Васике исправили.......

Отредактировано pavel1969 (2017-10-18 17:47:45)

0

4

pavel1969 написал(а):

Q-Васику было лень каждый раз генерировать свежий  рандом и он просто повторял ряд рандом, сформированный в-первый раз.

Что-то новенькое... ;)
С QB "провел" не один год и ни разу не встретился с подобным...
Потом были VB, VBA...
Сейчас Bascom...

Отредактировано Nord (2017-10-18 19:19:02)

0

5

Nord
Такая особенность работы функции RND() описана в книге:
GW-,Turbo- и Q-Basic для IBM PC
под редакцией  Ю.Л.Кветков, Москва, Финансы и статистика 1992г.
Если нужно, могу сделать фото страницы...
Вот еще нашел в сети "Математические функции VBA":

Функция Rnd (Random) служит для генерации случайных чисел
Возвращаемое значение
Функция Rnd возвращает значение в диапазоне от 0 до 1 типа Single, содержащее случайное число (причем 1 не входит в этот диапазон, а 0 входит). Строго говоря, функция возвращает псевдослучайные числа. При каждом запуске программы, функция генерирует одну и ту же последовательность случайных чисел. Во избежания этого явления используйте инструкцию Randomize

Да и в хелпе самого баскома по поводу  RND()

Notice that it is a software based generated number. And each time you will restart your program the same sequence will be created.

Обратите внимание, что это сгенерированное программное обеспечение. И каждый раз, когда вы перезагружаете свою программу, будет создана одна и та же последовательность.

0

6

pavel1969 написал(а):

Во избежания этого явления используйте инструкцию Randomize

Точно, точно ! Биг сорри ! ;)
Я всегда использовал Randomize !

Старею, видимо... ;)

0

7

Ну да, совсем плохой RND:

И снова плохое:


:D

0

8

Пётр, благодарю! Действительно все дело в WatchDog'e оказалось. Отключить не смог, но ситуацию исправила команда Reset Watchdog в теле основного цикла.
Тему можно закрыть.

0


Вы здесь » Программирование ATMEL в BASCOM. » Вопросы - ответы » atmega128 фризы при генерировании сигнала