Просмотр этой темы:
 1 анонимных пользователей
| 
               Студент 
        
                  ![]() Зарегистрирован: 
        
                
                
        19.10.2010 14:49 Сообщений: 
                      4
                   
        
                
                  ![]()  | 
    
     Помогите новичку пожалуйта разобраться с работой таймера. Пытаюсь на 128 atmege выдавать на ножку каждый тик таймера но не получается. Кварц на 16 мегагерц в коде предделитель таймера не использую  
        
    в итоге на ножке должен быть шим равный 63 наносекундам, а в итоге максимум чего я добился это 3,2 микросекунды. По расчетам и примерам которые я нашел в описания вроде все правильно делаю. Странное получается то что шим полученный у меня кратен тактированию в 32 килогерца. Хотя часовой кварц у меня отсутствует. Я эти ножки вообще не задействовал. Заранее огромное спасибо за помощь. P.S. (сильно не пинайте, каждый когда то начинает). 
	
    Отправлено: 19.10.2010 16:17 
		 | 
  |
| 
               Модератор 
        
                  ![]() Зарегистрирован: 
        
                  26.01.2010 23:26 Из: Тирасполь 
                
                
        Сообщений: 
                      3926
                   
        
                
                  ![]()  | 
    
     а настройки FUSE -битов и исходный код должна изучать бригада телепатов? 
        
    
	
    Отправлено: 19.10.2010 16:22 
		 | 
  |
| 
               Студент 
        
                  ![]() Зарегистрирован: 
        
                
                
        19.10.2010 14:49 Сообщений: 
                      4
                   
        
                
                  ![]()  | 
    
     Использую avreal под линуксом 
        
    ./avreal32 +mega128 -aa -o0 -p/dev/parport0 -e -w -v -fCKSEL=f,CKOPT=0,WDTON=0,BODEN=0,BLEV=0,BRST=1,BSIZ=0,EESV=1,SUT=2,BLB0=1,BLB1=2 avrTest.hex непосредственно сам текст: /* * main.c * * Created on: 20.10.2010 * Author: root */ #include <avr/eeprom.h> #include <avr/io.h> #include <avr/interrupt.h> #include <limits.h> int tyuio; ISR(TIMER0_OVF_vect) { TCNT0 = 213; if(!tyuio){ PORTC = 0x01; tyuio = 1; } else{ PORTC = 0x00; tyuio = 0; } } int main() { cli(); TCNT0 = 213; TCCR0 = 0x01; TIMSK |= (1<<TOIE0); MCUCR = 0x00; DDRC = 0xFF; sei(); for(;  {asm("wdr"  ;} return 0; } 
	
    Отправлено: 20.10.2010 13:38 
		 | 
  |
| 
               Модератор 
        
                  ![]() Зарегистрирован: 
        
                  26.01.2010 23:26 Из: Тирасполь 
                
                
        Сообщений: 
                      3926
                   
        
                
                  ![]()  | 
    
     Ну маладец! у тебя между входами в прерывание 43 процессорных цикла, он явно не успевает обработать. для таких частот этот режим таймера не используют. Используй CTC  с подключенной ногой  OCR 
        
    
	
    Отправлено: 20.10.2010 14:52 
		 | 
  |
| 
               Студент 
        
                  ![]() Зарегистрирован: 
        
                
                
        19.10.2010 14:49 Сообщений: 
                      4
                   
        
                
                  ![]()  | 
    
     Если можно то по подробнее. 
        
    Ничего не понял. 
	
    Отправлено: 20.10.2010 15:47 
		 | 
  |
| 
               Абитуриент 
        
                  ![]() Зарегистрирован: 
        
                  20.10.2010 16:23 Из: Тирасполь 
                
                
        Сообщений: 
                      2
                   
        
                
                  ![]()  | 
    
     Попробуй инициализировать Timer0 так: 
        
    TCCR0=0x29; TCNT0=0x7F; OCR0=0x00; А порт PORTB: PORTB=0x00; DDRB=0x10; Как сказал evildesign он у тебя будет в CTC режиме с подключенной ногой OCR, но ШИМ будет на PORTB.4, Такой частоты в твоей реализации тебе не добиться 
	
    Отправлено: 20.10.2010 16:37 
		 | 
  |
| 
               Абитуриент 
        
                  ![]() Зарегистрирован: 
        
                  20.10.2010 16:23 Из: Тирасполь 
                
                
        Сообщений: 
                      2
                   
        
                
                  ![]()  | 
    
     Вернее так: 
        
    TCNT0=0x00; OCR0=0x7F; Получишь ШИМ со скважностью 50% 
	
    Отправлено: 21.10.2010 1:16 
		 | 
  |
| 
               Студент 
        
                  ![]() Зарегистрирован: 
        
                
                
        19.10.2010 14:49 Сообщений: 
                      4
                   
        
                
                  ![]()  | 
    
     к сожалению срочно кинули на другую работу  
        
    продолжу изыскания завтра. О результатах отпишу. 
	
    Отправлено: 25.10.2010 13:18 
		 | 
  |




{