Problem z programem w basicu.

To forum jest dla wszystkich pasjonatów mikrokontrolerów AVR Atmela. Wymiana doświadczeń i pomoc dla początkujących w pisaniu programów zarówno w C, Asemblerze jak i BASCOM. Zapraszam znawców tematu, aby pomogli wszystkim początkującym!
Dawid 95
-
Posty: 98
Rejestracja: 03 paź 2010, 14:48
Lokalizacja: Polska

Problem z programem w basicu.

Post autor: Dawid 95 » 07 gru 2010, 8:08

Witam !
Otóż mam pewien problem. Napisałem taki program , a poprzez ten program chcę sprawdzić czy zaświeci mi dioda jeśli podłącze jej PLUS do Pd.3 ,a minus do masy. Ale jednak nie zaświeca się . Może błąd w programie ?

Kod: Zaznacz cały

$regfile = "m8def.dat"
$crystal = 8000000
 Do
 Config Portd.3 = Output
 Portd.3 = 1
 Loop
 End
Ostatnio zmieniony 09 gru 2010, 21:12 przez Dawid 95, łącznie zmieniany 1 raz.

Awatar użytkownika
haterkmp
Użytkownik
Posty: 652
Rejestracja: 08 sie 2008, 11:47
Lokalizacja: Wałbrzych

Post autor: haterkmp » 07 gru 2010, 11:12

wszelkie komendy konfiguracji portów powinieneś umieścić przed pętlą.

Awatar użytkownika
matrix
Użytkownik
Posty: 1796
Rejestracja: 15 mar 2006, 5:21
Lokalizacja: Sochaczew
Kontakt:

Post autor: matrix » 07 gru 2010, 18:33

A gdzie włączenie pullup?

Awatar użytkownika
Pikczu
Użytkownik
Posty: 754
Rejestracja: 18 lip 2005, 18:33
Lokalizacja: Dublin
Kontakt:

Post autor: Pikczu » 07 gru 2010, 21:29

Matrix mylisz pojecia po kiego grzyba mu pull up jak ma port jako Output ?????
Pull up czyli co by dawid wiedział wenętrzny rezytor podciągajacy do plusa zasilania ustwia się tylko dla wejść.

Dawid 95
-
Posty: 98
Rejestracja: 03 paź 2010, 14:48
Lokalizacja: Polska

Post autor: Dawid 95 » 08 gru 2010, 9:01

Okej ... Czyli z tego co ja widze to tylko konfigurację wejść muszę napisać przed pętlą ....

Awatar użytkownika
Pikczu
Użytkownik
Posty: 754
Rejestracja: 18 lip 2005, 18:33
Lokalizacja: Dublin
Kontakt:

Post autor: Pikczu » 08 gru 2010, 18:57

Tak.
Ale musisz dodać coś jeszcze bo wyobraź sobie że masz kartkę z zadaniem do wykonania
i na niej jest napisane włącz światło.
Idziesz włączasz a puźniej poniżej tej instrukcji masz nastepną która mówi czytaj istrukcie do wykonania od nowa.
Co teraz zrobisz instrukcjia mówi masz właczyć światło przecięż juz to zrobiłes wieć ok naciśkasz już wciśnięty przycisk i tak w koło.
twój program własnie tak działa wieć ty tylko zobaczysz że led jest włączony, bo został włączony za pierwszym razem wykonania instrukcji.
dodaj tam poniżej portd.3 a przed Loop.

Kod: Zaznacz cały

waitms 500 
reset portd.3 
waitms 500 


Dawid 95
-
Posty: 98
Rejestracja: 03 paź 2010, 14:48
Lokalizacja: Polska

Post autor: Dawid 95 » 09 gru 2010, 18:33

Tak powinien wyglądac?

Kod: Zaznacz cały

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

 Config Portd.3 = Output
 Portd.3 = 1
  waitms 500
 Reset Portd.3
 Waitms 500  
 Czy tak ? 
$regfile = "m8def.dat"
$crystal = 8000000
 Do
 Config Portd.3 = Output
 Portd.3 = 1
 Loop
  waitms 500
 Reset Portd.3
 Waitms 500
Edit: proszę używać znacznika CODE. Pozdr. RcTomek
Ostatnio zmieniony 09 gru 2010, 21:13 przez Dawid 95, łącznie zmieniany 1 raz.

Awatar użytkownika
Pikczu
Użytkownik
Posty: 754
Rejestracja: 18 lip 2005, 18:33
Lokalizacja: Dublin
Kontakt:

Post autor: Pikczu » 09 gru 2010, 20:47

Dawid 95 pisze:Tak powinien wyglądac?
$regfile = "m8def.dat"
$crystal = 8000000

Config Portd.3 = Output
Portd.3 = 1
waitms 500
Reset Portd.3
Waitms 500
Czy tak ?
$regfile = "m8def.dat"
$crystal = 8000000
Do
Config Portd.3 = Output
Portd.3 = 1
Loop
waitms 500
Reset Portd.3
Waitms 500

Obie wersie zle, Ty nie rozumiesz co kazda z tych lini kodu znaczy

Kod: Zaznacz cały

$regfile = "m8def.dat"' Informacjia dla Bascoma jakiego procka uzyles
$crystal = 8000000' informacja z jak predkoscia jest taktowany procesor
 Do' poczatek petli czyli wszytko co w tej petli bedzie sie wykonywalo do usranej smierci
 Config Portd.3 = Output' to powinno byc przed tym [b]DO[/b] bo to jest informacja jak ustawic zawartosc rejestru DDR jako wejscie czy wyjscie 
 Portd.3 = 1' to jescka ok czyli mowisz mu ustaw noge procka w stan wysoki 5V
 Loop' to jest koniec petli wszytko ponizej nie bedzie wykonane 
  waitms 500 'to sie nei zrobi 
 Reset Portd.3'i to tez sie nie zrobi 
 Waitms 500 ' to tez sie nei wykona 

Nie czytales co jest napisane w postach powyzej jak bys czytal to bys wiedzial
poprawny kod to :

Kod: Zaznacz cały

$regfile = "m8def.dat"
$crystal = 8000000
 Config Portd.3 = Output ' raz na zawsze zapamietaj to jest przed petla do -loop

Do
 Portd.3 = 1 ' ustaw pin w sttan wysoki 
waitms 500 'czekaj 0.5 sekundy 
 Reset Portd.3 'wylacz pin cyli ponizej 2.5v 
 Waitms 500' czekaj 0.5sek
 Loop 'koniec petli czyli teraz program skoczy spowrotem do lini DO i zacznie od nowa 
' opuznienia sa konieczne bo caly ten program wykonuje sie kilka milionow raazy na sekunde wiec nie bedziesz w stanie zauwazyc tych zmian golym okiem

  END

Dawid 95
-
Posty: 98
Rejestracja: 03 paź 2010, 14:48
Lokalizacja: Polska

Post autor: Dawid 95 » 10 gru 2010, 9:04

Dzięki. Na razie coś mi się ta dioda na pinie 5 nie chce się zaświecić... Czy przyczyną tego może być napięcie 4,48v ?? Bo w nocie katalogowej jest napisane ze minimum to 4,5v .

Awatar użytkownika
Pikczu
Użytkownik
Posty: 754
Rejestracja: 18 lip 2005, 18:33
Lokalizacja: Dublin
Kontakt:

Post autor: Pikczu » 10 gru 2010, 18:47

Jakie napięcie gdzie??? czego ? na procku ?? sprawdź miernikiem.
A fusy masz dobrze ??
Akurat jestem w Polsce na urlopie do przyszłego tygodnia nie mam dostępu do warsztatu i do mojego kompa więc nie bardzo mam jak udzielic Ci pomocy.

Alechaw
-
Posty: 13
Rejestracja: 17 lis 2005, 9:10
Lokalizacja: Kraków

Post autor: Alechaw » 12 gru 2010, 12:57

Ale diodę przez rezystor podpiąłeś ??

Dawid 95
-
Posty: 98
Rejestracja: 03 paź 2010, 14:48
Lokalizacja: Polska

Post autor: Dawid 95 » 12 gru 2010, 20:28

Oczywiście , ze tak ...

Alechaw
-
Posty: 13
Rejestracja: 17 lis 2005, 9:10
Lokalizacja: Kraków

Post autor: Alechaw » 12 gru 2010, 22:45

Piszesz, że podpiąłeś anodę diody (PLUS) do portu procesora. Napisz jeszcze jaki rezystor użyłeś. Zazwyczaj podpina się diodę katodą (MINUSEM) do procesora i steruje się logicznym zerem aby prąd płynął do portu procesora.

Dawid 95
-
Posty: 98
Rejestracja: 03 paź 2010, 14:48
Lokalizacja: Polska

Post autor: Dawid 95 » 16 gru 2010, 18:53

Witam !
Dzisiaj doszła do mnie długo oczekiwana płytka ZL2AVR ... Wgrałem ten program ;

Kod: Zaznacz cały

            $regfile = "m8def.dat"
$crystal = 8000000
 Config Portd.3 = Output ' raz na zawsze zapamietaj to jest przed petla do -loop

Do
 Portd.3 = 1             ' ustaw pin w sttan wysoki
Waitms 500               'czekaj 0.5 sekundy
 Reset Portd.3           'wylacz pin cyli ponizej 2.5v
 Waitms 500              ' czekaj 0.5sek
 Loop                    'koniec petli czyli teraz program skoczy spowrotem do lini DO i zacznie od nowa
' opuznienia sa konieczne bo caly ten program wykonuje sie kilka milionow raazy na sekunde wiec nie bedziesz w stanie zauwazyc tych zmian golym okiem

  End
Połączyłem kabelkiem "pręcik " wychodzący od PD.3 z "pręcikiem " diody d1 na płytce ..
Nie działa takim sposobem ... Czy coś źle podłączyłem ?
Ostatnio zmieniony 18 gru 2010, 12:47 przez Dawid 95, łącznie zmieniany 1 raz.

Alechaw
-
Posty: 13
Rejestracja: 17 lis 2005, 9:10
Lokalizacja: Kraków

Post autor: Alechaw » 16 gru 2010, 22:09

Zgodnie ze schematem ideowym zl2arm diody te sterowane są logicznym 0. Wpisz

Kod: Zaznacz cały

Set PORTD.3
zamiast

Kod: Zaznacz cały

 Portd.3=1

ODPOWIEDZ