Cały program działa, obsługuje lcd mierzy przez adc i reaguje na zmiany napięcia na wejściu i tylko ta obsługa wyjścia nie działa bo jedno wejście działa. Podmienię na inną i zobaczę co dalej. Dodano po 1 Problem rozwiązał się po zmianie uC na inny prawdopodobnie uszkodzony procesor. Zamykam
Zamiast "Toggle Pind.7 " ma być: "Toggle Portd.7 ".
A kto ustawi PORTD.1 jako wyjście?
Podciągnij wejście do plusa wewnętrznym rezystorem. Wejście T1 to PD5. [syntax=basic4gl]PORTD.5 = 1[/syntax]
Co mam poustawiać aby piny z tematu można było używać jako zwykłe wyjścia. Napisałem w bascomie taki prosty programik: Config Portd = Output Set Portd.3 Set Portd.4 Set Portd.5 Set Portd.6 Do loop I po włączeniu układu na pinach PD.1 (TxD) i PD.2 (INT0) mam cały czas 0 a na PD.3 i PD.4 mam 5 V. Jeśli natomiast usune linijki Set Portd.3 Set Portd.4 to...
jeśli dobrze pamiętam to R/W powinno być do masy ( Portd.1 )
mam pytanko czemu jeżeli pisze tak jak kolega tłumaczy portd.0 = portd.0 * 2 to kompilator w tym widzi błąd? chyba że to źle interpretuje Bo musisz mnożyć zawartość całego portu. Jednego bitu nie możesz pomnożyć przez 2. Poprawne więc będzie portd=portd*2 A i jeszcze na początku wpisz do portd wartość 1 :P
zmien konfiguracje portu 'Konfiguracja portów Config Portd.4 = Output 'Aliasy Enter Alias Pind.4 i powinno dzialac
musi być drugi wait po zmianie bitu [syntax=basic4gl]Do Portd.0 = 1 'zapal diode Waitms 200 Portd.0 = 0 'zapal diode Waitms 200 Loop [/syntax]
W Twoim programie masz: ...E = Portd. 5... Pomiędzy Portd. a 5 masz spację. To samo: Portd. 4- też spacja. Program się kompiluje- a bzdury wyświetla. Sprawdziłem właśnie. Czy to pomoże na kontrast- nie wiem. Sprawdź.
A gdzie masz polecenie Start Timer0?
Wpisz do $crystal taka wartosc jaka masz. Jezeli masz fusy na wew generator to wpisz 1MHz. Set Pind.1 Set Pinc.1 Set Pinb.5 BZDURA! Ile można powtarzać? Rejestr PORTX służy do wystawiania 1 lub 0 na port. Rejestr PINX służy do sprawdzania stanu danej końcówki portu. Rejestr DDRX służy do ustalenia czy port ma być wyjściem czy wejściem. Czyli zamiast...
Witam. Tak, masz racje powinno być tak jak opisałeś "config portd.0=output ' pin sterujący diodą LED'' Tak samo jak zapis warunków o których piszesz i jest prawidłowy. Przetestuj te zmiany i zobaczymy.
Zastanów się dlaczego ten kod nie działa tak jak byś tego chciał . Zawsze stosuj taką konfigurację portów (tzn. taki typ zapisywania) Widzisz dokładnie jak masz ustawione poszczególne końcówki portów Config Portb = &B11111111 'jako wyjścia Portb = &B00000000 'stan początkowy niski Config Portc = &B00111000 'jako wyjścia i wejścia Portc = &B00000000...
Na szybko napisany kod $regfile = "m8def.dat" $crystal = 1000000 Config Portb = &B11111111 Portb = &B11111111 Config Portc = &B00111000 Portc = &B00000000 Config Portd = &B11111111 Portd = &B11111111 Do 'pętla nieskończona Portd.0 = 1 'zaświeć lampkę Wait 1 'czekaj 1 sekundę Portd.0 = 0 'zgaś lampkę Wait 1 'czekaj 1 sekundę Loop End 'koniec...
Spróbuj tak: $regfile = "m8def.dat" $crystal = 8000000 Config Portd.7 = Output Portd.7 = 0 Config Clock = Soft Time$ = "12:40:00" Enable Interrupts Do If _min = 41 Then '60s później włącza przekaźnik Portd.7 = 1 End If Loop End
hmm :>
Set Portd.5 - będzie stan wysoki albo: Pind.5= 1 Toggle zmienia stan Pinu, u ciebie nie był ustawiony żaden stan.
Witam. Mam problem, Napisałem program ale nie działa tak jakbym tego oczekiwał. :cry: Config Portd.1 = Output , .... ........ Config Portd.1 = 0 , ..... Zauważ że cytowana wyżej linia druga zmienia wcześniejszą konfigurację portu z OUTPUT na INPUT. e marcus
Widzę że muszę trochę sprostować. 1. Nawet kosmicznie często wywoływane przerwanie zdąży się wykonać choć by nie wiem jak długo ono trwało, bo przerwania po wejściu w obsługę jakiegoś przerwania są blokowane i odblokowywane są dopiero po zakończeniu się obsługi tego przerwania. Więc twierdzenie że przerwanie nie zdąży się wykonać w ciągu 128us bo samo...
Użyj Timer'a 2 i wszystko będzie cacy. Pzdr. A piny to się konfiguruje tak: Config Pinb.1 = 1 a nie Portb.1. Przydaje się też wrzucenie linijki z def'em procka: $regfile = "M8DEF.dat", zresztą: $crystal = 8000000 $regfile = "M8DEF.dat" Config Timer2 = Timer , Prescale = 256 On Timer2 Przerwanie Dim A As Byte , B As Byte Config Lcd = 16 * 2 Cursor Off...
kurcze mi nie wychodzi :| timer chodzi co 1s ale reszta do kitu Dodano po 25 program chodzi :) oczywiscie musisz go przerobic na wlasne potrzeby dodac tyle ile chcesz przekaznikow i zmienic czasy w programie bo tam jest 10s i 40s ten program jest przygotowany pod ATmega8 i kwarc 8MHz $regfile = "m8def.dat" $crystal = 8000000 Config Pind.0...
Na początek przetestuj samo wyświetlanie podstawiając pod H i M odpowiednie wartości, a jeśli to nie pomoże to nawet pod A, B itd. Możesz pójść jeszcze dalej i zamiast Call Pobor_znaku umieścić Portd = &B...
Z portu PIN sie tylko czyta a nie zapisuje . Zamień PINd.0=1 itp na Portd.0=1
Sprawdz kod czy nie masz glupiego buga. 1 w rejestrze wyjsciowym [portd.7=1] to tyko rezystor podciagajacy, musisz recznie w drugim rejestrze ustawic koncowke w tryb wejscia [config portd.7]
Z całym szacunkiem to jest to po prostu wioska. Nie zadałeś sobie trudu sprawdzenie biblioteki o której pisałem. Powinienem to tak zostawić , ale nie mogę na to patrzeć. Nie dość, że nie możesz używać standardowych instrukcji Bascom takich jak Lcddat, Showpic itd to jeszcze potrzebujesz 512 Bajtów na bufor.. Dyskwalifikuje to ten kod dla mniejszych...
Nie rozumiem po co dioda LED ukazująca stan nawiewu jest podłączona do osobnego pinu. Nie ma takiej potrzeby, a nawet jest to nie wskazane. Stan wejściowy pinu portu D, nawet kiedy w DDRD jest on ustawiony jako wyjście, można odczytać z rejestru PIND, natomiast wyjściowy z PORTD - tak, ten rejestr można również odczytywać. Nie programuję w Bascom, ale...
Korzystaj z symulacji krokowej. Ostatecznie nie dawaj $sim w programie natomiast waitms zmień na mniejsze (symulacja jest ok 100x wolniejsza od procka, więc zamiast waitms 200 daj 2) Sprawdzonego programu do zapalania diod na kolejnych portach nie ma. Np. możesz użyć jednej zmiennej WORD i rozbić ją potem na dwa proty. Zaletą jest to że operujesz na...
$regfile = "m8def.dat" $crystal = 8000000 Config Portd = Output Config Adc = Single , Prescaler = Auto , Reference = Avcc Dim Przet As Word Dim Dziesiatki As Integer Start Adc Do Przet = Getadc(0) Dziesiatki = Przet / 127 If Dziesiatki = 0 Then Portd.0 = 1 Portd.1 = 1 Portd.2 = 1 Portd.3 = 1 Portd.4 = 1 Portd.5 = 1 Portd.6 = 1 Portd.7 = 1 Elseif Dziesiatki...
Ściągnij sobie z tej strony program kalkulator avr http://www.elportal.pl/index.php?module=... [syntax=basic4gl] $crystal = 1000000 $hwstack = 80 Config Timer1 = Timer , Prescale = 64 Dim Sek As Byte 's Enable Timer1 Enable Ovf1 On Ovf1 Czas Stop Timer1 Enable Interrupts Sek = 0 Do If pinc.0 = 0 then Load Timer1 , 49911...
Proponuję przy aliasach przycisków wpisać nie port a pin, bo to są wejścia. No i faktycznie aby stany na wejściach nie szalały podciągnąć wejścia do plusa. Moze być np. tak: regfile = "m8def.dat" $crystal = 1000000 Config Portd = Output Portd = &B00000000 Config Pinb.0 = Input Config Pinb.1 = Input Led1 Alias Portd.1 Led2 Alias Portd.2 S1...
PORTD =(PORTD & 0x08) ; Lepiej by było: PORTD&=~(1<<7);
Sorry, wkradł się błąd. oczywiście chodziło mi o portd.1 Co jeszcze mże być nie tak?
Po co ustawiasz portd.4 na wejscie Hi-Z? Ustaw tak: PORTD = PORTD or &h10 Wtedy podsiągasz ten pin do plusa i nie musisz ustawiać tam jedynki w podprogramach. Przerób A na BIT, po czym Program: Portc.4 = 0 'jedna dioda zapalona Portc.5 = 1 'druga dioda zgaszona toggle a Return Program2: Portc.4 = 1 ' dioda zgaszona Portc.5 = 0 ' dioda zapalona...
Miałem kiedyś jakąś potrzebę na taki 8-o przyciskowy program dla attiny2313. Zamieszczam go w całości z komentarzami, może Ci się przyda: [syntax=basic4gl]$regfile "attiny2313.dat" $crystal = 1000000 '-- Config Portb = Input Portb = &B11111111 Config Portd = Output Portd = &B00000000 Config Porta.0 = Output Porta.0 = 0 Dim Nr As Byte 'licznik...
Witam. A może tak prościej? 'Odbieranie kodu RC5 $regfile = "m8def.dat" $crystal = 8000000 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portd.0 , E = Portc.4 , Rs = Portc.5 Config Rc5 = portd.2 Dim Address As Byte , Command As Byte Enable Interrupts Do Getrc5(Address , Command) Command...
No i problem wygląda na rozwiazany, to co powodowało niedziałanie ww układu to fakt, ze w przerwaniu od UART nie pobierałem znaku z buforu, przez co flaga nie zostawała wyzerowana i kolejne znaki nie były odbierane... Innymi słowy powinno być tak: Port: A=InKey() Toggle portd.6 Return
Tak na szybko: Nie: If Portd.2 = 0 Then Liczba = Liczba + 1 Tylko: If Pind.2 = 0 Then Liczba = Liczba + 1 Zamiast tej plątaniny: If Liczba = 0 Then Reset Portb.0 Set Portb.1 Reset Portb.2 Reset Portb.3 Reset Portb.4 Reset Portb.5 Reset Portd.0 Elseif Liczba = 1 Then Reset Portb.0 Set Portb.1 Reset Portb.2 Set Portb.3 Reset Portb.4 Reset Portb.5 Reset...
Witam. Proponuje zacząć projekt od zapoznania się z Timerami i z przerwaniami od nich. Następny krok to wyświetlacze LED sterowane multipleksowo. [url=http://diycenter.acid19.linuxpl.com... szczypta teorii na temat wyświetlaczy. Potem proponuję uruchomić wyświetlacze i wyświetlić na nich jakiekolwiek cyfry. Poniżej (tak...
Po małych zmianach działam na czymś takim. Pomimo taktowania z wewnętrznego kwarcu nie widać efektu. Jakiegokolwiek. [syntax=c]/* * RealTimeClock.c * * Created: 2013-11-17 01:46:48 * Author: Piotr Pabian */ #include <avr/io.h> #include <avr/interrupt.h> void init_RTC(void) { //ASSR = 1<<AS2; //Enable asynchronous mode TCCR2 = (1<<CS22)|(1<<CS21)|(1<&l...
daj częstotliwość na 8000000. Gdzie podłączasz diodę? btw Config Portb = Output Config Portc = Output Config Portd = Output to jest nie potrzebne
set pind.3 set portd.3
Powinno działać tak jak chcesz: Est Alias Pind.4 Dim Zmienna As Byte , Licznik As Byte Cursor Off Config Portd.5 = Input Config Portd.6 = Input Config Portd.7 = Input Config Portb.0 = Input Config Portd.4 = Input Portd.5 = 1 Portd.6 = 1 Portd.7 = 1 Portb.0 = 1 Portd.4 = 1 Cls Do Bitwait Est , Set Zmienna.0 = Pinb.0 Zmienna.1 = Pind.7 Zmienna.2 = Pind.6...
Witam Wkleję Ci przykładowy kod, reszta należy do Ciebie. $crystal = 4000000 $regfile = "m8def.dat" ' np. ATMEGA8 :) Config Lcd = 16 * 2 ' definiuje jaki wyświetlacz ma być podlączony Config Lcdpin = Pin , Db4 = Portd.5 , Db5 = Portd.4 , Db6 = Portd.3 , Db7 = Portd.2 , E = Portd.6 , Rs = Portd.7 ' podlączenie wyświetlacza do kontrolera...
Witam! Ja zwykle robię od razu tak: [syntax=basic4gl]Config portd = &b00001111 Portd = &b11110000[/syntax] W ten sposób łączę konfig i ustawienie pullup . W języku BASIC nie zaleca się oddzielania instrukcji dwukropkiem, zamiast: [syntax=basic4gl]If Pg = 0 Then Kier = 0 : Gosub Ruch_key End If[/syntax] Lepiej zapisać tak: [syntax=basic4gl]If Pg = 0...
marslod z tymi LCD DM157 niema problemu w inicjalizacji BASCOM, mam kilka i tych 3 x 24 i 1 x 24 i wszystkie działają. Daj na początek coś takiego i będzie inicjalizował poprawnie... Waitms 300 Config Lcd = 20 * 2 Waitms 800 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portd.3 , .... Tym 16*2 nie musisz się przejmować, BASCOM prawidłowo adresuje...
If Pind chyba powinieneś wpisać po kropce konkretną nóżkę np. If Pind.1 . Jeżeli chodzi o cały port to piszesz PORTD <>
to zatrzymanie timera przed załadowaniem wartości jakby pomogło (przynajmniej nie zachowuje się dziwnie) teraz miga w równych odstępach ... Home Lcd "P=" ; P ; "us" Lowerline Lcd "I=" ; I ; "us " ; Licznik If Licznik = P Then Portd.2 = 0 End If If Licznik >= C Then Portd.2 = 1 Licznik = 0 End If ... Dobra odczepiam się od portów :) I już mówię dlaczego...
Kod jest już poprawiony. Ten działa w 100% Na pewno nie będzie działał brak zakończenia dwóch warunków w pętli Do -Loop oraz coś bardzo ciekawego : [syntax=basic4gl]Config Rc5 = Pind.2 If Command = 16 Then Portd.2 = 1 [/syntax] Najpierw deklarujesz jako RC5 a potem zmieniasz na nim stan ? . Coś mi się wydaje że za bardzo nie wiesz jak się do tego zabrać...
Zmieniłem program na ATmega8 ( bo ATmega16 nie posiadam ) [syntax=basic4gl] '$regfile = "m16def.dat" $regfile = "m8def.DAT" $crystal = 8000000 Config Pind.7 = Input Config Pinc.0 = Output Set Portc.0 Set Portd.7 Do If Pind.7 = 0 Then Portc.0 = 0 Else Portc.0 = 1 End If Loop End [/syntax] wgrałem, program działa dobrze. Bascom DEMO 2.0.7.1
Ja pierniczę. A ustawiłeś typ procesora? Ustaw na ATTiny2313 albo ustaw ATMega8 i pozamieniaj wszystkie PortA na PortD na przykład. PS. Fotografia ślubna? Rispekt ;p
Człowieku napisz: Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portd.1 , Rs = Portd.0
Pisząc "podpiąłem programowo rezystor pull-up" miałem na myśli np. kod w BASCOMie - Set PORTD.0
Dondu Właśnie do Ciebie pisałem. Jestem nowy w bascom , może ty wiesz jak to powiedzieć prockowi ?
Czy jest możliwy błąd podłączenia? Tutaj oczywiście zmieniłem na PB.1 Tak, wszystko jest możliwe... Spróbuj ten code: [syntax=basic4gl] 'DS18B20 - ROM reading test from single sensor DS18B20 $regfile = "m8adef.dat" $crystal = 4000000 $hwstack = 80 $swstack = 80 $framesize = 40 Config 1wire = Portb.1 'Config 1wire = Portd.5 Dim N As Byte Dim Dsid1(8)...
[syntax=bascom] Waitms 500 Portb = &B00010010 Portc = &B00001000 Portd = &B00001000 Waitms 150 Portb = &B00000100 Portc = &B00000001 Portd = &B00010001 Waitms 150 Portb = &B00001000 Portc = &B00000100 Portd = &B00100010 Waitms 150 Portb = &B00010010 Portc = &B00001000 Portd = &B00001000[/syntax] Zmienione, nadal to samo.
Pisząc ten program posiłkowałem się książką "BASCOM AVR" i fragment: Osobiście nie rozumiem procedury: Sub Wart_temp(temp As Byte) Temp = Temp And &B00001111 Portd = Portd And &B11110000 Portd = Portd Or Temp End Sub
'///////////////////////////////////////... '// Police Alarm With ATmega8 (Use 4%) // '// Compiler: Bascom 1.11.9.0 // '// Programmer: Behnam zakizadeh // '// Web: www.avr64.com // '// Email: Behnamzaki(at)hotmail.com // '///////////////////////////////////////...
Tak. Może być i w wysokim poziomie, ale takie będzie o wiele szybsze a w dodatku zajmie mniej miejsca a nie chciałem Ci zajmować swoimi poprawkami całego FLASHa w procku. In R16, Wyswietlacz1 '<-- R16 = PortD andi R16, &B00001111 '<-- R16 = R16 And &B00001111 Lds R17, {Wyswietlacz1_2} '<-- R17 = Wyswietlacz1_2 !or R16, R17...
Ja używam takiego kodu - odbiornika. Config LCD dostosuj do swoich potrzeb. Działa na każdym pilocie RC5. Instrukcję Lowerline wyrzuć. [syntax=basic4gl] 'Atmega8 Wyświetlanie z pamięcią i napisem Odczyt RC-5 $regfile = "m8def.dat" $crystal = 8000000 Dim Adress As Byte , Command As Byte , Togglebit As Bit Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4...
Sprawdź jaki procesor masz ustawiony w opcjach bascoma... pewnie jakiś attiny2313 i bascom kompiluje program pod ten właśnie procesor. I spróbuj zaprogramować tym: $regfile = "m8def.dat" Config Portd = Output Config Portb = Output Do Toggle Portb Toggle Portd Waitms 200 Loop : End
zacznijmy od tego, ze kod umieszczamy w klamrach Dodano po 10 to jest kod na jedna sekunde $regfile = "m8def.dat" $crystal = 8000000 Config Pind.7 = Output Portd.7 = 0 Przekaznik Alias Portd.7 Config Timer1 = Timer , Prescale = 256 On Timer1 Sekunda Enable Interrupts Enable Timer1 Load Timer1 = 31250 Do Loop End Sekunda: Load Timer1 =...
Napisane na szybko nie sprawdzałem ale chyba powinno działać. [syntax=basic4gl] $regfile = "m8def.DAT" 'deklaracja procesora, w tym wypadku Atmega8 $crystal = 1000000 'deklaracja cześtotlwiości pracy (wew oscylator 1MHz w zupełności wystarcza) '*************************************WA... 'Pamiętać o podłączeniu...
#include<avr/io.h> //sam typ procesora wybiera się w opcjach #include "lcd.h" //tu są przypisane wyprowadzenia do lcd i prototypy funkcji do obsługi lcd #ifndef F_CPU #define F_CPU 8000000UL //to w sumie nie potrzebne bo wybiera się w oppcjach #endif char B1[21] = "Bascom";//w C dodatkowo 1 bajt na koniec łańcuch znaków...
Tak więc w pisaniu programów jestem początkujący... nie stosowałem multipleksowania bo jeszcze nie umiem. Wzory animacji są pisane w taki sposób, że każdemu pinx każe coś robić w danym czasie, np PortD = &B00000000 czekaj Xs itd.
Ja się tam na BASCOMie nie znam, ale ten program to wyglada mi na generator liczb pseudolosowych ;) Weź się skup i zastanów co chcesz uzyskać. Kompletnie nie rozumiem, co Ty robisz z tym T. Co to ma reprezentować? Podpowiem, że jeżeli chcesz wyświetlić liczbę X z zakresu 0..99 na swoim wyświetlaczu, to byłoby to chyba coś takiego (zakładając, że wyświetlacz...
seja4321 Napisałem kilka linii kodu ,jest to jedno z możliwych rozwiązań twojego problemu z przyciskiem . program przetestowałem. Moja rada to testuj program na kilku kilkunastu sekundach. powodzenia. Dodano po 46 Nie rozumiem dlaczego seja4321 został skarcony przez LordBlick, przecież pisze w dziale początkujący? Co do kodu, to jest dziwny, Piszesz...
proszę $regfile = "m8def.dat" $crystal = 8000000 Config Portd = Output Config Pinb.0 = Input Portd = &B00000000 Set Portb.0 Do If Pinb.0 = 0 Then Portd.0 = 1 Wait 30 Portd.0 = 0 End If Loop End
Zasymulowałem Twoje środowisko i wprowadziłem kilka poprawek. Działa zgodnie z założeniami. Debouncingu nie dodawałem, choć przydałby się. [syntax=vbnet]$regfile = "m8def.dat" $crystal = 1000000 Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portb.2 , Rs = Portb.1 Config Lcd = 20 * 4 Cls Cursor Off noblink...
witam! Pisze do was ponieważ potrzebuję pomocy. ................. W bascomie napisałem tak: If pind.4 = 0 Then Set Pind.0 End If i tu pojawia sie problem .............. Nie wiem co i gdzie podłączasz, lecz: Set Pind.0 Wszystkie bity rejestru PIND.(x) są "Read Only" a zatem nie mogą byc zmieniane z poziomu programu. Mogą byc manipulowane zewnętrznymi...
Spróbuj coś takiego ORG 0 LD R16,$FC OUT PORTD,R16 OUT DDRD,R16 LOOP: JBI PIND,0 JR WL JNBI PIND,1 JR LOOP SBI PORTD,2 JR LOOP WL : CBI PORTD,2 JR LOOP
Witam. Zdefiniuj sobie na początku programu tablicę[9] wpisz dane z data i np gdy masz wyświetlić na danej pozycji liczbę 3 to piszesz portd=tablica[3]. [syntax=basic4gl] for n=0 to 9 read tablica[n] next Wyswietl: Portb=128 Portd=tablica[L[1]] Portb=2 Portd=tablica[L[2]] Portb=1 Portd=tablica[L[3]] Portb=4 Portd=tablica[L[4]] return [/syntax]
Witam zaczynam programować i mam problem.Potrzebuje zaprogramować atmege8. Założenia po załączeniu przycisku ma dać stan niski i po jakimś czasie ma ponownie dać stan wysoki 2 razy. $regfile = "m8def.dat" $crystal = 8000000 Config Portd = Output Config Pinb.0 = Input Przycisk Alias Pinb.0 Do Portd = &B11111111 Przycisk = 0 Waitms 30 Portd = &B00000000...
Wstaw sobie o tak o: [syntax=basic4gl] Config Portb.0 = Output ' ustawienie portu sterującego przekaźnikiem przez tranzystor Config Portd.7 = Output ' ustawienie portu sygnalizacji zbyt wysokiej temeratury Config Portd.6 = Output Przekaznik Alias Portb.0 Buzzer Alias Portd.7 Led_pompa_stop Alias Portd.6 Reset Przekaznik Reset Buzzer Reset Led_pompa_stop...
Tych znaków jest trochę więc proponuję bufor wejściowy. Wyświetlacz przyjąłem 16*2: $crystal = 4000000 $baud =4800 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.4 , Db6 = Portc.5 , Db7 = Portc.6 , E = Portc.2 , Rs = Portd.6 Config Serialin = Buffered , Size = 32 Dim Znak As Byte Dim I As Byte Cls Enable Interrupts I = 1 Do Do...
W przerwaniu $regfile = "m8def.dat" $crystal = 1000000 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portd.6 , Db5 = Portd.5 , Db6 = Portb.7 , Db7 = Portb.6 , E = Portd.7 , Rs = Portb.0 Cursor Off Config Int0 = Low Level Config Rc5 = Pind.2 On Int0 Pobr_rc5 Dim Address As Byte Dim Address1 As Byte Dim Command As Byte Dim Command1 As Byte...
Nostradamus na razie mam programator walnięty ale chciałem to na symulatorze odpalić i niestety nic... no chyba ze coś robie nie tak z tymi impulsami... możesz to sprawdzić u siebie może ja coś źle robie ? daje na symulatorze "sim timers" potem, portd.4 150 pulse i nic :(
PIND.7 mam podłączony do 5V Rozumiem, że przez rezystor 10k. Generalnie to podciąganie fizyczne możesz wywalić, komenda SET PORTD.7 podłącza rezystorek wewnątrz procka do VCC. Sprawdź bez rezystora.
Propozycja zmian $regfile = "m8def.dat" 'program jest pisany na procesor atmega8 $crystal = 8000000 'procesor będzie pracował z kwarcem bądź na wewnętrznym oscylatorze 8Mhz '---------------------------------------... Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portc.5 , Db5 = Portc. 4 , Db6 = Portc.3 ,...
Witam mam identyczny problem z moim ATmega8, mam płytkę testową ZL2AVR + programator ZL2PRG. Wgrywanie i odczytywanie programów działa bez problemu na ustawionym kwarcu zewn. czy na oscylatorze wewn. Ale wykonać jakiegokolwiek polecenia z programu nie chce (milczy) na żadnym zaprogramowanym wyjściu nie zmienia się stan, wszystko jak przy pustej pamięci....
Pokaż schemat z płytką pcb , może doprowadzenia działają jak anteny. Powinieneś zmienić sposób zapisywania konfiguracji portów , jest bardziej czytelny na pierwszy rzut oka (analizator cyfrowy w oczach) [syntax=basic4gl]Config Portb = &B11111111 ' jako wyjścia Portb = &B00000000 'ustawione niskie poziomy Config Portc = &B11111111 Portc = &B00000000...
Zamiast [syntax=basic4gl] If PORTD.0 = 1 Then Start TIMER0 End If[/syntax] Spróbuj [syntax=basic4gl] If PORTD.0 = 1 Then TCCR0B=&B00000101 End If[/syntax] Może to da efekt?
Udało się rozwiązać problem :) Zrobiłem to tak: [syntax=basic4gl]If Autoret > 0 Then Ust = 1 Decr Autoret If Autoret = 0 Then Gosub Zapis End If Else Ust = 0 End If[/syntax] [syntax=basic4gl]Zapis: Disable Interrupts Writeeeprom Tu , 35 Portd = &B11111111 Waitms 200 Enable Interrupts Return[/syntax]
Zmienilem, ale to nic nie dało. Nadal DP świeci po włączeniu zasilania. Zauważyłem tylko jedną ciekawą rzecz, a mianowicie gdy najpierw skonfiguruje się portd, a potem portb to układ działa tak jak powinien.
No dobra przed usunięciem widziałem założenia : Atmega8 a piny wszystko jedno gdzie. $crystal = 1000000 $regfile = "m8def.dat" config pind.1 = output ' tu pin diody config pind.0 = input ' tu pin mikroswitcha (klikacza) set portd.0 do if pind.0 = 0 then waitms 25 if pind.0 = 0 then set portd.1 wait 2 reset portd.1 powerdown end if...
Witam. U mnie ten program pracuje na wewnętrznym oscylatorze 1MHz. Sprawdź czy masz dobrze podłączony DS do pinu zadeklarowanym w programie. Config 1Wire = Portd.5 i tu ma być podłączony DS.
Jeżeli przycisk miałby podciąganie to zawsze byłby w trybie gaszenia a po wciśnięciu i zwarciu do masy 0 czyli tryb rozjaśniania tu mi już coś nie pasuje! Dodano po 20 [syntax=basic4gl]$regfile = "m8def.dat" $crystal = 16000000 Config Pinb.1 = Output Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Disconnect , Prescale =...
Prubuje napisać program do obsługi migomatu na atmega8 w BASCOMIE. Mam takie cos: $regfile = "m8def.dat" $crystal = 1000000 Config Portd = &B11111101 Portd = &B00000000 Do If Pind.1 = 1 Then 'jeżeli uchwyt wciśnięty Waitms 30 'drganie styków Portd.0 = 1 'zapal diode spawania Portd.5 = 1 'włącz gaz Waitms 250 'czekaj Xms Portd.6 = 1 'włącz...
Bez schematu to ciężko powiedzieć, ale może spróbuj na próbę zamienić E = Portd.3 , Rs = Portd.2 na: E = Portd.2 , Rs = Portd.3 bo to wygląda jak brak zezwolenia na wyświetlanie. W miarę możliwości daj schemat, i konecznie sprawdź, czy na 5 pinie lcd także jest masa!!
Config Portd.4 = input-- oznacza że jest to wejście. Portd.4=1 --podciągnięte wewnętrznym rezystorem do +5v. Config portd.4 = Output-- oznacza że jest to wyjście. portd.4= 1 --w stanie spoczynkowym +5v. Jeśli na początku programu masz: $regfile = "attiny2313.dat", to ustawienie w BASCOMie nie działa.
Podejrzewam że problem jest z odbiorem danych z pilota. BASCOM i GETRC5 nie za bardzo sobie z tym radzi. No i czy masz na pewno pilota RC5? Dodano po 1 Zobacz to: [syntax=basic4gl] $regfile "m8def.dat" 'konfiguracja mikroprocesora $crystal = 4000000 'konfiguracja kwarcu Config Portb = &B11111111 Portb = &B11111111 Config Portc = &B1111101...
mam dosyć duże dośiadczenie w uP ale przeczytaj sobie mój problem: http://www.elektroda.pl/rtvforum/topic60... ps. jak kupisz nowego procka to nie tykaj fusów, tylko wgraj taki programik zapalający i gaszący diodę $regfile = "m8def.dat" $crystal = 1000000 Config Portd = Output Do Waitms 255 Set Portd.1 Waitms 255 Reset Portd.1 Loop End dioda podłączona...
Spróbuj tak Do reset Portb.2 Waitms 300 set Portb set Portd reSet Portb.1 Waitms 300 set Portb set Portd reSet Portb.0 Waitms 300 set Portb set Portd reSet Portd.7 Waitms 300 set Portb set Portd reSet Portd.6 Waitms 300 set Portb set Portd reSet Portd.5 Waitms 300 set Portb set Portd Loop End Albo odwróć diody i podłącz do masy.
Witam. .............. Program testowy ma działać tak, na początku na sekundę wyświetla 36 na wyświetlaczach (i to zawsze się dzieje), później ma liczyć od 00 do 99, i tak w kółko. Pozdrawiam Zmieniłem trochę twój code. -Nie testowany.... (tylko symulator)........ [code][syntax=basic4gl] ' Example for 2 digit LCD display (Common Anode) ' Anodes are...
No tak masz rację z tą definicją portów wejścia, to było źle, już poprawiłem w programach wyżej. Powinno być SET PORTB.x a nie PINB.x Tak powinno się deklarować wejścia i wyjścia, o to przykład. [syntax=basic4gl] '================ wyjscia ========================================... Pompa Alias Portd.7 ' przekaznik pompy obiegu wody Config...
Tak się dzieje jak stosujesz instrukcje Gosub, program idzie do procedury a tam znowu stosujesz Gosub i w tej na koncu nieszczęsne Retrurn. Program idzie w "krzaki" bo przepełniasz stosy i nadpisujesz w pamięci Ram zmienne. Poczytaj o procedurach i funkcjach w pomocy Bascoma, użyj Declare Sub a potem Sub: i END SUB. Stosuj też deklaracje ramki i stosu...
Eeee... a jak program wychodzi z tej pętli: do 'pętla nieskończona if pinb.0=1 then 'jeżeli przycisk 1 wciśnięty portd.0=1 'otwiera port elseif pinb.1=1 then 'jeżeli przycisk 2 wciśnięty portd.0=0 'zamyka port endif 'koniec bloku warunkowego loop 'koniec pętli :?:
Witam! A co z deklaracją 1wire w przypadku czujników na osobnych portach procesora? W przypadku 2 czujników na jednej linii u mnie było po prostu Config 1wire = Portd.7 a jak będzie w przypadku który opisał kolega hotdog?
Spróbuj tak: [syntax=basic4gl]$regfile = "m8def.dat" $crystal = 1000000 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portc.0 , Db5 = Portc.1 , Db6 = Portc.2 , Db7 = Portc.3 , E = Portd.1 , Rs = Portd.0 Cls Do Locate 2 , 2 Lcd "TEST PROGRAMU" Wait 10 Loop End[/syntax]
konfiguracja TIMERA: [syntax=basic4gl]Config Timer0 = Timer , Prescale = 256 'konfiguracja Timer0 jako timer On Timer0 Przerwanie 'wywołanie procedury liczącej przy przerwaniu Enable Timer0 'włączamy Timer0 Enable Interrupts 'włączamy przerwania[/syntax] [syntax=basic4gl] Loop Prztimer: Incr Licznik If Licznik = 100 Then Licznik = 0 If Licznik = X Then...
portd atmega8 atmega8 portd atmega8 dioda portd
amplituner potencjometr ucieka głos czujnik odciąć paliwo
lodówka whirlpool pokrętło renault mascott
Mała dynamika dźwięku we wzmacniaczu Williamsona: przyczyny Schemat instalacji elektrycznej Audi A6 C7 - źródła i porady