Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 24 gru 2024, o 13:58


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 2 ] 
Autor Wiadomość
PostNapisane: 19 gru 2014, o 11:02 
Offline
Nowy

Dołączył(a): 19 wrz 2013
Posty: 20
Pomógł: 0

Dzień dobry. Pracuję nad kodem na ATtiny167 i nie mogę włączyć PWMa sterowanego przy użyciu timera programowego opartego na timer0.

[ panie ... słuchaj pan - jesteś na naszym forum już od 2013 roku - a w taki sposób wstawiasz kod na forum??? no sorki ale zgroza - proszę natychmiast poprawić zgodnie z instrukcją: topic7402.html

poza tym - jesteś na naszym forum i dalej pomimo moich ciągłych CZERWONYCH uwag wpisujesz w kodzie programu NAWET w kocim Atmel Studio - #define F_CPU ??? !!! ... proszę żeby mi to było na tym forum po raz ostatni - chcesz? to sobie w kodzie sam to wpisuj i się katuj i będziesz miał przez to babole ... ale na forum to już zakazane - ok ? - mirekk36 ]


Cytuj:
//plik main.c
#define F_CPU 8000000ul <----- proszę to WYKASOWAĆ tego NIGDY nie robi się w kodzie
#include <util/delay.h>
#include <inttypes.h>
#include <avr/interrupt.h>
#include <avr/sleep.h>
#include "LEDs.h"

uint8_t x, y, z;
volatile uint8_t cnt=0;

int main(void)
{
InitLEDs();
TIM_Config();

sei();

while(1)
{
x=(x+1)%255;
y=(y+2)%255;
z=(z+4)%255;
_delay_ms(10);
}

ISR(TIMER0_OVF_vect){
cnt++;
if (cnt>x)
LED_X_ON;
if (cnt>y)
LED_Y_ON;
if (cnt>z)
LED_Z_ON;

if(0==cnt){
LED_X_OFF;
LED_Y_OFF;
LED_Z_OFF;
}
}


//****************************************************
//plik LEDs.c

void InitLEDs(void)
{
DDRB |= PIN_LED_X|PIN_LED_Y | PIN_LED_Z; //set diodes as output
}

void TIM_Config(void)
{
TCCR0A &= ~(COM0A1 | COM0A0); //normal port operation
TCCR0A &= ~(WGM01 | WGM00);
TCCR0B |= (1 << CS02 | 1 << CS01); //prescaler 256 => 8MHz/256=32kHz
TCNT0 = 0;
}

//*******************************************************************************
//plik LEDs.h


#define PORT_LED (PORTB)

#define PIN_LED_X (1<<PB3) //D1 PWM2
#define LED_X_ON (PORT_LED |= PIN_LED_X)
#define LED_X_OFF (PORT_LED &= ~PIN_LED_X)
#define LED_X_TOGG (PORT_LED ^= PIN_LED_X)

#define PIN_LED_Y (1<<PB4) //D2 PWM3
#define LED_Y_ON (PORT_LED |= PIN_LED_Y)
#define LED_Y_OFF (PORT_LED &= ~PIN_LED_Y)
#define LED_Y_TOGG (PORT_LED ^= PIN_LED_Y)

#define PIN_LED_Z (1<<PB1) //D3 PWM1
#define LED_Z_ON (PORT_LED |= PIN_LED_Z)
#define LED_Z_OFF (PORT_LED &= ~PIN_LED_Z)
#define LED_Z_TOGG (PORT_LED ^= PIN_LED_Z)

void InitLEDs(void);
void TIM_Config(void);



Kod się kompiluje ale na wyjściu gdzie są LEDy cały czas jest potencjał masy. Ma ktoś pomysł co może być źle?
Program napisany w Atmel Studio 6.1.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 gru 2014, o 15:11 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 sty 2013
Posty: 1760
Pomógł: 196

Witam
Ten init jest skopany:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

i brakuje TIMSK'a
A nawiasem mówiąc przypominanie kompilatorowi żeby wstawił zera tam gdzie by to zrobił sam wydaje się zbędne - chodzi o TCCR0A.

Pozdr.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 2 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 2 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO