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

[ATMEGA32][BASCOM] Konfiguracja portów...

tgrabka 25 Cze 2008 00:05 4436 16
  • #1 5282463
    tgrabka
    Poziom 14  
    Pewnie to będzie trywialne, ale mam taki problem.

    Otóż chcę ustawić sobie parę pinów w portach w ten sposób, że:

    - PIN1 funkcja SET daję na nim napięcie +5V
    - PIN1 funkcją RESET zanika napięcie +5V

    - PIN2 funkcja SET zwiera pin do masy
    - PIN2 funkcja RESET rozwiera PIN z masą

    PIN1 ma mi służyć do sterowania silników krokowych. A dokładniej do funkcji STEP kontolera.

    PIN2 ma mi służyć do sterowania przekaźnikami. PIN2 podłączony jest przez rezystor 100OHm z tranzystorem 2N3906.
  • #2 5282553
    dawid512
    Poziom 32  
    Porty konfigurujesz poleceniem " Config PortX = Input lub Output" czyli przykładowo jeżeli chcesz aby dany pin portu służył jako wyjściowy to robisz tak:

    Config PORTB.0 = Output


    Lub
    DDRB =&B00000001   co spowoduje  że portb.0 będzie wyjściem



    Poleceniem Set Portb.0 wystawiasz +5V na tę końcówkę portu a poleceniem Reset Portb.0 ustawiasz 0 (masę).

    Do sterowania silnikami możesz użyć PWM ( poczytaj o tym w helpie do Bascoma).

    Podłączając tranzystor do przekaźnika pamiętaj także o umieszczeniu diody na jego stykach zasilania w sposob zaporowy.
  • #4 5285635
    dawid512
    Poziom 32  
    Dokładnie Balu ale oczywiście nikomu się nie chce... bo przecież na forum zrobią za ciebie ehh... Powinny być ostrzeżenia za takie lenistwo.
  • #5 5378492
    gucio28
    Poziom 12  
    Witam
    Chciałbym się poradzić bo mam problem z uC i/lub bascomem (nie wiem czym jest to spowodowane). Otóż napisałem sobie prosty program który ma zapalać diodę po podaniu na jedną nóżkę uC stanu niskiego dioda podpięta pod inny pin zapali się na 200 ms i zgaśnie z powrotem.Okazało się jednak że uC nie reaguje na podania gnd na nóżkę wejścia. (sprawdzałem na 2 attiny2313 i jednej atmedze 8 więc to chyba wina programatora[stk500v2]/bascoma)
    Nie działają również przerwania chociaż miałem je dobrze ustawione i włczoną funkcję globalnych przerwań. Byłbym wdzięczny za jakąkolwiek pomoc.
    Ps. Z przerwań chodzi tylko reset. Piny ustawione w stan output też chodzą dobrze.

    Oto ten prosty kod (bascom):

    Config Portb = Output
    Config Portd.1 = Input
    Portd.1 = 1
    Portb = 0
    Do
    If Portd.1 = 0 Then
    Portb.4 = 1
    Waitms 200
    Portb.4 = 0
    End If
    Waitms 100
    Loop
    End


    Proszę umieszczać listingi programów w znacznikach "Code". [c_p]
  • #6 5378529
    ZbeeGin
    Poziom 39  
    I znów brak podstawowego poszanowania czasu forumowiczów. Nie czytasz dokumentacji!! Błąd jest tutaj:
    If Portd.1 = 0 Then 
    Portb.4 = 1

    A teraz znajdź dlaczego tutaj jest błąd :arrow: http://zbeegin.republika.pl/bashelp/hw_port_d.html http://zbeegin.republika.pl/bashelp/hw_port_b.html
  • #9 5378972
    dawid512
    Poziom 32  
    Balu napisał:
    Cytat:

    Config Portd.1 = Input

    Tu też jest błąd.

    P.S. Zbeegin, w helpie masz ubity link do config pin:)


    Zadziała Balu, przecież wiesz jaki "łaskawy" jest kompilator Bascoma...

    Do autora tematu:

    Ustawić port możesz tak jak ty to zrobiłeś ale poprawniej jest ustawić go przez rejestr DDRX.

    Jeszce raz napiszesz:
    If Portd.1 = 0 Then
    Portb.4 = 1 


    To nie wiem co ci zrobię.... może moderator wyjaśni ci to inaczej...

    Jeszce raz:

    Port ustawiasz tak:
    CONFIG PORTB.0=INPUT/OUTPUT
    


    Lub o wiele poprawniej:
    
    DDRB =&B00000001   co spowoduje  że portb.0 będzie wyjściem


    Czyli 1 wyjscie 0 wejscie.

    Jak ustawiasz jako wejscie nie zapomnij o pull-up (podciagnieciu do 1).

    Jak chcesz sprawdzić stan to PIN a nie PORT wbij to sobie do głowy!!!

    Bardziej łopatologicznie się nie da!
  • #10 5379262
    ZbeeGin
    Poziom 39  
    Balu napisał:
    P.S. Zbeegin, w helpie masz ubity link do config pin:)

    W nagłówku indeksu pisze: W przygotowaniu. Dlatego większość linków nie działa... Ale specjalnie dla Was wygenerowałem tą stronę. http://zbeegin.republika.pl/bashelp/s_config_port.html

    dawid512 napisał:
    Lub o wiele poprawniej:
    
    DDRB =&B00000001   'co spowoduje  że portb.0 będzie wyjściem

    Już lepiej i czytelniej wygląda to jak wpiszesz:
    Cytat:

    Config PortB = &B00000001


    jeśli się już upierać przy maskach bitowych.
  • #11 5395824
    simoneus
    Poziom 11  
    Witam,


    od kilku dni męczę się z podobnym problemem (piszę w Bascomie AVR 1.11.8.3). Juz sam nie wiem co jest nie tak. Programator działa poprawnie. Mogę odczytać sygnaturę układu(ATtiny26) jak również załadowac program (przez ISP programer Dybkowskiego) plik hex (cykliczna zmiana stanów na wyjściach portów)- napisany celem sprawdzenia programatora i całej płytki, co prawda w C, a następnie skopilowany na hexa, ale działa.


    Teraz próbuję napisać to w Bascomie i d... zimna

    program się ładuje, ale procek głuch jak pień

    listing:

    $regfile = "At26def.dat"
    $crystal = 8000000
    
    Config Porta = &B11111111
    
    Do
        Waitms 255
        Reset Porta.7
        Waitms 255
        Set Porta.7
    Loop
    End
    


    Z Fuse bitami nic specjalnie nie zmieniałem, tylko rezonator kwarcowy zewnętrzny 8MHz... ale musi to działac bo na ładowanym programie z hexa jest OK i diody podłączone do wyjść portów migaja.

    Czy może ktoś z szanownych forumowiczów znalazłby trochę czasu i pomógł mi w skompilowaniu/załadowaniu programu do procka, tak zeby wszystko działało jak trzeba.. Jestem z Poznania, więc chętnie spotkałbym się z osobiście celem zasięgnięcia porady

    pozdrawiam
    Szymon

    Proszę umieszczać listingi programów w znacznikach "Code". [c_p]
  • #12 5396158
    yokoon
    Poziom 29  
    Witam.

    Napisałeś: Config Porta = &B11111111 to jest kierunek transmisij
    dopisz Porta = &B11111111
  • #13 5396651
    ZbeeGin
    Poziom 39  
    yokoon napisał:
    Witam.

    Napisałeś: Config Porta = &B11111111 to jest kierunek transmisij
    dopisz Porta = &B11111111

    Niby w jakim celu? Kolega nie chce czytać pinów wejściowych tylko ustawiać wyjścia.
  • #14 5396671
    simoneus
    Poziom 11  
    napisałem.... i nic to nie zmienia... już mnie szlak tarfia z tym attiny26 spróbuję na atmega8 moze z tymi scalakami jest cos nie tak... bo szczerze mówiąc to juz chyba z 5 mi zdechł
  • #15 5396776
    crazy_phisic
    VIP Zasłużony dla elektroda
    "At26def.dat" - a co to za cudaczek? Proponuję zmienić na attiny26.dat
  • #16 5397518
    simoneus
    Poziom 11  
    w Bascomie taki mam plik dla Attiny26 (At26def.dat), jak zrobie podglad tego pliku to w nim jest napisane, iz jest pod tiny26 własnie
  • #17 5409197
    wojnar
    Poziom 17  
    Nie wiem co masz za Bascoma, ale ja, a chyba i każdy inny, mam Attiny26.dat. I taki i Ty powinieneś mieć. Najpierw zrób porządek z tym a potem wystawiaj ortele.
REKLAMA