AVR - stan nieustalony.

Mar 15, 2012 15 Replies

Witajcie.



Mam w Bascomie taką sytuację:



' Port A przyciski Config Porta.0 = Input Prog Alias Pina.0 Set Prog



' Port A leda Config Porta.6 = Output Leda1 Alias Porta.6 Reset Leda1



Do .......



If Prog = 0 Then Reset Leda1 Else Set Leda1 End If



...... Loop



Nie podając 0 na wejscie A.0 leda zapala się jak chce...



Co robię źle?



Pozdrawiam.


[...]

Nie masz podciągnięcia na pinie - albo rezystor, albo musisz wystawić 1 na port.

Dnia Thu, 15 Mar 2012 13:32:54 +0100, Michoo napisał(a):

Podciągam programowo poprzez Set Prog.

Nie znam bascoma, ale jaki to procek? Może akurat ten nie ma pullupa na pinie PA0 (lub ma domyślnie wyłączonego w fusebitach z powodu tego, że jest tam jakaś alternatywna funkcjonalność). A może ten pullup ma za dużą wartość i jakieś zakłócenia włażą na port... Na innym porcie jest to samo?

Czy woltomierz to potwierdza?

mw

Dnia Thu, 15 Mar 2012 12:46:46 +0000 (UTC), Adam Wysocki napisał(a):

formatting link
Nie probowalem na innym porcie.

Dnia Thu, 15 Mar 2012 13:49:30 +0100, mw158979 napisał(a):

Potwierdza. Kupiłem ten zetaw kilka dni temu celem 'powrotu do korzeni';) Wiele lat temu programowałem różne systemy typu PLC oraz dedykowan systemy automatyki. Zachciało mi się pobawic Atmega i na starcie porażka. Oczywiście wynika to z mojej niewiedzy co do tego rozwiązania.

Ale...

' Port A przyciski Config Porta.0 = Input Prog Alias Porta.0 Set Prog

i w petli programu:

If Prog = 0 Then Call Buzzer(4)

gdzie procedura bzyczka:

Sub Buzzer(piki As Byte ) Dim I As Byte For I = 1 To Piki Buz = 1 Waitms 100 Buz = 0 Waitms 100 Next End Sub

Naciskam przycisk Prog, sprawdzam miernikiem i z 1 zmienia się na 0. A bzyczek nie bzyczy, chociaz w programi mam taką częśc, ktora bzyczy:

If T >= Tempwyl And Tempflaga = 0 Then Tempflaga = 1 Set Leda1 Call Buzzer(3 ) Cls Locate 1 , 1 Lcd "Tryb: SPOCZYNEK" Locate 2 , 1 Lcd S ; Chr(0) ; "C " End If

If T <= Tempzal And Tempflaga = 1 Then Tempflaga = 0 Reset Leda1 Call Buzzer(2 ) Cls Locate 1 , 1 Lcd "Tryb: PRACA" Locate 2 , 1 Lcd S ; Chr(0) ; "C " End If

Wiem, że muszę 'spojrzeć inaczej';) Stąd moje pytanie tutaj...

Spróbuj:

  1. Na innym porcie
  2. Podłączyć ręcznie pullupa

Na pewno nie masz włączonego ADC, a bit PUD w SFIOR jest 0?

W dniu 2012-03-15 16:12, Jacek pisze:

Stan wejść czyta się przez PINx. PORTx przechowuje stan wyjść.

Tak na szybko: google zwraca taki tutorial, na stronie 13 jest coś z czytaniem stanu linii.

formatting link

Jeszcze jedna rzecz przyszła mi do głowy. Nie wiem jak to jest w Bascomie, ale czy sprawdzając stan Prog sprawdzasz na pewno bit w rejestrze PINA, a nie PORTA? Podejrzewam że to nie to, bo opisane zachowanie (nieregularne miganie LEDa) wskazuje na brak pullupa, ale warto się upewnić.

U¿ytkownik "Jacek" snipped-for-privacy@ola.pl napisa³ w wiadomo¶ci news:16ynwtmcskwsz.188j2sun79otz$. snipped-for-privacy@40tude.net...

S³ysza³e¶ o problemie drgania styków? S³owo klucz: _debouncing_

PP

Dnia Thu, 15 Mar 2012 17:52:21 +0100, Piotrek_P napisał(a):

Czytałeś, że '>> Nie podając 0 na wejscie A.0 leda zapala się jak chce...'?

U¿ytkownik "Jacek" napisa³ w wiadomo¶ci grup dyskusyjnych:16ynwtmcskwsz.188j2sun79otz$. snipped-for-privacy@40tude.net...

Witajcie.

Mam w Bascomie tak± sytuacjê:

' Port A przyciski Config Porta.0 = Input Prog Alias Pina.0 Set Prog <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< TU MUSI BYÆ Set Porta.0

' Port A leda Config Porta.6 = Output Leda1 Alias Porta.6 Reset Leda1

Do .......

If Prog = 0 Then Reset Leda1 Else Set Leda1 End If

...... Loop

Nie podaj±c 0 na wejscie A.0 leda zapala siê jak chce...

Co robiê ¼le?

Pozdrawiam.

Dnia Thu, 15 Mar 2012 18:33:32 +0100, PC napisał(a):

Dzieki. Ale w takim razie po co są zamienniki (aliasy)?

W dniu 12-03-15 19:38, Jacek pisze:

Przecież Twój alias wskazuje na PINA.0 zamiast na PORTA.0 :)

Aliasem odczytasz fizyczny stan pinu typu input i zmienisz stan pinu output.

PC

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required