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

[mega8][BASCOM] Uparty mikrokontroler, wyjścia i wejścia I/O

Madik 05 Sty 2010 19:15 2366 10
  • #1 7490049
    Madik
    Poziom 15  
    Witam!
    Ostatnio zacząłem programować uC, a konkretnie atmegę 8. Okazało się, że diody ładnie się zapalają, PWM działa. Oznacza to, że wyjścia dobrze działają lecz gdy chce coś "odebrać" (mam na myśli: ADC; sygnały z przycisków), to atmega zaczyna wariować.
    Dioda LED, która sygnalizuje, że przycisk jest wciśnięty wogóle nie reaguje, a co przybliżę rękę do układu to dioda się zapala...
    Co mogę zrobić aby to działało?
    Czy może dodać kwarc 4MHz?
    Może co innego zrobić?
  • Pomocny post
    #2 7490090
    Krauser
    Poziom 26  
    Jeżeli przycisk zwiera wejście do masy to trzeba jeszcze włączyć wewnętrzny rezystor podciągający wpisując do portu 1.
  • Pomocny post
    #3 7490125
    jacekk232
    Poziom 17  
    Podaj kod programu i jeszcze schemat jak byś mógł. Będzie łatwiej.

    Ps. Mam nadzieję, że kondensatory są wszędzie tam gdzie być powinny?
  • #4 7490136
    Madik
    Poziom 15  
    Szczerze mówiąc, podłączyłem przyciski zwierające do plusa... a z ADC to musi być kwarc, czy mozna co innego zrobić? Kondesatory są, kod zamieszczam poniżej:
    Próbowałem z "Debounce"
    'KONFIGURACJA czujników dla czarnej lini
    $regfile = "m8def.dat"
    
    
    
    Config Portb = Input                                        'port b  jako wejścia
           Portb = &B00000000                                   'wszędzie stan spoczynkowy-0
    Config Portd = Output                                       'pprt d jako wyjścia
           Portd = &B0000000                                    'wszędzie stan spoczynkowy-0
    
    
     Do                                                         'pętla nieskończona
    
       Debounce Pind.0 , 1 , Wlacz , Gosub
    
     Loop                                                       'koniec petli
    
    Wlacz:                                                      'etykieta
    Portb.6 = 1
                                                    'zmień stan wyprowadzenia
    Return                                                      'powrót
    
    End               

    Najprostszy program:
    
    $regfile = "m8def.dat"                                      'najpierw określamy typ proca
    $crystal = 1000000                          'definiujemy z jakim taktowaniem będzie pracował
    
    
    Config Portb = Output                                       'port b  jako wejścia
           portb=&B00000000                     'wszędzie stan spoczynkowy-0
    Config Portd = Input                                        'pprt d jako wyjścia
           portd=&B0000000                      'wszędzie stan spoczynkowy-0
    
    
     do                                         'pętla nieskończona
    
       If Pind.0 = 1 Then                                       'jeżeli przycisk 1 wciśnięty
       Portb.6 = 1                                              'zapal diode
                                      'zgaś diodę
       endif                                    'koniec bloku warunkowego
    
     loop                                       'koniec pętli
    
    end                                         'koniec programu 

    Żaden nie działa:cry:
  • Pomocny post
    #5 7490370
    Konto nie istnieje
    Poziom 1  
  • #6 7496119
    Madik
    Poziom 15  
    Dzięki wszystkim zaraz nagrodzę "pomógł". Mam takie pytanie... bo wstawiłem taki programik:
    'KONFIGURACJA czujników dla czarnej lini
    $regfile = "m8def.dat"
    
    
    
    Config Portb = Output                                       'port b  jako wejścia
           Portb = &B00000000                                   'wszędzie stan spoczynkowy-0
    Config Portd = Input                                        'pprt d jako wyjścia
           Portd = &B0000000                                    'wszędzie stan spoczynkowy-0
        Portb.6 = 1
    
     Do                                                         'pętla nieskończona
    
       Debounce Pind.0 , 1 , Wlacz , Sub
    
     Loop                                                       'koniec petli
    
    Wlacz:                                                      'etykieta
    Portb.6 = 0
                                                    'zmień stan wyprowadzenia
    Return                                                      'powrót
    
    End

    Jak nacisnę to dioda gaśnie, lecz później nie zapala się jak puszczę przycisk... co jest nie tak?
  • Pomocny post
    #7 7496177
    Konto nie istnieje
    Poziom 1  
  • #8 7496227
    Madik
    Poziom 15  
    Ok, a jak bym chciał dodać czujnik lini tcrt1010 to co musiałbym dodać w moim programie? (aby zapalał diodę gdyby znalazła się na czarnej powierzchni ).(powiedzmy że wyregulowany jest czujnik tak aby przełączał między logiczną 1 a 0 port)
  • #9 7500932
    Madik
    Poziom 15  
    Dałem taki kod
    'Konfiguracja Czujników Dla Czarnej Lini
    $regfile = "m8def.dat"
    
    
    
    Config Portb = Output                                       'port b  jako wejścia
           Portb = &B00000000                                   'wszędzie stan spoczynkowy-0
    Config Portd.0 = Input                                      'pprt d jako wyjścia
                                               'wszędzie stan spoczynkowy-0  Debounce Pind.0
    
     Do                                                         'pętla nieskończona
      Debounce Pind.0 , 1 , Wlacz , Sub
      Debounce Pind.0 , 0 , Wylacz , Sub
     Loop                                                       'koniec petli
    
    Wlacz:                                                      'etykieta
    Portb.6 = 1
                                                     'zmień stan wyprowadzenia
    Return                                                      'powrót
    
    Wylacz:
    Portb.6 = 0
    Return
    End

    Dioda się zapala lecz gaśnie dopiero po około 3 sekundach... Jak to zrobić aby dioda gasła wcześniej?
  • #10 7501152
    landy13
    Poziom 31  
    Nie piszesz czy zastosowałeś rezystory jak radził atom. Pokaż schemat, kod to nie wszystko.
  • #11 8227978
    Madik
    Poziom 15  
    Temat do zamknięcia. Problem tkwił w zasilaczu. Niby stabilizowany ale zakłócenia były (dopiero jak podłączyłem zasilanie z USB to zadziałało).
    Pozdro
REKLAMA