Attiny 13A dwie diody migające na przemian program

Czyli wszystko co potrzebne prawdziwemu DIY'owi;) Porady, pytania i opisy używanego przez nas sprzętu.
Ada20
Posty: 71
Rejestracja: niedziela 08 gru 2013, 13:26
Lokalizacja: Wroclaw

Attiny 13A dwie diody migające na przemian program

Post 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
Ostatnio zmieniony niedziela 08 gru 2013, 19:07 przez Ada20, łącznie zmieniany 1 raz.
Awatar użytkownika
Pyra
Site Admin
Posty: 8527
Rejestracja: niedziela 02 sie 2009, 20:35
Lokalizacja: Gądki

Post autor: Pyra »

Witam
Przepraszam że pytam, chodzi o praktyczne rozwiązanie problemu, czy jakiegoś zadania?

Pozdrawiam
Izali miecz godniejszy niżli topór w boju?
Piszmy po polsku, wszak jesteśmy Polakami.
Ada20
Posty: 71
Rejestracja: niedziela 08 gru 2013, 13:26
Lokalizacja: Wroclaw

Post autor: Ada20 »

Witam
Codzi o zamieszczenie tutaj , tekstu programu.
Pozdrawiam
Ostatnio zmieniony niedziela 08 gru 2013, 15:37 przez Ada20, łącznie zmieniany 1 raz.
joon
Posty: 621
Rejestracja: niedziela 04 mar 2012, 15:31
Lokalizacja: Przemyśl

Post autor: joon »

Hmmm, 3 forum na którym widzę tą samą "prośbę" :roll:
Awatar użytkownika
Fluxor
Posty: 2549
Rejestracja: wtorek 16 gru 2008, 12:17
Lokalizacja: Opole

Post autor: Fluxor »

Pewnie jest do zrobienia zadanie domowe.
http://specjalistycznyspecjalista.blogspot.com/
POST MOŻE ZAWIERAĆ LOKOWANIE PRODUKTU
Awatar użytkownika
krzycho_
Posty: 2187
Rejestracja: piątek 08 maja 2009, 18:40
Lokalizacja: Poznań

Post 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...
elektroda.pl
Awatar użytkownika
greg
Posty: 3535
Rejestracja: środa 08 paź 2008, 00:16
Lokalizacja: Wrocław
Kontakt:

Post autor: greg »

Leniuszek... :mrgreen: Niczego się w ten sposób nie nauczysz, Kolego Ada20 :)
Sterownik extended v3.5 HE <klik>
Instrukcje sterowników w PDF <klik>

kontakt: info(at)krypton(dot)pl
(podstawić @ i . w stosowne miejsca)
Awatar użytkownika
Pyra
Site Admin
Posty: 8527
Rejestracja: niedziela 02 sie 2009, 20:35
Lokalizacja: Gądki

Post autor: Pyra »

Witam
Ada20 pisze:Chodzi o zamieszczenie tutaj , tekstu programu.
Tylko, że to nie jest odpowiedź na moje pytanie.

Pozdrawiam
Izali miecz godniejszy niżli topór w boju?
Piszmy po polsku, wszak jesteśmy Polakami.
Awatar użytkownika
fredek
Posty: 372
Rejestracja: poniedziałek 03 maja 2010, 13:58
Lokalizacja: Łódź

Post autor: fredek »

Kod: Zaznacz cały

/*
 * LED.c
 *
 *  Created on&#58; 09-12-2013
 *       Autor&#58; fredek
 *       CPU&#58; ATtiny13A
 *       FUSEBIT&#58; 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:
Awatar użytkownika
ElSor
Site Admin
Posty: 5041
Rejestracja: niedziela 13 wrz 2009, 12:52
Lokalizacja: Ozimek

Post autor: ElSor »

fredek, widzę "szkołę" Mirka i kilka ciekawych trików. Ciekawe czy koleżanka (Ada20) mimo komentarzy rozgryzie działanie tego. :razz:
Awatar użytkownika
fredek
Posty: 372
Rejestracja: poniedziałek 03 maja 2010, 13:58
Lokalizacja: Łódź

Post 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 ;)
Awatar użytkownika
ElSor
Site Admin
Posty: 5041
Rejestracja: niedziela 13 wrz 2009, 12:52
Lokalizacja: Ozimek

Post 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;

Ostatnio zmieniony wtorek 10 gru 2013, 11:59 przez ElSor, łącznie zmieniany 1 raz.
Awatar użytkownika
fredek
Posty: 372
Rejestracja: poniedziałek 03 maja 2010, 13:58
Lokalizacja: Łódź

Post autor: fredek »

ElSor, wygląda ciekawie, do jakiego poboru prądu z procka schodzisz ?
Awatar użytkownika
ElSor
Site Admin
Posty: 5041
Rejestracja: niedziela 13 wrz 2009, 12:52
Lokalizacja: Ozimek

Post 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
Ada20
Posty: 71
Rejestracja: niedziela 08 gru 2013, 13:26
Lokalizacja: Wroclaw

Post 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
Zablokowany