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

[Attiny2313][C] Sterowanie saa1057

xysio_ 23 Lut 2009 19:03 3648 29
  • #1 6193747
    xysio_
    Poziom 18  
    poszukuję jakichkolwiek pomocy(przykładowych programów, informacji) w napisaniu programu do sterowania syntezą w odbiorniku (saa1057), a attiny2313 lub at8, przeszukiwałem już forum ale znalazłem tylko bascom a interesuje mnie tylko C

    P.S nie wiem czy to odpowiedni dział jak by co dajcie znać
  • #2 6204163
    Freddy
    Poziom 43  
    Kolego po co otwierasz kilka tematów ?
    Jeden Ci usunięto, w drugim pytasz o zamiennik fukcji bascom w c w zasadzie o sterowanie SAA1057, w trzecim o Pytanie saa1057 , koledzy wyczaili, bo nietrudno.
    Zastanów się czego właściwie chcesz, to już kolejny topic z SAA1057, czyżbyś czekał na gotowca ?
    Jeśli tak to wpisz w googlach, a znajdziesz.
  • #3 6204383
    xysio_
    Poziom 18  
    zakładam bo na początku szukałem gotowca w c(kod źr) że nie znalazłem ani na forum ani na google, postanowiłem przepisać program z bascoma na C z tąd drugi temat, wybacz ale jestem całkowicie początkujący i nie jestem w stanie sam napisać programu "od zera"

    przepraszam za offtopic w pierwszej części

    jeśli możesz to podaj mi link do kodu w c bo mi nie udało się znaleźć


    pzdr

    Proszę poprawić błędy w pisowni - regulamin p.15
    [zumek]
  • #4 6204780
    Freddy
    Poziom 43  
    Tutaj nie dostaniesz kolego gotowca. Napisz coś sam, a pomożemy usunąć błędy.
  • #5 6204940
    xysio_
    Poziom 18  
    w temacie zamiennik funkcji są moje wypociny...
    oto one
    #include<avr/io.h>
    
    int dane;
    
    #define OSC 4
    
    // definicja funkcji opóźniającej
    void waitms(unsigned char x)
    {
    unsigned char a, b; // zmnienne licznikowe
    for( ; x > 0; --x) // ta pętla zostanie wykonana x-razy
    for(b = 10; b > 0; --b) // a ta 10 razy
    for(a = 25 * OSC; a > 0; --a) // natomiast ta 100 razy
    __asm("nop"); // dodatkowa instrukcja opóźniająca o 1 cykl
    // razem to da opóźnienie ok. x * 1ms
    // x od 0 do 255
    // gdy x = 0 to opóźnienie = 256ms
    }
    
    int main()
    {
    unsigned int i;
    DDRB=_BV(5) | _BV(6) | _BV(7);               //Mam nadzieję że _BV(7) oznacza 128 a nie 7 ;p
    PORTB=0xFF;
    
    while (1) {
    dane=0xC485;
     
    PORTB&=~_BV(5);
    PORTB|=~_BV(7);
    PORTB|=~_BV(6);
    waitms(5);
    PORTB|=_BV(7);
    waitms(5);
    PORTB|=_BV(6);
    waitms(5);
    PORTB&=~_BV(6);
    waitms(5);
    for(i=0;i>=15;i++)                //>= a nie >
    {
    
    PORTB = (PORTB & ~(5 << 1)) | (5 << ((dane >> i) & 1));
    waitms(5);
    PORTB|=_BV(6);
    waitms(5);
    PORTB&=~_BV(6);
    waitms(5);
    
    }
    PORTB&=~_BV(7);
    waitms(5);
    PORTB|=_BV(6);
    waitms(5);
    PORTB&=~_BV(6);
    waitms(5);
    PORTB|=_BV(7);
    waitms(5);
    PORTB|=_BV(5);
    PORTB|=_BV(6);
    waitms(100);
    
    
    
    
    dane=0x2E27;
    
    PORTB&=~_BV(5);
    PORTB|=~_BV(7);
    PORTB|=~_BV(6);
    waitms(5);
    PORTB|=_BV(7);
    waitms(5);
    PORTB|=_BV(6);
    waitms(5);
    PORTB&=~_BV(6);
    waitms(5);
    for(i=0;i>=15;i++)                //>= a nie >
    {
    
    PORTB = (PORTB & ~(5 << 1)) | (5 << ((dane >> i) & 1));
    waitms(5);
    PORTB|=_BV(6);
    waitms(5);
    PORTB&=~_BV(6);
    waitms(5);
    
    }
    PORTB&=~_BV(7);
    waitms(5);
    PORTB|=_BV(6);
    waitms(5);
    PORTB&=~_BV(6);
    waitms(5);
    PORTB|=_BV(7);
    waitms(5);
    PORTB|=_BV(5);
    PORTB|=_BV(6);
    waitms(100);
    
    
    return 0;     //Nie wiem czy tak wolno jak i czy to konieczne.
    }
    } 
    

    całośc napisana z pomocą Atom1477(wielkie dzięki dla niego za zainteresowanie i pomoc) ogólnie pojawiają się bardzo krótkie sygnały na wyjściu z avr`ka, kod jest klonem programu M.S w bascomie
  • #6 6205107
    Freddie Chopin
    Specjalista - Mikrokontrolery
    return 0; w petli while(1) natychmiast zresetuje twojego procka, a funkcje opozniajace sa juz gotowe w naglowku delay.h - twoja funkcja opozniajaca bedzie na moje oko dzialac z 5-10x wolniej niz ci sie wydaje.

    4\/3!!
  • #7 6206984
    xysio_
    Poziom 18  
    Freddie Chopin, usunąłem return 0; teraz napięcie strojenia staje na minimalnym(0,12V), zmiana wiatms na _delay nic nie zmieniła, co mnie martwi nie widzę na oscyloskopie żeby na wyjściu CLK z uC coś się działo a wg programu powinno
  • #9 6207792
    xysio_
    Poziom 18  
    zmieniłem, ale to nic nie pomogło,

    Dodano po 5 [godziny] 16 [minuty]:

    wkurzyłem się i rozpisałem program bit po bicie możecie na to rzucić okiem(działa tak samo jak reszta czyli napięcie strojenia stane na 0.12V i nic więcej się nie dzieję), mam nadzieję że dobrze zrobiłem procedurę wysyłania danych

    #include<avr/io.h>
    
    
    
    #define F_CPU 4000000
    
    #include <util/delay.h>
    
    int main()
    
    {
    
    DDRB=0xFF;	//porty b jako wyjścia
    PORTB=0x00; //porty b w stan wysoki
    
    _delay_ms(5);
    
    PORTB=_BV(6);//ENA w wysoki
    _delay_ms(5);
    
    PORTB|=_BV(7); //impuls clk
    _delay_ms(5);
    PORTB|=~_BV(7);
    _delay_ms(5);
    
    //ręczny ustawienia bitów
    PORTB = _BV(5);
    _delay_ms(5);
    PORTB|=_BV(7); //impuls clk 1
    _delay_ms(5);
    PORTB|=~_BV(7);
    _delay_ms(5);
    
    PORTB = _BV(5);
    _delay_ms(5);
    PORTB|=_BV(7); //impuls clk 2
    _delay_ms(5);
    PORTB|=~_BV(7);
    _delay_ms(5);
    
    PORTB=~_BV(6);
    _delay_ms(5);
    PORTB|=_BV(7); //impuls clk 3
    _delay_ms(5);
    PORTB|=~_BV(7);
    _delay_ms(5);
    _delay_ms(50);
    
    PORTB = ~_BV(5);
    _delay_ms(5);
    PORTB|=_BV(7); //impuls clk 4
    _delay_ms(5);
    PORTB|=~_BV(7);
    _delay_ms(5);
    
    PORTB = ~_BV(5);
    _delay_ms(5);
    PORTB|=_BV(7); //impuls clk 5
    _delay_ms(5);
    PORTB|=~_BV(7);
    _delay_ms(5);
    
    
    PORTB = _BV(5);
    _delay_ms(5);
    PORTB|=_BV(7); //impuls clk 6
    _delay_ms(5);
    PORTB|=~_BV(7);
    _delay_ms(5);
    
    PORTB = ~_BV(5);
    _delay_ms(5);
    PORTB|=_BV(7); //impuls clk 7
    _delay_ms(5);
    PORTB|=~_BV(7);
    _delay_ms(5);
    
    PORTB = ~_BV(5);
    _delay_ms(5);
    PORTB|=_BV(7); //impuls clk 8
    _delay_ms(5);
    PORTB|=~_BV(7);
    _delay_ms(5);
    
    PORTB = _BV(5);
    _delay_ms(5);
    PORTB|=_BV(7); //impuls clk 9
    _delay_ms(5);
    PORTB|=~_BV(7);
    _delay_ms(5);
    
    PORTB = ~_BV(5);
    _delay_ms(5);
    PORTB|=_BV(7); //impuls clk 10
    _delay_ms(5);
    PORTB|=~_BV(7);
    _delay_ms(5);
    
    PORTB = ~_BV(5);
    _delay_ms(5);
    PORTB|=_BV(7); //impuls clk 11
    _delay_ms(5);
    PORTB|=~_BV(7);
    _delay_ms(5);
    PORTB = ~_BV(5);
    _delay_ms(5);
    PORTB|=_BV(7); //impuls clk 12
    _delay_ms(5);
    PORTB|=~_BV(7);
    _delay_ms(5);
    
    PORTB = ~_BV(5);
    _delay_ms(5);
    PORTB|=_BV(7); //impuls clk 13
    _delay_ms(5);
    PORTB|=~_BV(7);
    _delay_ms(5);
    
    PORTB = _BV(5);
    _delay_ms(5);
    PORTB|=_BV(7); //impuls clk 14
    _delay_ms(5);
    PORTB|=~_BV(7);
    _delay_ms(5);
    
    PORTB = ~_BV(5);
    _delay_ms(5);
    PORTB|=_BV(7); //impuls clk 15
    _delay_ms(5);
    PORTB|=~_BV(7);
    _delay_ms(5);
    
    PORTB = _BV(5);
    _delay_ms(5);
    PORTB|=_BV(7); //impuls clk 16
    _delay_ms(5);
    PORTB|=~_BV(7);
    _delay_ms(5);
    
    //kończenie ramki1
    PORTB=0x00;
    _delay_ms(5);
    PORTB=_BV(6);//ENA w wysoki
    _delay_ms(5);
    
    PORTB|=_BV(7); //impuls clk
    _delay_ms(5);
    PORTB|=~_BV(7);
    _delay_ms(5);
    
    
    //częstotliwosc
    PORTB =~_BV(5);
    _delay_ms(5);
    PORTB|=_BV(7); //impuls clk 1
    _delay_ms(5);
    PORTB|=~_BV(7);
    _delay_ms(5);
    
    PORTB =~_BV(5);
    _delay_ms(5);
    PORTB|=_BV(7); //impuls clk 2
    _delay_ms(5);
    PORTB|=~_BV(7);
    _delay_ms(5);
    
    PORTB =_BV(5);
    _delay_ms(5);
    PORTB|=_BV(7); //impuls clk 3
    _delay_ms(5);
    PORTB|=~_BV(7);
    _delay_ms(5);
    
    PORTB =~_BV(5);
    _delay_ms(5);
    PORTB|=_BV(7); //impuls clk 4
    _delay_ms(5);
    PORTB|=~_BV(7);
    _delay_ms(5);
    
    PORTB =_BV(5);
    _delay_ms(5);
    PORTB|=_BV(7); //impuls clk 5
    _delay_ms(5);
    PORTB|=~_BV(7);
    _delay_ms(5);
    
    PORTB =_BV(5);
    _delay_ms(5);
    PORTB|=_BV(7); //impuls clk 6
    _delay_ms(5);
    PORTB|=~_BV(7);
    _delay_ms(5);
    
    PORTB =_BV(5);
    _delay_ms(5);
    PORTB|=_BV(7); //impuls clk 7
    _delay_ms(5);
    PORTB|=~_BV(7);
    _delay_ms(5);
    
    PORTB =~_BV(5);
    _delay_ms(5);
    PORTB|=_BV(7); //impuls clk 8
    _delay_ms(5);
    PORTB|=~_BV(7);
    _delay_ms(5);
    
    PORTB =~_BV(5);
    _delay_ms(5);
    PORTB|=_BV(7); //impuls clk 9
    _delay_ms(5);
    PORTB|=~_BV(7);
    _delay_ms(5);
    
    PORTB =~_BV(5);
    _delay_ms(5);
    PORTB|=_BV(7); //impuls clk 10
    _delay_ms(5);
    PORTB|=~_BV(7);
    _delay_ms(5);
    
    PORTB =_BV(5);
    _delay_ms(5);
    PORTB|=_BV(7); //impuls clk 11
    _delay_ms(5);
    PORTB|=~_BV(7);
    _delay_ms(5);
    
    PORTB =~_BV(5);
    _delay_ms(5);
    PORTB|=_BV(7); //impuls clk 12
    _delay_ms(5);
    PORTB|=~_BV(7);
    _delay_ms(5);
    
    PORTB =~_BV(5);
    _delay_ms(5);
    PORTB|=_BV(7); //impuls clk 13
    _delay_ms(5);
    PORTB|=~_BV(7);
    _delay_ms(5);
    
    PORTB =_BV(5);
    _delay_ms(5);
    PORTB|=_BV(7); //impuls clk 14
    _delay_ms(5);
    PORTB|=~_BV(7);
    _delay_ms(5);
    
    PORTB =_BV(5);
    _delay_ms(5);
    PORTB|=_BV(7); //impuls clk 15
    _delay_ms(5);
    PORTB|=~_BV(7);
    _delay_ms(5);
    
    PORTB =_BV(5);
    _delay_ms(5);
    PORTB|=_BV(7); //impuls clk 16
    _delay_ms(5);
    PORTB|=~_BV(7);
    _delay_ms(5);
    
    //konczenie ramki2
    PORTB=~_BV(6);
    _delay_ms(5);
    PORTB|=_BV(7); //impuls clk
    _delay_ms(5);
    PORTB|=~_BV(7);
    _delay_ms(5);
    _delay_ms(50);
    }
    
  • #10 6212803
    xysio_
    Poziom 18  
    napisałem program od nowa wprowadzając kilka poprawek, pomimo to ciągle nie działa

    #define F_CPU 4000000
    #include <avr/io.h>
    #include <util/delay.h>
    
    
    #define dat1 PORTB|=_BV(5);
    #define dat0 PORTB&=~_BV(5);
    #define ena1 PORTB|=_BV(6);
    #define ena0 PORTB&=~_BV(6);
    #define clk1 PORTB|=_BV(7);
    #define clk0 PORTB&=~_BV(7);
    
    
    int dane;
    unsigned int i;
    
    
    void saa()
    {
    //rozpoczęcie transmisji
    ena1;
    _delay_ms(5);
    clk1;
    _delay_ms(5);
    clk0;
    _delay_ms(5);
    //przesyłanie danych bit po bicie
    for(i=0;i<16;i++)
    {
    	PORTB = (PORTB & ~(5 << 1)) | (5 << ((dane >> i) & 1));
    	clk1;
    	_delay_ms(5);
    	clk0;
    	_delay_ms(5);
    }
    //konczenie transmisji
    ena0;
    _delay_ms(5);
    clk1;
    _delay_ms(5);
    clk0;
    _delay_ms(50);
    _delay_ms(50);
    }
    
    
    int main()
    {
    DDRB=_BV(5)|_BV(6)|_BV(7);
    PORTB=0xFF;
    
    dat0;
    ena0;
    clk0;
    
    dane=0b1100101010000000;
    
    saa();
    
    dane=0b0010111000100111;
    
    saa();
    
    }
    
  • #11 6212871
    Freddie Chopin
    Specjalista - Mikrokontrolery
    a nie dziala bo? w obecnej postaci ciagle wysyla te dwie wartosci, bo zaraz po wyslaniu drugiej program robi reset i zaczyna sie od poczatku.

    po co przypisujesz poczatkowo do PORTB 0xFF? jaki to ma sens, poza ewentualnymi bledami transmisji, przez ktore calosc moze nie dzialac?

    4\/3!!
  • #12 6213002
    Konto nie istnieje
    Poziom 1  
  • #13 6213103
    xysio_
    Poziom 18  
    freddie choppin
    czy chodzi o coś takiego:
    dane=0b0010111000100111;
    
    saa();
    
    _delay_ms(50);
    _delay_ms(50);
    _delay_ms(50);
    _delay_ms(50);
    _delay_ms(50);
    _delay_ms(50);
    _delay_ms(50);
    _delay_ms(50);
    _delay_ms(50);
    _delay_ms(50);
    
    
    }
    


    czy jesteś pewny że program nie umieszczony w pętli nieskończonej program wykonuje się ciągle(od nowa??)

    edit:

    usunąłem wpis
    oraz przeniosłem dat0; ena0; clk0; do funkcji saa, tak więc teraz po restarcie programu stany są raczej ustalone przed przesyłem danych
  • #14 6213258
    Freddie Chopin
    Specjalista - Mikrokontrolery
    owszem, bo po wyjsciu z maina twoj program sie RESETUJE

    po co umieszczac po sobie 100 wywolan funkcji opoznienia, skoro mozna wywolac funkcje opoznienia z argumentem pomnozonym przez 100?

    po co w ogole ten program ma sie resetowac? nie prosciej na koncu dac while(1); i po problemie?

    4\/3!!
  • #15 6213271
    xysio_
    Poziom 18  
    sugerowałem się tym, że na oscyloskopie nie widziałem dalszych zmian stanu na wyjściach uC, poprawiłem zgodnie z zaleceniami ale program nadal nie działa jak powinien, może ta funkcja rozbijania danych na pojedyncze bajty nie działa prawidłowo

    edit:
    sprawdzałem oscyloskopem wyprowadzenia uC i udało mi się zauważyć ruch na wszystkich wyjściach oprócz data, wychodzi na to że rozwiązanie z przesyłaniem danych jest wadliwe, wie ktoś jak to poprawić??

    edit:

    rozpisałem program tak że każdy bit wysyłam ręcznie po kolei teraz widać zmiany stanu na DATA ale synteza i tak nie rusza
  • #16 6216327
    xysio_
    Poziom 18  
    poprawiłem program zgodnie z zaleceniami Atom1447 i Freddie chopin,
    podejrzane wydaje mi się rozwiąznanie
    PORTB = (PORTB & ~(5 << 1)) | (5 << ((dane >> i) & 1));

    czy ma ktoś pomysł jak to sprawdzić lub czym zastąpić

    a tak teraz wygląda cały kod
    #define F_CPU 4000000
    #include <avr/io.h>
    #include <util/delay.h>
    
    
    #define dat1 PORTB|=_BV(5);
    #define dat0 PORTB&=~_BV(5);
    #define ena1 PORTB|=_BV(6);
    #define ena0 PORTB&=~_BV(6);
    #define clk1 PORTB|=_BV(7);
    #define clk0 PORTB&=~_BV(7);
    
    
    int dane;
    unsigned int i;
    
    
    void saa()
    {
    //rozpoczęcie transmisji
    dat0;
    ena0;
    clk0;
    ena1;
    _delay_ms(5);
    clk1;
    _delay_ms(5);
    clk0;
    _delay_ms(5);
    //przesyłanie danych bit po bicie
    for(i=0;i<16;i++)
    {
    	PORTB = (PORTB & ~(5 << 1)) | (5 << ((dane >> i) & 1));
    	clk1;
    	_delay_ms(5);
    	clk0;
    	_delay_ms(5);
    }
    //konczenie transmisji
    ena0;
    _delay_ms(5);
    clk1;
    _delay_ms(5);
    clk0;
    _delay_ms(50);
    _delay_ms(50);
    }
    
    
    int main()
    {
    DDRB=_BV(5)|_BV(6)|_BV(7);
    //PORTB=0xFF;
    
    
    dane=0b1100101010000000;
    
    saa();
    
    dane=0b0010111000100111;
    
    saa();
    
    _delay_ms(50);
    _delay_ms(50);
    
    
    
    while(1);
    
    }
    

    napięcie strojenia pozostaje ciągle na minimalnym(0.12V),
  • #17 6216947
    zumek
    Poziom 39  
    xysio_ napisał:
    ...podejrzane wydaje mi się rozwiąznanie
    PORTB = (PORTB & ~(5 << 1)) | (5 << ((dane >> i) & 1));

    I dobrze podejrzewasz :D
    xysio_ napisał:

    czy ma ktoś pomysł jak to sprawdzić lub czym zastąpić

    Zamień miejscami dane/wyrażenia, przy przesunięciach w lewo.
  • #18 6217001
    xysio_
    Poziom 18  
    masz na myśli coś takiego??
    PORTB = (PORTB & ~(1 << 5)) | (((dane >> i) << 5 & 1));


    Dodano po 8 [minuty]:
    zmieniłem, niestety napięcie strojenia ciągle stoi w miejscu

    Edit:
    na oscyloskopie nadal nie widzę zmian stanu na data(reszta linii wydaje się być OK)
  • #20 6217099
    xysio_
    Poziom 18  
    dzięki, na linii data pojawiły się w końcu impulsy, ale napięcie strojenia nadal nie jest takie jak być powinno, po tej zmianie wskakuje ma maksimum
  • #21 6217128
    zumek
    Poziom 39  
    xysio_ napisał:
    ... nadal nie jest takie jak być powinno...

    Myślałem że sam zauważysz, ale skoro nie zauważyłeś, to podpowiem - zła kolejność wysyłanych bitów :idea:
    Chyba że je poprzestawiałeś :?:
  • #22 6217141
    xysio_
    Poziom 18  
    czyli WORD A-częstotliwość musi być pierwsza??
    potem dopiero WORD B-ustawienia??

    edit:
    nie rozumiem o co chodzi

    edit:
    czy te dane 100101... powinny być odwrócone???
  • #23 6217175
    zumek
    Poziom 39  
    xysio_ napisał:
    czyli WORD A-częstotliwość musi być pierwsza??
    potem dopiero WORD B-ustawienia??

    To akurat jest bez znaczenia , tylko zauważ, że bity są wysyłane od najstarszego , a u Ciebie od najmłodszego.
    Poza tym, to czy przesyłasz WORD A, czy WORD B, zależy od wartości najstarszego bitu.
  • #24 6217184
    xysio_
    Poziom 18  
    odwróciłem te wartości tak że najstarszy powinien być wysyłany jako pierwszy, ale napięcie strojenia się nie zmieniło
  • #25 6217214
    M. S.
    Poziom 34  
    Cytat:
    ale napięcie strojenia nadal nie jest takie jak być powinno, po tej zmianie wskakuje ma maksimum


    Oprogramowanie dla SAA1057 to nie wszystko. Czy upewniłeś się, że generator który synteza kontroluje pracuje na prawidłowej częstotliwości? Synteza w przeciwieństwie do naszych polityków cudów robić nie umie. Nie jest w stanie naciągnąć częstotliwości generatora poza zakres jego przestrajania!
  • #26 6217221
    xysio_
    Poziom 18  
    syntezę odpalałem z kompa programikiem Saa1057 od sp1wsw i działała jak należy,

    Dodano po 2 [godziny] 58 [minuty]:

    dorzuciłem dodatkowe sygnały na końcu transmisji(podobnie jak jest w innych programach sterujących syntezą)
    ena1;
    _delay_ms(5);
    dat1;
    clk1; 
    _delay_ms(50);
    _delay_ms(50);

    to też nie pomogło

    Dodano po 3 [godziny] 3 [minuty]:

    w końcu zadziałało
    #define F_CPU 4000000
    #include <avr/io.h>
    #include <util/delay.h>
    
    
    #define dat1 PORTB|=_BV(5);
    #define dat0 PORTB&=~_BV(5);
    #define ena1 PORTB|=_BV(6);
    #define ena0 PORTB&=~_BV(6);
    #define clk1 PORTB|=_BV(7);
    #define clk0 PORTB&=~_BV(7);
    
    
    int dane;
    unsigned int i;
    
    
    void saa()
    {
    //rozpoczęcie transmisji
    dat0;
    ena0;
    clk0;
    _delay_ms(5);
    ena1;
    _delay_ms(5);
    clk1;
    _delay_ms(5);
    clk0;
    _delay_ms(5);
    //przesyłanie danych bit po bicie
    for(i=0;i<16;i++)
    {
    	PORTB = (PORTB & ~(1 << 5)) | (((dane >> i) & 1)<<5); 
    	_delay_ms(5);
    	clk1;
    	_delay_ms(5);
    	clk0;
    	_delay_ms(5);
    }
    //konczenie transmisji
    ena0;
    _delay_ms(5);
    clk1;
    _delay_ms(5);
    clk0;
    _delay_ms(5);
    ena1;
    _delay_ms(5);
    dat1;
    clk1; 
    _delay_ms(50);
    _delay_ms(50);
    }
    
    
    int main()
    {
    DDRB=_BV(5)|_BV(6)|_BV(7);
    PORTB=0xFF;
    _delay_ms(50);
    _delay_ms(50);
    
    dane=0b0000001110000011; //odwrócone
    //dane=0b1100000011100000;
    saa();
    
    
    dane=0b1110010001110100; //odwrócone
    //dane=0b0010111000100111;
    saa();
    
    _delay_ms(50);
    _delay_ms(50);
    
    
    
    while(1);
    
    }
    

    teraz jeszcze problem zmieniania częstotliwości, czy wie ktoś jak w prosty sposób zamienić dec na bin, lub dodawać biny?
  • Pomocny post
    #27 6219352
    Konto nie istnieje
    Poziom 1  
  • #28 6220416
    xysio_
    Poziom 18  
    dzięki atom pętla działa jak należy
  • #30 16749716
    Konto nie istnieje
    Konto nie istnieje  
REKLAMA