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

AtMega32 PORTD a konkretnie PD0 i PD1

adamzop 28 Kwi 2010 20:21 2688 9
  • #1 8013958
    adamzop
    Poziom 10  
    Witam!
    Mam pytanie dotyczące PORTU D mianowicie, jak na schemacie narysowałem PD3 - A PD2 - B PD1 - C PD0 - D PB7 - G1 . Czy PD0 i PD1 mają jakieś inne przeznaczenie niż I/O ? Ponieważ na demultiplekser nie dochodzi żaden stan z tych dwóch wyjść, demultiplekser policzy do 4 i się zapętla ( to wynika z tablicy niżej zamieszczonej, na A i B co 4 się powtarza całość) Wiecie co z tym zrobić ? Dodam że na AtMedze16 miałem ten sam problem, używam zestawu uruchomieniowego z GOTRONIKA:

    http://programatory.com.pl/sklep/index.php?p121,modul-uruchomieniowy-avr-atmega-16-wersja-2

    Pozdrawiam i z góry dzieki za pomoc ;]

    AtMega32 PORTD a konkretnie PD0 i PD1 AtMega32 PORTD a konkretnie PD0 i PD1
  • #3 8014058
    adamzop
    Poziom 10  
    Na datasheet'cie pisze ze mozna wykożystać wszystkie jako I/O ale tak najwyrazniej nie jest... co o tym sądzicie?
  • #4 8014087
    landy13
    Poziom 31  
    D0 i D1 to sprzętowy UART. Może na płytce jest jakiś MAX, który to zakłóca.
  • #5 8014239
    wicy
    Poziom 22  
    Jeśli używasz zestawu Gotronika to odłącz zwory przy wtyczce usb i programuj przez ISP lub programuj przez usb, odłączaj zwory, resetuj uP
  • #6 8018211
    adamzop
    Poziom 10  
    Próbowałem już tego sposobu( programowania przez USB, po programowaniu odłączenie zworki) , nic to nie dało może powinienem zrobic osobną płytkę i próbować, czy jest to wina bootloader'a? z tego co się domyślam to w nim się ustawia 2 piny do podłączenia rs'a...
  • #7 8018288
    wicy
    Poziom 22  
    Nie musisz robić nowych płytek. Najprawdopodobniej nie jest to też wina bootloadera. Mam ten sam zestaw i testowałem komunikację RS232 z komputerem. Wszystko działało poprawnie w zasadzie nawet bez wypinania zwór przy usb.
    Sprawdź najpierw D.0 i D.1 mrugając diodami. Skonfiguruj odpowiednio port. Skonfiguruj jeden pin jako wejście. Dodaj reakcję na guzik.
    Transmisja RS nie wymaga skonfigurowania portu. Sprawdź to sobie. Ja do transmisji używam chyba najprostszych procedur, przetestowanych na tym zestawie:
    
    $regfile = "m16def.dat"
    $crystal = 16000000
    $baud = 19200
    
    'zmienne obsługi odbioru danych przez USART
    Dim Buf(5) As Byte                                          'bufor wejsciowy danych
    Dim Index As Byte                                           'indeks kolejnego przychodzacego bajtu w buforze
    Dim Odebrano As Boolean                                     'flaga odebrania 5-ciu bajtów
    
    '-----------------------------------------------------
    On Urxc Odbierz
    'Ubrr = 207                                                  '4800 bps przy U2X=0
    Ubrr = 51                                                   '19200 bps przy U2X=0
    Usr = &B00100000
    Ucr = &B10010000
    Ucsrc = &B10000110
    Enable Urxc
    Enable Interrupts
    Index = 1
    Odebrano = 0
    
    Do
       If odebrano=1 Then
          'tu reakcja na odebranie znaków
       End If
    Loop
    End
    
    Odbierz:
       Buf(index) = Udr
       Incr Index                                               'zwiększamy licznik o jeden
       If Index = 5 Then               'tu odbieram akurat 5 bajtów bo tyle mi było trza
          Index = 1
          Odebrano = 1
       End If
    Return
    
  • #8 8019826
    kots
    Poziom 12  
    Coś tu chyba nie tak napisano

    Cytat:
    Transmisja RS nie wymaga skonfigurowania portu. Sprawdź to sobie. Ja do transmisji używam chyba najprostszych procedur, przetestowanych na tym zestawie:


    Użycie RS wymaga skonfigurowania portu, no chyba że robi to kompilator lub bootloader.

    KotS
  • #9 8019865
    _Robak_
    Poziom 33  
    kots napisał:
    Coś tu chyba nie tak napisano

    Cytat:
    Transmisja RS nie wymaga skonfigurowania portu. Sprawdź to sobie. Ja do transmisji używam chyba najprostszych procedur, przetestowanych na tym zestawie:


    Użycie RS wymaga skonfigurowania portu, no chyba że robi to kompilator lub bootloader.

    KotS


    Aby korzystać z UARTU NIE trzeba konfigurować ręcznie portów jako wyjście i wejście!
  • #10 8019866
    wicy
    Poziom 22  
    Dobrze napisano. Ustawienie bitów TXEN i RXEN w rejestrze UCSRB odpowiednio konfiguruje piny PD.0 i PD.1. Ustawienia rejestru podałem w przykładzie. Nie potrzeba używać Config PORTD.
REKLAMA