AVR - stan nieustalony.

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.

Reply to
Jacek
Loading thread data ...

[...]

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

Reply to
Michoo

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

Podciągam programowo poprzez Set Prog.

Reply to
Jacek

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?

Reply to
Adam Wysocki

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

formatting link
Nie probowalem na innym porcie.

Reply to
Jacek

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...

Reply to
Jacek

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?

Reply to
Adam Wysocki

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

Reply to
Zbych

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ć.

Reply to
Adam Wysocki

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...'?

Reply to
Jacek

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

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

Reply to
Jacek

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

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

Reply to
Butek

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

PC

Reply to
PC

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.