logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Konfiguracja PWM na Attiny 2313?

warczyna 10 Kwi 2011 21:57 2346 5
REKLAMA
  • #1 9385304
    warczyna
    Poziom 12  
    Czy ma ktoś jakiś przykład kodu gdzie został skonfigurowany PWM na Attiny2313? Szukałem ale jeśli chodzi o ten uP to znalazłem jedynie konfigurację Timera0. W nocie też nie wyczytałem takich informacji, a sam nie wiem jak to napisać. Dokładnie chodzi mi o Timer1 na PB3 i PB4 aby pracował w trybie 16 bitowym tak abym mógł sterować szybkością pracy prawego i lewego silnika a co za tym idzie koła. Jeśli mam na płytce złącze ISP to po za programowaniem piny do niego podłączone mogą również służyć jako normalne wejścia/wyjścia tak? Z góry dzięki za odpowiedzi.
  • REKLAMA
  • Pomocny post
    #2 9385734
    hotek
    Poziom 15  
    warczyna napisał:
    Jeśli mam na płytce złącze ISP to po za programowaniem piny do niego podłączone mogą również służyć jako normalne wejścia/wyjścia tak? Z góry dzięki za odpowiedzi.

    Tak.
  • REKLAMA
  • #3 9385773
    warczyna
    Poziom 12  
    Dzięki za odpowiedź jednak najbardziej zależy mi na konfiguracji PWM.
  • REKLAMA
  • Pomocny post
    #4 9385797
    hotek
    Poziom 15  
    C czy Bascom? Jeżeli Bascom to konkretną odpowiedź masz tutaj: Klik
    Co do C, konfigurację znajdziesz Tu. Wystarczy zamienić tylko niektóre rejestry, ctrl+f w datasheet'cie aby zobaczyć który od czego.
  • REKLAMA
  • #5 9385876
    warczyna
    Poziom 12  
    Język C. Dzięki za link poczytam :D
  • #6 9405442
    warczyna
    Poziom 12  
    Całość będzie połączona według schematu z załącznika. Poczytałem to co mi podesłałeś jednak nie mam pojęcia jakie rejestry jak ustawić. Chce Sterować pwm prędkością silników (wejściem 1-2EN oraz 3-4EN) natomiast kierunek ma być określany przez odpowiednie stany 1A i 2A oraz 3A i 4A). Oto co narazie napisałem niewiele ale nie mam pewności czy nawet to jest dobrze:
    
    #include <avr/io.h>
    #include <util/delay.h>
    int main(void)
    {
    	/* Wszystkie linie portu B będą wyjściami */
    	DDRB = 0xff;
    	PORRTB = 0xff
    	/* PWszystkie linie portu D będą wejściami, PD2...PD5 podciągnięte do VCC */
    	DDRD = 0x00;
    	PORTD = 0x3c;
    	/* Początek nieskończonej pętli */
    while(1)
    {
    	/* Jeśli pierwszy przycisk wciśnięty LEWO */
    	if(!(PIND & 0x38)) PORTB = 0x9f;
    	
    	/* Jeśli drugi przycisk wciśnięty PRAWO*/
    	if(!(PIND & 0x34)) PORTB = 0x7b;
    	
    	/* Jeśli trzeci przycisk wciśnięty PRZÓD*/
    	if(!(PIND & 0x2c)) PORTB = 0x5f;
    	
    	/* Jeśli czwarty przycisk wciśnięty TYŁ*/
    	if(!(PIND & 0x1c)) PORTB = 0xbb;
    }
    }
    

    W kodzie powyżej PB4 i PB3 ustawiłem na 1. W przyszłości ma być to sterowane przez pwm. Proszę podpowiedzcie jakie rejestry ustawić aby działał on poprawnie.
REKLAMA