Кстати, при обьявлении
GICR = (1<<INT1)|(1<<INT0);
у меня INT1 пустой находился, получается из-за этого ничего не работало. позже я просто убрал int0 и все встало на свои места. Спасибо за подсказку. :beer:
не указал регистр, думал он никак не влияет
MCUCR = (1<<ISC01)
GICR = (1<<INT0) , т.е. не ...
Найдено 9 результатов
- Ср янв 06, 2021 15:54:25
- Форум: AVR
- Тема: Простой тахометр на atmega
- Ответы: 21
- Просмотры: 6632
- Ср янв 06, 2021 12:17:36
- Форум: AVR
- Тема: Простой тахометр на atmega
- Ответы: 21
- Просмотры: 6632
Re: Простой тахометр на atmega
Выяснил, что
1. при
GICR = (1<<INT1)|(1<<INT0);
OCR2 генериурет ШИМ, однако не меняет скважность по заданному массиву:
ISR(TIMER1_COMPA_vect)
{
OCR2=aSin[i];
i++;
if (i>127) i=0;
где aSin это массив.
Чтобы заработало все, необходимо отключить INT1. Как это связано не понял, установил ...
1. при
GICR = (1<<INT1)|(1<<INT0);
OCR2 генериурет ШИМ, однако не меняет скважность по заданному массиву:
ISR(TIMER1_COMPA_vect)
{
OCR2=aSin[i];
i++;
if (i>127) i=0;
где aSin это массив.
Чтобы заработало все, необходимо отключить INT1. Как это связано не понял, установил ...
- Ср дек 30, 2020 21:18:04
- Форум: AVR
- Тема: Простой тахометр на atmega
- Ответы: 21
- Просмотры: 6632
Re: Простой тахометр на atmega
[uquote="b526",url="/forum/viewtopic.php?p=3950733#p3950733"]...Вопрос: как влияет тимск на ШИМ на таймере 1 в меге8 ???[/uquote]TIMSK mega8 работает для Т0 только с 0 битом прерывания по переполнению (кстати, вы оперируете с 1 , а это необъявленный бит). Попробуйте управлять битом TOIE0 по или ...
- Пт дек 25, 2020 11:11:05
- Форум: AVR
- Тема: Простой тахометр на atmega
- Ответы: 21
- Просмотры: 6632
Re: Простой тахометр на atmega
Продолжая тему:
Счетчик работает правильно, синус на шиме генерирует, а вот все вместе не получается - на OCR выходе вместо ШИМа выходят хаотично импульсы.
На ПРОТЕУСе все отлично, а вот на железе - ерунду генерирует.
Гдето наткнулся на информацию, что АТмега либо чтото делает, либо генерит ШИМ ...
Счетчик работает правильно, синус на шиме генерирует, а вот все вместе не получается - на OCR выходе вместо ШИМа выходят хаотично импульсы.
На ПРОТЕУСе все отлично, а вот на железе - ерунду генерирует.
Гдето наткнулся на информацию, что АТмега либо чтото делает, либо генерит ШИМ ...
- Чт дек 10, 2020 17:02:13
- Форум: AVR
- Тема: Простой тахометр на atmega
- Ответы: 21
- Просмотры: 6632
Re: Простой тахометр на atmega
[uquote="BlackKilkennyCat",url="/forum/viewtopic.php?p=3935464#p3935464"]странно, но многие не хотят и увиливают от дебага, и я тоже ведь был когда-то в их числе... а сейчас не представляю, как без него.
На своём любимом ST7FOX запустил ШИМ методом тыка меняя значения регистров в отладочном режиме ...
На своём любимом ST7FOX запустил ШИМ методом тыка меняя значения регистров в отладочном режиме ...
- Чт дек 03, 2020 20:04:12
- Форум: AVR
- Тема: Простой тахометр на atmega
- Ответы: 21
- Просмотры: 6632
Re: Простой тахометр на atmega
да я с 12го года все пытаюсь обойтись без дебага. но пришло время этим заняться. насколько я помню это можно сделать только в Студии.
- Чт дек 03, 2020 19:19:00
- Форум: AVR
- Тема: Простой тахометр на atmega
- Ответы: 21
- Просмотры: 6632
Re: Простой тахометр на atmega
[uquote="BlackKilkennyCat",url="/forum/viewtopic.php?p=3935320#p3935320"]ну, надо поставить breakpoint в timer0_overflow на TCNT0=(0);, посмотреть, попадает ли туда вообще, и сколько раз, то есть, изменяется ли pr, и отключен ли watchdog?[/uquote]
пошел гуглить что это такое )
пошел гуглить что это такое )
- Чт дек 03, 2020 15:58:46
- Форум: AVR
- Тема: Простой тахометр на atmega
- Ответы: 21
- Просмотры: 6632
Re: Простой тахометр на atmega
Спасибо большое за поправку, совсем что-то замылился с разбором кода.
Но код все равно не работает.
Но код все равно не работает.
- Чт дек 03, 2020 15:23:01
- Форум: AVR
- Тема: Простой тахометр на atmega
- Ответы: 21
- Просмотры: 6632
Простой тахометр на atmega
Всем привет, делаю тахометр, на вход которого поступают импульсы, МК считает их по прерываниям и другой таймер отсчитывает секунды.
#include <mega8.h>
#include <delay.h>
int rps=0;
int pr=0;
interrupt[TIM0_OVF]void timer0_overflow(void)
{
TCNT0=(0);
if (pr==30)
{
if (rps<17) { PORTC.1=1 ...
#include <mega8.h>
#include <delay.h>
int rps=0;
int pr=0;
interrupt[TIM0_OVF]void timer0_overflow(void)
{
TCNT0=(0);
if (pr==30)
{
if (rps<17) { PORTC.1=1 ...