Strona 1 z 2

Attiny 13A dwie diody migające na przemian program

: niedziela 08 gru 2013, 13:44
autor: Ada20
Witam !
Potrzebuję darmowego programu w języku C, do Attiny 13A , i Atmega 8 A,aby na wyjściu, na nóżce PB0 był stan niski 120 sekund, a na nóżce PB1wysoki 120 sekund,duty cycle 50 %.
Chodzi o to aby dioda led zielona podłączona do PB0 katodą i do PB1 anodą zapalała się na 120 sekund a potem gasła na 120 sekund,abym sama w programie mogła zmieniać czasy od 20Hz do 10 minut.
Dioda led czerwona podłączona do PB0 anodą i do PB1 katodą gasła by i zapalała się co 120 sekund.
Gdy dioda zielona świeci 120 sekund w tym czasie dioda czerwona jest wyłączona na 120 sekund,gdy przestaje świecić dioda zielona,zapala się dioda czerwona na 120 sekund i tak w kółko,zielona świeci,czerwona nie świeci,czerwona świeci,zielona nie świeci,itd.
Czy do wgrania tego programu potrzeba ustawiać fusebity,jeśli tak to jakie.
Za program z góry dziękuję.
Pozdrawiam
Ada

: niedziela 08 gru 2013, 13:51
autor: Pyra
Witam
Przepraszam że pytam, chodzi o praktyczne rozwiązanie problemu, czy jakiegoś zadania?

Pozdrawiam

: niedziela 08 gru 2013, 13:58
autor: Ada20
Witam
Codzi o zamieszczenie tutaj , tekstu programu.
Pozdrawiam

: niedziela 08 gru 2013, 14:48
autor: joon
Hmmm, 3 forum na którym widzę tą samą "prośbę" :roll:

: niedziela 08 gru 2013, 15:59
autor: Fluxor
Pewnie jest do zrobienia zadanie domowe.

: niedziela 08 gru 2013, 16:05
autor: krzycho_
Zadanie na 5 min ;) Nie potrzeba zmieniać fuse'ów na fabrycznym zegarze będzie działać.
Witam
Codzi o zamieszczenie tutaj , tekstu programu.
Pozdrawiam
Żartujesz :razz: Wszystko by chcieli gotowe na tacy...

: niedziela 08 gru 2013, 16:26
autor: greg
Leniuszek... :mrgreen: Niczego się w ten sposób nie nauczysz, Kolego Ada20 :)

: niedziela 08 gru 2013, 18:49
autor: Pyra
Witam
Ada20 pisze:Chodzi o zamieszczenie tutaj , tekstu programu.
Tylko, że to nie jest odpowiedź na moje pytanie.

Pozdrawiam

: poniedziałek 09 gru 2013, 18:40
autor: fredek

Kod: Zaznacz cały

/*
 * LED.c
 *
 *  Created on: 09-12-2013
 *       Autor: fredek
 *       CPU: ATtiny13A
 *       FUSEBIT: LOW=0x75 HIGH=0xFF
 */

#include <avr/io.h>
#include <avr/interrupt.h>

// definicje podłączenia portów
#define LED_PIN1	&#40;1<<PB0&#41;	// dioda LED czerwona &#40;anoda do portu PB0, katoda do PB1&#41;
#define LED_PIN2	&#40;1<<PB1&#41;	// dioda LED zielona &#40;katoda podłączona do PB0, anoda do PB1&#41;

// makra
#define LED_ON PORTB |= LED_PIN1; PORTB &= ~LED_PIN2;
#define LED_OFF PORTB |= LED_PIN2; PORTB &= ~LED_PIN1;

// definicje typów
typedef uint8_t u08;
typedef uint16_t u16;

// definicje opóźnień
#define WAIT 2400 		// czas opóźniena&#58; dla 120 sek = 20Hz * 120sek = 2400

// definicje zmiennych
volatile u08 led;

int main &#40;void&#41;
&#123;

	// inicjacja wyjść
	DDRB |= LED_PIN1 | LED_PIN2 ;	// ustawiamy rejest kierunkowy na wyjścia dla portów LED

	// Ustawienie Timer0 CTC mode
	TCCR0A |= &#40;1<<WGM01&#41;;			// tryb CTC
	TCCR0B |= &#40;1<<CS02&#41;|&#40;1<<CS00&#41;;	// preskaler = 1024
	OCR0A = 234;					// ~ 20 Hz dla zegara 4,8 MHz
	TIMSK0 |= &#40;1<<OCIE0A&#41;;			// Timer/Counter0 Output Compare Match

	sei&#40;&#41;;				// włączenie przerwań

	while &#40;1&#41;	// główna pętla
	&#123;
		if &#40;led&#41; &#123; LED_ON &#125; else &#123; LED_OFF &#125;
	&#125;
&#125;

// ===== obsługa przerwanie 20 Hz =====
ISR &#40;TIM0_COMPA_vect&#41;
&#123;
	static u16 wait = WAIT;

	if &#40;!--wait&#41;
	&#123;
		wait = WAIT;
		if &#40;led&#41; led=0; else led=1;

	&#125;
&#125;

// koniec pracy domowej ;&#41;
Ada20 Pochwal się chociaż oceną jaką dostałeś z tej pracy domowej :mrgreen:

: poniedziałek 09 gru 2013, 19:15
autor: ElSor
fredek, widzę "szkołę" Mirka i kilka ciekawych trików. Ciekawe czy koleżanka (Ada20) mimo komentarzy rozgryzie działanie tego. :razz:

: poniedziałek 09 gru 2013, 19:27
autor: fredek
ElSor, zgadza się :D był to ciekawy przerywnik bo czeka mnie aktualnie lektura Pana Bruce Eckel czyli książeczki Thinking in Java, to jest dopiero jazda ;)

: poniedziałek 09 gru 2013, 19:41
autor: ElSor
Skoro już jest temat z miganiem w C to może pochwalę się mniej zaawansowanym generatorem ale za to super oszczędnym:

Kod: Zaznacz cały


    #include <avr/io.h>
    #include <avr/interrupt.h>
    #include <avr/sleep.h>
     
    #define LED &#40;1<<PB1&#41;
    #define kierunek DDRB
     
     
    void inicjacje &#40;void&#41;
    &#123;
            kierunek |= LED; //ustawienie pinu LEDa jako wyjśie, reszta jako wejścia
            WDTCR |= &#40;1<<WDTIE&#41; | &#40;1<<WDCE&#41; | &#40;1<<WDP3&#41;; //ustawienie przerwania od WD co 4s
            sei&#40;&#41;; //zezwolenie na przerwania
            set_sleep_mode&#40;SLEEP_MODE_PWR_DOWN&#41;; //lub sleep_mode_idle jak bedzie ADC lub timer włączony
            sleep_enable&#40;&#41;;
    &#125;
     
    void oszczedzanie_pradu&#40;void&#41;
    &#123;
            ACSR |= &#40;1<<ACD&#41;; //wylaczenie komparatora
            PRR |= &#40;1<<PRTIM0&#41; | &#40;1<<PRADC&#41;; //wyłączenie ADC i TIMERa0
            //napiecie odniesienia powinno zostac wylaczone jesli fusy od bodlvl sa wylaczone
    &#125;
     
     
    int main&#40;void&#41;
    &#123;
            inicjacje&#40;&#41;;
            oszczedzanie_pradu&#40;&#41;;  
            while&#40;1&#41;
        &#123;
                                                   
            sleep_mode&#40;&#41;;
                     
        &#125;
    return 0;
    &#125;
     
    ISR &#40;WDT_vect&#41;
&#123;
	PORTB ^= LED;
&#125;


: poniedziałek 09 gru 2013, 20:04
autor: fredek
ElSor, wygląda ciekawie, do jakiego poboru prądu z procka schodzisz ?

: poniedziałek 09 gru 2013, 20:07
autor: ElSor
Nie chcę strzelać ale przy zasilaniu z ogniwa 18650 było chyba mniej niż w datasheecie dla ATTiny 13A.
Power-Down Mode , WDT enabled, VCC = 3V = typ 3.9 ; max 10 &#956;A

: wtorek 10 gru 2013, 11:24
autor: Ada20
Witam
Fredek, dziękuję bardzo,dałam pierwszy program do sprawdzenia na Atmel Studio 6.1, nie ma błędów,ten Elsora drugi ma błędy.
Czy ktoś wie dlaczego u mnie program eXtreme Burner AVR nie działa,a program Sina Prog ,działa.
Jakie programy polecacie do obsługi ,wgrywania do mikroprocesorów.
Chyba zablokowałam Attiny 13a i A tmega 8 A ,jak je odblokować ,nie ma kontaktu miedzy mikrokontrolerem a programatorem USB.
Czy w tym programie trzeba zmieniać fuse bity,chyba nie.
Pozdrawiam