Pokrewne
menu      AMD Bi Opteron Quad 8x 1.80+ GHz Dyskusja pytania
menu      [Pytanie] Poszukuje dobrego serwera dedykowanego do gry "Tibia"
menu      Mam pytanie: kiedy moje 1000gp będzie w pełni funkcjonalne?
menu      Pytanie dotyczące tzw przenośnego dysku "ale takiego innego" :P
menu      Pytanie do praktyków - jakie zasilanie do urządzeń przenośnych [akumulatory]?
menu      Pytanie do elektroników-kierowców Mazdy 626 GF/GW
menu      trochę NTG ale może jednak - słuchawka bluetooth pytanie
menu      Co myslicie ? DS1621<->MAX232<->MAX232<->AVR
menu      Pytanie dtc. jeszcze starej oferty SP
menu      katalog zdalny
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • przylepto3.keep.pl
  • "hello world" avr - pytanie





    Szymon Kubicki - 14-12-2006 22:45
    "hello world" avr - pytanie
      Witam!

    Pytanie z kategorii mruganie dioda na atmedze.

    Dioda podpieta do portu PC5, wykorzystuje sobie Timer1. Tak wyglada kod:

    ==============================
    ..org 0x0000
    rjmp main

    main:

    sbi DDRB, DDB1
    sbi DDRC, DDC5

    ldi R16, (0<<COM1A1)|(1<<COM1A0)
    out TCCR1A, R16

    ldi R16, (1<<CS02)|(1<<CS00)
    out TCCR1B, R16

    loop:

    sbic PORTB,1
    sbi PORTC, PORTC5
    sbis PORTB,1
    cbi PORTC, PORTC5
    rjmp loop
    ==============================

    Diodka sie nie zapala. Jednakze port PB1 zmienia stany a PC5 nie chce.
    W symulatorze AVRStudio dziala. Nie mam za bardzo juz pomyslu.
    Jesli ktos mialby jakis pomysl to bylby wdzieczny za wskazowke.

    pozdrawiam

    --
    Szymon





    Robert Z. - 14-12-2006 22:45

     
    Użytkownik "Szymon Kubicki" <Szymon@no.spam.terror.org.pl> napisał w
    wiadomości news:slrneo3gd0.css.Szymon@terror.icm.edu.pl...
    .....
    >
    > Diodka sie nie zapala. Jednakze port PB1 zmienia stany a PC5 nie chce.
    > W symulatorze AVRStudio dziala. Nie mam za bardzo juz pomyslu.
    > Jesli ktos mialby jakis pomysl to bylby wdzieczny za wskazowke.
    >
    > pozdrawiam
    >
    > --
    > Szymon

    Zapewne przeszkadza JTAG. Wylacz jego obsluge naprzyklad za pomoca fusebitu
    JTAGEN.
    pozdrawiam




    Szymon Kubicki - 15-12-2006 00:45

      Robert Z. zeznal:
    >
    > Zapewne przeszkadza JTAG. Wylacz jego obsluge naprzyklad za pomoca fusebitu
    > JTAGEN.

    Nie napisalem ze to atmega8 w zwiazku z tym nie mam takiego bitu.

    pozdrawiam

    --
    Szymon




    Grzegorz Kurczyk - 15-12-2006 01:45

     
    Hmmm... dość dziwny kod.
    Uruchamiasz TIMER1 w trybie CTC Toggle i badasz stan wyjścia
    "togglownicy" aby zapalać diodę. Nie prościej Podłączyć tego LED-a
    prosto pod nogę PB1 ??? Jeśli już się upierasz przy takim rozwiązaniu to
    powinieneś testować stan wejścia PINB1, bo TIMER1 w trybie CTC czy PWM
    nie zmienia wartości bitów w PORTB tylko wymusza stany logiczne na
    wyjściu PB1 (lub PB2) więc w Twoim przykładzie powinno być raczej:

    loop:

    sbic PINB,1
    sbi PORTC, PORTC5
    sbis PINB,1
    cbi PORTC, PORTC5
    rjmp loop

    W AVRStudio nie wierz tak bezkrytycznie, bo już niejednokrotnie dało mi
    popalić i od conajmniej dwóch lat trzymam się od niego z daleka. Często
    miałem odwrotne sytuacje niż Twoja. W AvrStudio program nie chciał
    działać, a po wgraniu do procka śmigał aż miło.

    Jeszcze jedna sprawa mnie dziwi w tym przykładowym programie. Nie
    inicjalizujesz wartości rejestru OCR1A.

    Pozdrawiam
    Grzegorz





    Szymon Kubicki - 15-12-2006 07:46

      Grzegorz Kurczyk zeznal:
    >
    > Hmmm... dość dziwny kod.
    > Uruchamiasz TIMER1 w trybie CTC Toggle i badasz stan wyjścia
    > "togglownicy" aby zapalać diodę. Nie prościej Podłączyć tego LED-a
    > prosto pod nogę PB1 ??? Jeśli już się upierasz przy takim rozwiązaniu to
    > powinieneś testować stan wejścia PINB1, bo TIMER1 w trybie CTC czy PWM
    > nie zmienia wartości bitów w PORTB tylko wymusza stany logiczne na
    > wyjściu PB1 (lub PB2) więc w Twoim przykładzie powinno być raczej:

    Diode juz mialem podlutowana do tego wyjscia. Ja wiem ze to nie problem
    przelutowac ale tez teoretycznie nie problem obejsc to programem.
    A jak inaczej to zrobic wykorzystujac timer? Mozna dorzucic jeszcze
    obsluge przerwania po przepelnieniu licznika ale tak jest chyba
    prosciej?

    > loop:
    >
    > sbic PINB,1
    > sbi PORTC, PORTC5
    > sbis PINB,1
    > cbi PORTC, PORTC5
    > rjmp loop

    Dziala :)
    Aczkolwiek wczesniejsza wersja wykorzystywala skoki do etykiet i tez
    sprawdzalem PINx i nie dzialalo. Ale teraz dziala, dzieki :)

    > Jeszcze jedna sprawa mnie dziwi w tym przykładowym programie. Nie
    > inicjalizujesz wartości rejestru OCR1A.

    No bo to w sumie nie tryb CTC tylko normal (WGM1.3-0 = 00). Licznik
    zlicza do pelnej swojej pojemnosci a ze przy okazji dziala ustawienie
    generowania sygnalu na OC1A/PB1 no to tak zrobilem. Na poczatku robilem
    tak jak mowisz ale ostatecznie wyszlo tak.

    pozdrawiam

    --
    Szymon




    Grzegorz Kurczyk - 15-12-2006 08:45

      Użytkownik Szymon Kubicki napisał:
    > Diode juz mialem podlutowana do tego wyjscia. Ja wiem ze to nie problem
    > przelutowac ale tez teoretycznie nie problem obejsc to programem.
    > A jak inaczej to zrobic wykorzystujac timer? Mozna dorzucic jeszcze
    > obsluge przerwania po przepelnieniu licznika ale tak jest chyba
    > prosciej?

    Przerwania aż się proszą :-)
    Ewentualnie testować stan licznika w rejestrze TIFR

    > Dziala :)
    > Aczkolwiek wczesniejsza wersja wykorzystywala skoki do etykiet i tez
    > sprawdzalem PINx i nie dzialalo. Ale teraz dziala, dzieki :)
    >
    >
    >>Jeszcze jedna sprawa mnie dziwi w tym przykładowym programie. Nie
    >>inicjalizujesz wartości rejestru OCR1A.
    >
    >
    > No bo to w sumie nie tryb CTC tylko normal (WGM1.3-0 = 00).

    Aaa... fakrycznie. Późna pora już była i coś mi się pozajączkowało :-)

    Pozdrawiam
    Grzegorz




    Szymon Kubicki - 15-12-2006 09:45

      Grzegorz Kurczyk zeznal:
    > Użytkownik Szymon Kubicki napisał:
    >> Diode juz mialem podlutowana do tego wyjscia. Ja wiem ze to nie problem
    >> przelutowac ale tez teoretycznie nie problem obejsc to programem.
    >> A jak inaczej to zrobic wykorzystujac timer? Mozna dorzucic jeszcze
    >> obsluge przerwania po przepelnieniu licznika ale tak jest chyba
    >> prosciej?
    >
    > Przerwania aż się proszą :-)
    > Ewentualnie testować stan licznika w rejestrze TIFR

    Tak myslalem. Ale tej diodce to juz dam spokoj :)
    To jest ogolnie moj debiut na avr. Uklad dziala, programator tez, teraz
    bedzie sie mozna skupic na zadaniu.

    Dzieki za pomoc i pozdrawiam

    --
    Szymon
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • konstruktor.keep.pl
  • Design by flankerds.com