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

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

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

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


Вы здесь » Программирование ATMEL в BASCOM. » Вопросы - ответы » ШИМ и яркость LCD дисплея


ШИМ и яркость LCD дисплея

Сообщений 31 страница 51 из 51

31

1кгц-2кгц или 500гц-800гц или 100гц-325гц пачками по нескольку десятков полных периодов. Уж куда непонятней то? Да, и я не прошу какой-то типа помощи в помогите написать или что-то подобное. Я просто спросил как это можно оформить в железе и возможно кто-то уже делал. Сам лично пока остановился на Р2Р восьмибитном, вроде получается то, что нужно. Если есть что говорить - говорите. Писать впустую бессмысленно.

0

32

Как то делал подобное: ДОПУСТИМ НАДО 100 импульсов 500 гц. и 50 импульсов 1 кгц.
1. Используем выводы Т0 и INT0 (соединяем вместе).
2. T0-настроить на СЧЕТ импульсов. Int0-на прерывание (прерывание НЕ АКТИВНО).
3. Настроим ШИМ на 500 гц.
4. Стартуем T0
5. Стартуем ШИМ
6. Досчитали до 100 - активируем INT0
7. ПОЙМАЛИ ПРЕРЫВАНИЕ!!! Выключаем INT0, Настроим ШИМ на 1кгц., Обнулим счет.
8. Стартуем T0
9. Досчитали до 50 -активируем INT0
10. ПОЙМАЛИ ПРЕРЫВАНИЕ!!! Выключаем INT0, Настроим ШИМ на 500 гц., Обнулим счет.

И так ПО КРУГУ......

+1

33

Хорошая идея, спасибо!

0

34

Мда...))) на 16 мГц с единичными прескалерами и с обработчиками прерываний полностью на ассемблере (30 команд, т.е. не более 60 тактов) имеем максимальную частоту 1100Гц. "- нипайдёт... = маловато будет"
Это всё, на шо способен АВР??? Я так понимаю?
Вырос из шорт, пора на STM32 переходить???

0

35

Если вырос, переходи. Кварц больше, алгоритм продумай лучше... И где наши осцилограмки ?

0

36

-NMi- написал(а):

не более 60 тактов) имеем максимальную частоту 1100Гц

20MHz делим на якобы ваши 60 тактов - получаем минимум 333.333KHz смены значения таймера (период), при 16MHz будет около 266.666KHz.

-NMi- написал(а):

Это всё, на шо способен АВР??? Я так понимаю?
Вырос из шорт, пора на STM32 переходить

Угу, вам ещё учить и учить АВР, но можете сразу прыгать на СТМ, с таким подходом там долго не задержитесь. ;)

0

37

Ну дык киньте тогда идею, как быстрее. У меня Timer0 с единичным прескалером по OCR0a из таблицы синуса (252 значения) загружает в Timer1, который настроен на FPWM 8 бит. Впринципе все так-же как у Саши1973, только таймеры местами поменяны. Ну дык вот, на одном прескалере частота от ~380 до 1100Гц.
На R2R если крутить по кругу код на 16-ти мГц конечно побыстрее получится, но экран и клавиатура ведь ещё там есть...
Ужос.

0

38

push r0
                      push r16
                      in r16,sreg
                      push r16
                      push r17
                      push r26
                      push r27
                      lds r16,{phase_counter}         
                      ldi r17,0
                      Loadadr Ram_sinus_table , X           
                      add r26,r16                         
                      adc r27,r17
                      ld r0,x                             
                      Out Ocr1al , R0
                      clr r0
                      Out Ocr1ah , R0
                      inc r16
                      cpi r16,252
                      brlo Int_compare0a_10
                      clr r16
Int_compare0a_10:
                      Sts {phase_counter},r16
                      pop r27
                      pop r26
                      pop r17
                      pop r16
                      Out Sreg , R16
                      pop r16
                      pop r0
                      reti
Куда уж быстрее? Если только под 8-битный таймер старшый ьайт убрать )))

0

39

Ну и хто с них фаст а хто нифаст????  )))

0

40

.

0

41

И как сюда впихнуть картинки? HTTP Error пишет сервер????

0

42

Всё, моск перегрелся...
Вот смотрите, даже если оставить всего ОДИН включенный 8-ми битный таймер, запретить прерывания и "кормить" PWM регистр таймера в пустом цикле - всё равно больше чем 1160 Гц не получается!
Но, чисто теоретически нам чтобы сформировать один полный период синусоиды нужно 252 раза поменять значение PWM у таймера... верно?
Но! Пусть мой обработчик занимает 60 тактов процессора. Итого: 16000000 / 60 / 252 = 1058 тактов.
Здаётся мне, шо некоторые здешние товарищи вводили меня в блудняк.
STM32 придется всётаки грызть...)))

0

43

Какая частота синусоиды нужна и из скольких точек должна строится?
Может имеет смысл использовать ЦАП вместо ШИМ?

0

44

Да думал я на счёт ЦАПа, да вот математика - вещь очень точная. Допустим, заменим ЦАП одним портом и R-2R делителями и получим "аля" быстрый ЦАП с временем изменения равным команде Out portX,r0 ... всё хорошо... да вот засада... команда Sts ocrXa занимает столько-же тактов...(((
Посему и ЦАП нИпраканает, 252 точки нужно раскидать + дисплей и кнопки... нипайдётЬ
Разбираюсь с CubeMX... да... ребятки... AVR по сравнению с STM32Fxx - трёхкалёсный велосипед, шоб там ногой подёргать вы в двадцать байт (как на авр) ну никак не уложитесь...   )))

0

45

Если уж речь зашла об STM32, то у него есть SPI с частотой тактирования 18 МГц если не ошибаюсь (зависит от модели, может быть меньше и больше). Если отсылать данные на 8-ми битный ЦАП с такой скоростью (через DMA), то частота синусоиды будет почти 9 КГц при числе точек 252.
Это в теории.

-NMi- написал(а):

шоб там ногой подёргать вы в двадцать байт (как на авр) ну никак не уложитесь

Зависит от кода и уровня оптимизации.

0

46

-NMi- написал(а):

Здаётся мне, шо некоторые здешние товарищи вводили меня в блудняк

Никого я никуда не вводил, чисто выводы на ваших же "словах".

Попинав тему (в пол глаза), так и не понял вашу задачу (какой шим и сколько надо). Понял, что надо синус, обычно его делают PWM+C+R. В инете на эту тему информации - туча.

зы: так для справки, на АВР собирают ESC для квадров (а там 3 синуса и частота до 10КГц).

Отредактировано RDW (2017-12-15 12:45:39)

0

47

Десять килогерЦ... нивироятно. А можно примерчик - но ТОЛЬКО В ЖЕЛЕЗЕ!!!

0

48

Вас в гугле забанили?
https://www.google.ru/search?q=esc+avr& … 88#imgrc=_

0

49

Спасибо, конечно. Но, блин, ребят, я реально НЕ стебусь, просто я реально первый раз "упёрся" в стену. Да, раньше всего хватало или "почти"... но в данной ситуации мощности у AVR явно не хватает.
Спасибо за ссылку, посмотрел. Нужно проверить в железе.

0

50

Проблема в том, что только вам понятно "что надо", я не телепат и даже, если знать, то чтобы с 100% уверенности сказать под конкретную задачу, надо в этом направлении копаться, а собирать железо, которое мне ненужно - увольте. Т.ч. максимум могу посоветовать читать в инете информацию (я собственно так и делал).

Я в своё время пытался разбираться с BLDC мотором и получилось раскручивать шпиндель до 8К, но т.к. не было обратной связи, то выше обороты получить не вышло (примитивность алгоритма). Правда вращал я его не шим (до него не дошло, проект забрали).

0

51

В любом случае я Вас не покину, ибо иногда нужен проект аля "завечер" и авр тут ка ни кстати помощник. Вся равно давно стремился познать стм32... видно пришло время для этого.
Естественно, отпишусь по результату. )))

0


Вы здесь » Программирование ATMEL в BASCOM. » Вопросы - ответы » ШИМ и яркость LCD дисплея