egyszerü nyomógomb

Hogyan programozzak AVR chipet? Programozók beállításai...
Bascom nyelvű programok...
Avatar
Thommas
DrótVégénSzéndarab
Hozzászólások: 28
Csatlakozott: 2009. március 21. szombat, 6:00

egyszerü nyomógomb

Hozzászólás Szerző: Thommas »

Sziasztok

Kezdő vagyok, de nagyon :oops:
A könyv mellet egyszerü alapfeladatok segítségével próbálok tanulni, ezért kitaláltam egyik első feladatomnak hogy készül egy nyomógomb :)
Sajnos már itt elakadtam, pedig az MCS fórum alapján próbáltam.
Tudnátok segíteni hogy mi lehet a gond?

Kód: Egész kijelölése

$regfile = "m8def.dat"
$crystal = 8000000

Config Pinb.5 = Output
Config Pind.0 = Input

Portd.0 = 1



Do

 If Portd.0 = 0 Then
   Portb.5 = 1
   Waitms 200

 End If



Loop

End
Avatar
SirLeslie
Pákabűvész
Hozzászólások: 247
Csatlakozott: 2005. április 14. csütörtök, 6:00

Re: egyszerü nyomógomb

Hozzászólás Szerző: SirLeslie »

Kód: Egész kijelölése


 If Pind.0 = 0 Then ' bemenetet pinX-el kell vizsgálni

Avatar
Bence
Tranzisztorgyógyász
Hozzászólások: 166
Csatlakozott: 2007. október 30. kedd, 6:00

Hozzászólás Szerző: Bence »

Hello!

És szerintem:

Kód: Egész kijelölése

Config Pinb.5 = Output 'helyett
Config Portb.5 = Output 'ezt használd
Bence
Avatar
Thommas
DrótVégénSzéndarab
Hozzászólások: 28
Csatlakozott: 2009. március 21. szombat, 6:00

Hozzászólás Szerző: Thommas »

Szia SirLeslie
Ha ez így folytatódik szólithatlak majd MESTERnek :)
Bevált, azóta kis módositásaival összejött a kapcsoló és az időzitett kapcsoló is. Köszönöm.
Hazatértél a nagy útról?
Avatar
Thommas
DrótVégénSzéndarab
Hozzászólások: 28
Csatlakozott: 2009. március 21. szombat, 6:00

Hozzászólás Szerző: Thommas »

A gombból kindulva készült egy kapcsoló progi, viszont sajnos érzékeny a lenyomás idejére. Hogy lehet megoldani hogy egy lenyomásra be, a következőre kikapcsoljon?

Kód: Egész kijelölése

$regfile = "m8def.dat"                                      'proci: AtMega8
$crystal = 8000000                                          'belső órajel

Config Pinb.5 = Output                                      'kimenet: LED
Config Pind.0 = Input                                       'bemenet: Nyomógomb

Portd.0 = 1                                                 'belső felhúzó ellenállás bekapcsol


                                                             'főprogram
Do
                                                             'feltétel
   If Pind.0 = 0 Then

    Portb.5 = 1
    Waitms 500
   End If


   If Pind.0 = 0 Then

    Portb.5 = 0
    Waitms 500
   End If                                                   'feltétel vége


Loop                                                        'főprogram vége

End                                                         'end program
Avatar
SirLeslie
Pákabűvész
Hozzászólások: 247
Csatlakozott: 2005. április 14. csütörtök, 6:00

Hozzászólás Szerző: SirLeslie »

Kód: Egész kijelölése

$regfile = "m8def.dat"                                      'proci: AtMega8
$crystal = 8000000                                          'belső órajel

Config Pinb.5 = Output                                      'kimenet: LED
Config Pind.0 = Input                                       'bemenet: Nyomógomb

Portd.0 = 1                                                 'belső felhúzó ellenállás bekapcsol

dim kapcsoloallapot as bit ' állapotjelző bit használata
                                                             'főprogram
Do
                                                             'feltétel
   If Pind.0 = 0 and kapcsoloallapot=0 Then

    Portb.5 = 1
    set kapcsoloallapot ' állapotjelzés átváltása
    Waitms 500
    bitwait pind.0, set ' vár gombelengedésig - opcionálisan használható
   End If


   If Pind.0 = 0 and kapcsoloallapot=1 Then

    Portb.5 = 0
    reset kapcsoloallapot ' állapotjelzés átváltása
    Waitms 500
    bitwait pind.0, set ' vár gombelengedésig - opcionálisan használható
   End If                                                   'feltétel vége


Loop                                                        'főprogram vége

End                                                         'end program
...avagy lehetne a kimeneti lábat is figyelni a feltételhez.
Avatar
Thommas
DrótVégénSzéndarab
Hozzászólások: 28
Csatlakozott: 2009. március 21. szombat, 6:00

Hozzászólás Szerző: Thommas »

Köszi, tökéletes.
Avatar
szovhoz
Bitfaragó
Hozzászólások: 608
Csatlakozott: 2007. április 7. szombat, 6:00

Hozzászólás Szerző: szovhoz »

egy egyszerűnek tűnő problémával küzdök de annál bosszantóbbal.

Nem ma kezdtem már több hasonlót csináltam de ez most kifogott rajtam.

Adott egy mega88 processzor TQFP32 tokozással.

Egyszerű kis szoftot írok bele ami kész is, de a nyomógomb vezérlés az egész processzort meg bolondítja. Már nem tudom mit tegyek.

Szóval a szoftvert szétszedtem, csak a nyomógomb vezérlés maradt meg egy led.

Mielőtt bárki a panelra gyanakodva minden meg van ami kellhet ne hogy ilyen és ehhez hasonló bekövetkezhessen.

A proci alatt ki van testelve ahogyan a gyári adatlap mutatja, az ellenállások kondik mindenütt ott vannak még a gombon is egy prellé mentesítő. De a gomb az egyik legjobb minőségű.

Még is anomália jelentkezik.

Ha nyomogatom a gombot egyszerűen néha a többi led is be be villan vagy égve marad pedig csak definiálom őket kimenetnek és adok nekik egy fix értéket mást nem csinálok vele.

Sőt amit vezérlek gombbal ledet az van hogy nyomásra elalszik ahogy kel de ha fel engedem a gombot akkor is úgy marad nem gyullad ki újra.

it ez a kis egyszerű nyomógombos led vezérlés.

ötlet?

Kód: Egész kijelölése

$regfile = "m88def.dat"

' input ------------------------------------------------------------------------

Config Pinb.0 = Input                                       'L1-L2 IN
Config Pinb.1 = Input                                       'L1-L3 IN

Config Pinc.0 = Input                                       'ADC SZIRÉNA FIGYELŐ  CHANNEL 0
Config Pinc.1 = Input                                       'ADC AKKU CHANNEL 1

Config Pind.5 = Input                                       'INT Reset gomb
Config Pind.7 = Input                                       'L2-L3 IN

'OUTPUT ------------------------------------------------------------------------

Config Portb.2 = Output                                     'RIASZT RELÉ

Config Portc.2 = Output                                     'KIKAPCSOLÁS FET
Config Portc.3 = Output                                     'FÁZIS OK LED
Config Portc.4 = Output                                     'L2-L3 LED
Config Portc.5 = Output                                     'L1-L2 LED

Config Portd.0 = Output                                     'L1-L3 LED
Config Portd.1 = Output                                     'BUZZER

Config Portd.6 = Output                                     'VEZÉRLŐ HIBA LED



'INPUT ALIAS -------------------------------------------------------------------

Resetgomb Alias Pind.5
L2l3in Alias Pind.7
L1l2in Alias Pinb.0
L1l3in Alias Pinb.1


' OUTPUT ALIAS -----------------------------------------------------------------

Vezerlohibaled Alias Portd.6
Riasztrele Alias Portb.2
Poweroff Alias Portc.2
Fazisokled Alias Portc.3
L2l3led Alias Portc.4
L1l2led Alias Portc.5
L1l3led Alias Portd.0
Buzzer Alias Portd.1

' ÉRTÉKADÁS --------------------------------------------------------------------

Riasztrele = 1
Poweroff = 1
Vezerlohibaled = 1
L2l3led = 0
L1l2led = 0
L1l3led = 0


' START MAIN PROGRAM -----------------------------------------------------------
Do

If Resetgomb = 0 Then
Waitms 75
If Resetgomb = 0 Then
Fazisokled = 1
Else
Fazisokled = 0
End If
End If

Loop
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Hozzászólás Szerző: kapu48 »

Mivel még Kristály frekvenciát sem definiáltál csak a jóisten tudja, miből számolja a BASCOM a „Waitms 75” értékét? Ezért ez bármi lehet?
Nálam a gombok felengedéskor általában többet preleznek mint megnyomáskor!

Bemenetekre sehol nem kapcsoltál felhúzó ellenállást, kívül vannak rajtúk?
Tápstabilizáló nem gerjed?
Rossz a program is!

Dim Fazisokled_t As Bit ’Led állapotjelző

If Resetgomb = 0 Then
Waitms 75
If Resetgomb = 0 and Fazisokled_t = 1 Then
Fazisokled = 1
Fazisokled_t = 0
Else
Fazisokled = 0
Fazisokled_t = 1
End If
End If

Loop
8)
Avatar
szovhoz
Bitfaragó
Hozzászólások: 608
Csatlakozott: 2007. április 7. szombat, 6:00

Hozzászólás Szerző: szovhoz »

a szoftot ideiglenesen írtam be nem rossz az ha nem írok a prociba programot csak a gombot magában nyomkodom akkor is ezt csinálja!!!!

van külső ellenállás!

Milyen paranccsal aktiválod a belsőt?

Előtte utánna kondizva 7805.

belső 8mhz-es kvarcról jár nem kell nekem hogy kristálypontos legyen.

De ha belsőről jár azt nem kell a szoftba írni elegendő az avr studioban beállítani!

Ez csak próba program.
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Hozzászólás Szerző: kapu48 »

OK! Te tudod!
Avatar
szovhoz
Bitfaragó
Hozzászólások: 608
Csatlakozott: 2007. április 7. szombat, 6:00

Hozzászólás Szerző: szovhoz »

be tettem a teh programod is!

Be írtam a crystalt is de akkor sem jó így villog a led meg végleg kikapcsol.

szóval a bemenettel még mindíg baj van!
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Hozzászólás Szerző: kapu48 »

Nyákon alámarás, hajszálrepedés?
Rossz fórasztás? Ha TQFP a tok nem lóg valamelyik láb?
Elkötés biztosan nincsen? Lehet Hibás kondi, ellenállás is!
Avatar
szovhoz
Bitfaragó
Hozzászólások: 608
Csatlakozott: 2007. április 7. szombat, 6:00

Hozzászólás Szerző: szovhoz »

próbára kapott egy új procit minyá kiderül mit csinál vele.
Avatar
szovhoz
Bitfaragó
Hozzászólások: 608
Csatlakozott: 2007. április 7. szombat, 6:00

Hozzászólás Szerző: szovhoz »

csere megtörtént és ugyan azt csinálja a teh szoftod van benne!

a prelle ennyire meg tudja hülyíteni a szoftot vagy a procit amikor nincs benne semmi más?

hogyan kapcsolom be a belső felhúzó ellenálást hátha segít rajta?
Válasz küldése