Generowanie powtarzalnego sygnału TTL 45 min H i 15 min L - czy 555 da radę?
Długi impuls TTL
From: "PedrO" <rambler_at_nospam_red.alpha.net.pl>
Subject: Długi impuls TTL
Date: Wed, 12 Jun 2002 08:41:51 +0200
Jak wygenerować powtarzalny sygnał TTL o czasie trwania H=45 minut L=15
minut. Czy ktoś próbował czy 555 uciągnie takie czasy? Tolerancja może być
do 10%.
Robs.
From: Ireneusz Niemczyk <i.niemczyk_at_nospam_multispedytor.com.pl>
Subject: Re: =?iso-8859-2?Q?D=B3ugi?= impuls TTL
Date: Wed, 12 Jun 2002 10:00:07 +0200
Jak wygenerować powtarzalny sygnał TTL o czasie trwania H=45 minut L=15
minut. Czy ktoś próbował czy 555 uciągnie takie czasy? Tolerancja może być
do 10%.
Standardowa odpowiedź grupowicza numer 15 3/4 - weź Atmeka ;-)
Tak na serio - może generator, licznik, dekoder i z jednego z 4 pinów brać
sygnał? eee...prosciej uC.
Jak wytnę 80% źródła z tego nad czym tetraz siedzę to sostanie mi
zegar....Jeśli nie przewidujesz żadnych regulacji - mogę Ci wygenerować
odpowiedni pliczek dla np: 2051 w 5minut - chcesz?
--
PZD, Irek.N.
From: "Pelos" <pelos_at_nospam_promocja.net>
Subject: Re: Długi impuls TTL
Date: Wed, 12 Jun 2002 10:10:00 +0200
Użytkownik "Ireneusz Niemczyk" <i.niemczyk_at_nospam_multispedytor.com.pl> napisał w
wiadomości news:3D06FF87.C0EBC940_at_nospam_multispedytor.com.pl...
Ano wlasnie :)
Jakis 8 girkowy procek :)
Pelos
From: "PedrO" <rambler_at_nospam_red.alpha.net.pl>
Subject: Re: Długi impuls TTL
Date: Wed, 12 Jun 2002 10:32:00 +0200
Tak na serio - może generator, licznik, dekoder i z jednego z 4 pinów brać
sygnał? eee...prosciej uC.
Jak wytnę 80% źródła z tego nad czym tetraz siedzę to sostanie mi
zegar....Jeśli nie przewidujesz żadnych regulacji - mogę Ci wygenerować
odpowiedni pliczek dla np: 2051 w 5minut - chcesz?
Zapodaj, może się przekonam :-)
Robs.
From: Ireneusz Niemczyk <i.niemczyk_at_nospam_multispedytor.com.pl>
Subject: Re: =?iso-8859-2?Q?D=B3ugi?= impuls TTL
Date: Wed, 12 Jun 2002 12:14:23 +0200
Zapodaj, może się przekonam :-)
Robs.
OKI, jak tylko odwiedzę domek ;-)
--
PZD, Irek.N.
ps. jaki kwarc ?
From: Ireneusz Niemczyk <i.niemczyk_at_nospam_multispedytor.com.pl>
Subject: Re: =?iso-8859-2?Q?D=B3ugi?= impuls TTL
Date: Thu, 13 Jun 2002 00:38:41 +0200
poszlo....
--
PZD, Irek.N.
From: jfox_at_nospam_poczta.onet.pl (J.F.)
Subject: Re: Długi impuls TTL
Date: Wed, 12 Jun 2002 20:16:40 GMT
On Wed, 12 Jun 2002 08:41:51 +0200, PedrO wrote:
Jak wygenerować powtarzalny sygnał TTL o czasie trwania H=45 minut L=15
minut. Czy ktoś próbował czy 555 uciągnie takie czasy? Tolerancja może być
do 10%.
Czemu mialby nie uciagnac - w koncu mamy dzis elekrolity po pare F.
Tylko sie spytaj jaka tolerancje maja takie sztuki.
Wyleciala mi z glowy nawa kostki ktora zawierala timerek .. + licznik,
wlasnie na takie dlugie czasy.
Ale naprawde - daj tu procesorka malego. Zrobisz bez klopotu,
a dokladnosc kwarcu.
J.
From: "PedrO" <rambler_at_nospam_red.alpha.net.pl>
Subject: Re: Długi impuls TTL
Date: Thu, 13 Jun 2002 07:35:50 +0200
Czemu mialby nie uciagnac - w koncu mamy dzis elekrolity po pare F.
Tylko sie spytaj jaka tolerancje maja takie sztuki.
Wyleciala mi z glowy nawa kostki ktora zawierala timerek .. + licznik,
wlasnie na takie dlugie czasy.
Program do liczenia 555 wywala komunikat że podany czas jest nierealny :-)
(może dla programu?)
Ale naprawde - daj tu procesorka malego. Zrobisz bez klopotu,
a dokladnosc kwarcu.
No ale na prockach to się trzeba znać... i chyba trzeba mieć programator
epromów
coby do niego jakiś program zapodać..., nie wiem jak się do procków zabrać,
miałem co prawda laborki z '51 i trochę znam asembler, ale na laborkach
wszystko
było zlutowane i do kompa podłączone.
A może są jakieś strony o prockach co by zacząć "od zera"?
Robs.
From: jfox_at_nospam_poczta.onet.pl (J.F.)
Subject: Re: =?iso-8859-1?Q?D=B3ugi?= impuls TTL
Date: Thu, 13 Jun 2002 10:01:59 +0000 (UTC)
On Thu, 13 Jun 2002 07:35:50 +0200, <rambler_at_nospam_red.alpha.net.pl> wrote:
Ale naprawde - daj tu procesorka malego. Zrobisz bez klopotu,
a dokladnosc kwarcu.
No ale na prockach to się trzeba znać...
W tym przypadku niewiele ... a to bardzo pozyteczna wiedza :-)
i chyba trzeba mieć programator epromów
Juz nie.
coby do niego jakiś program zapodać..., nie wiem jak się do procków zabrać,
miałem co prawda laborki z '51 i trochę znam asembler, ale na laborkach
wszystko było zlutowane i do kompa podłączone.
No to podstawy masz, teraz tylko odswiezyc wiedze -)
J.
From: "PedrO" <rambler_at_nospam_red.alpha.net.pl>
Subject: Re: Długi impuls TTL
Date: Thu, 13 Jun 2002 11:39:29 +0200
No to podstawy masz, teraz tylko odswiezyc wiedze -)
Ale gdzie ? :-)
R.
From: Ireneusz Niemczyk <i.niemczyk_at_nospam_multispedytor.com.pl>
Subject: Re: =?iso-8859-2?Q?D=B3ugi?= impuls TTL
Date: Thu, 13 Jun 2002 13:31:44 +0200
Ale gdzie ? :-)
Najlepiej w gowie, ale nie będę się upierał ;-))
Jeśli zaś pytasz jak to zrobić...hmm...parę ksiażek by się przydało...
Możemy też publicznie przećwiczyć ów timerek ;-)
--
PZD, Irek.N.
ps. a może Bascomowcy się odezwą?
From: Ireneusz Niemczyk <i.niemczyk_at_nospam_multispedytor.com.pl>
Subject: Re: =?iso-8859-2?Q?D=B3ugi?= impuls TTL
Date: Thu, 13 Jun 2002 23:48:54 +0200
Na AVR czy '51?
Chyba lepiej by było AVR....mniejsze toto bywa, niekoniecznie tańsze :-(
chociaż kto to wie, jakie sš preferencje PedrO ;-)
--
PZD, Irek.N.
From: zielpro_at_nospam_cavern.pl (ziel)
Subject: =?iso-8859-2?Q?RE:_D=B3ugi_impuls_TTL?=
Date: 14 Jun 2002 00:47:30 +0200
Chyba lepiej by było AVR....mniejsze toto bywa, niekoniecznie tańsze :-(
chociaż kto to wie, jakie sš preferencje PedrO ;-)
--
> PZD, Irek.N.
>
No tak publicznie ;-)
--------------------------------------
'naglówek dla procesora 2051
$crystal = 12000000
$regfile = "89C2051.dat"
'naglówek dla AVR2313
'$crystal = 10000000
'$regfile = "2313.dat"
'ddrb=&B00000010 ' wyprowadzenie 1 z portu B jest wyjściem, pozostale
pracują jako wejścia
Dim Gora As Bit ' zapamietanie jaki stan jest ustawiony na
wyjściu
'przy zbyt dużym obciązęniu na wyjściu może być 2V jest to stan "jedynki",
ale procesor
'odczyta stan "zero"
Dim Licznik As Word 'zlicza przerwania
Dim Sekundy As Word ' no comment
Wyjscie Alias P1.1 'np. to wyprowadzenie
Dim Stan_hi As Word ' zadana liczba sekund stanu 1
Dim Stan_lo As Word 'zadana liczba sekund stanu 0
'Przerwanie generowane jest co 255 cykli zegara czyli co 255usek.
'do odmierzenia jednej sekundy potrzeba zliczyć 3921,568 przerwań,w
zaokrągleniu 3922
'51 pracuje z taktem 1MHz czyli na jedną sekundę
Config Timer0 = Timer , Gate = Internal , Mode = 2
'Timer0 = Timer - praca jako czasomierz
'Gate = Internal - takt sterowany z zegara procesora
'Mode = 2 - tryb 8-bitowy z auto ladowaniem w przerwaniu
On Timer0 Int_tim0
Load Timer0 , 100 'etykieta gdzie znajduje się
'program obslugi przerwania
Enable Interrupts 'ogólne zezwolenie na przerwania
Enable Timer0 'zezwolenie na przerwanie od Timer0
Start Timer0 'uruchomienie timera
Stan_hi = 2700 'liczba sekund "1" na wyjściu - 2700/60=45
Stan_lo = 900 'liczba sekund "0" na wyjściu - 900/60=15
Do
' tu mozna wstawić procedurę zwiększającą lub zmiejszającą czasy wlączenia
lub wylączenia
Loop
End
'Obsluga przerwania od Timer0
Int_tim0:
Incr Licznik
If Licznik > 3922 Then 'jeśli zliczy już 3922 przerwań
Incr Sekundy ' to znaczy, że zmarnowano kolejna minutę
życia
Licznik = 0 ' bo teraz zliczamy następną sekundę
End If
If Gora = 1 Then 'jeśli na wyprowadzeniu jest "jedynka"
If Sekundy > Stan_hi Then ' i do tego jeśli zaczyna juz być zbut
długo niż potrzeba
Reset Wyjscie ' no to zerujemy wyjście
Reset Gora ' i zerujemy "flagę" żeby wiedzieć co
teraz jest na wyjściu
Sekundy = 0
End If
Else
If Sekundy > Stan_lo Then ' tak samo jak dla "jedynki"
Set Wyjscie ' tylko z powodu wrodzonego lenistwa
Set Gora ' nie chce mi sie pisać tego samego dwa
razy
Sekundy = 0 ' i tak wiadomo o co chodzi, a jeśli nie
to
End If ' trzeba chwilkę pomysleć
End If
Return
-----------------------------------------------
pzdr
Artur
--
Archiwum grupy: http://niusy.onet.pl/pl.misc.elektronika
From: zielpro_at_nospam_cavern.pl (ziel)
Subject: =?iso-8859-2?Q?RE:_D=B3ugi_impuls_TTL?=
Date: 14 Jun 2002 00:53:11 +0200
Dim Licznik As Word 'zlicza przerwania
Dim Sekundy As Word ' no comment
Wyjscie Alias P1.1 'np. to wyprowadzenie
^^^^^^
Dim Stan_hi As Word ' zadana liczba sekund stanu 1
Dim Stan_lo As Word 'zadana liczba sekund stanu 0
I auto poprawka ;-)
Dla AVR :
Wyjscie Alias Portb.1
pzdr
Artur
--
Archiwum grupy: http://niusy.onet.pl/pl.misc.elektronika
From: zielpro_at_nospam_cavern.pl (ziel)
Subject: =?iso-8859-2?Q?RE:_D=B3ugi_impuls_TTL?=
Date: 14 Jun 2002 01:27:44 +0200
'$crystal = 10000000
[...]
Config Timer0 = Timer , Gate = Internal , Mode = 2
Alt juz ostatnia poprawka ;-)
$crystal - jedno zero za dużo, dla innych wartości kwarcu należy wprowadzić
inną wartość dla zmiennej licznik.
Config Timer0 = Timer , Prescale = 1
Właściwiej należało by użyć funkcji compare wbudowanej w licznik, ale co
będę komplikował taki prosty programik.
pzdr
Artur
--
Archiwum grupy: http://niusy.onet.pl/pl.misc.elektronika
From: Ireneusz Niemczyk <i.niemczyk_at_nospam_multispedytor.com.pl>
Subject: Uwaga, dlugie....
Date: Fri, 14 Jun 2002 08:48:28 +0200
--------------2ED4A3ACC0CA8DAA6BAA1F01
Content-Type: text/plain; charset=iso-8859-2
Content-Transfer-Encoding: 8bit
No tak publicznie ;-)
Pytanie też było publiczne ;-)
{ciach - sklaniam sie jednak ku C)
Dla 2051 moglo by to wygladac np. tak
*************************************************
#include <AT89x051.h>
unsigned char Sekunda, Minuta; //nic dodac nic ujac
unsigned int Preskaler; //skala sekund
//--- INTERRUPT -------------------------------------------
void Timer1 (void) interrupt 3 //tutaj co 200 taktow zegara
{
Preskaler++;
if (Preskaler > 10000)
{
Preskaler = 0; //tutaj juz co sekunde
Sekunda++;
if (Sekunda > 59)
{
Sekunda = 0; //oraz co minute
Minuta++;
if (Minuta > 59)
Minuta = 0;
if (Minuta > 45)
P1 = 0x00; //Przykladowo migamy calym portem.
else
P1 = 0xFF;
}
}
}
//--- MAIN --------------------------
main()
{
Minuta = 0;
Sekunda = 0;
TMOD = 0x20; //T1 start 8bit autoreload
TH1 = 256-200; //T1 200 cycles -> int.
TCON = 0x40; //T1 start
IE = 0x88; //T1 interrupt Enabled
while (1);
}
*************************************************
Z czego kompilator zrobil takie zrodło: (po wywaleniu komentarzy i procedury
startowej)
*************************************************
; //--- INTERRUPT -------------------------------------------
CSEG AT 0001BH
LJMP Timer1
Timer1:
PUSH ACC
PUSH PSW
INC Preskaler+01H
MOV A,Preskaler+01H
JNZ ?C0010
INC Preskaler
?C0010:
SETB C
SUBB A,#010H
MOV A,Preskaler
SUBB A,#027H
JC ?C0006
MOV Preskaler,#00H
MOV Preskaler+01H,#00H
INC Sekunda
MOV A,Sekunda
SETB C
SUBB A,#03BH
JC ?C0006
MOV Sekunda,#00H
INC Minuta
MOV A,Minuta
SETB C
SUBB A,#03BH
JC ?C0003
MOV Minuta,#00H
?C0003:
MOV A,Minuta
SETB C
SUBB A,#02DH
JC ?C0004
MOV P1,#00H
SJMP ?C0006
?C0004:
MOV P1,#0FFH
?C0006:
POP PSW
POP ACC
RETI
; //--- MAIN --------------------------
main:
CLR A
MOV Minuta,A
MOV Sekunda,A
MOV TMOD,#020H
MOV TH1,#038H
MOV TCON,#040H
MOV IE,#088H
?C0007:
SJMP ?C0007
*************************************************
--
PZD, Irek.N.
--------------2ED4A3ACC0CA8DAA6BAA1F01
Content-Type: text/html; charset=iso-8859-2
Content-Transfer-Encoding: 8bit
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<blockquote TYPE=CITE>No tak publicznie ;-)</blockquote>
Pytanie też było publiczne ;-)
<p>{ciach - sklaniam sie jednak ku C)
<br><tt>Dla 2051 moglo by to wygladac np. tak</tt><tt></tt>
<p><tt>***************************************************</tt>
<br><tt>#include <AT89x051.h></tt>
<br><tt>unsigned char Sekunda, Minuta; //nic dodac nic ujac</tt>
<br><tt>unsigned int Preskaler;
//skala sekund</tt><tt></tt>
<p><tt>//--- INTERRUPT -------------------------------------------</tt>
<br><tt>void Timer1 (void) interrupt 3 //tutaj co 200 taktow zegara</tt>
<br><tt>{</tt>
<br><tt> Preskaler++;</tt>
<br><tt> if (Preskaler > 10000)</tt>
<br><tt> {</tt>
<br><tt> Preskaler = 0; //tutaj juz co sekunde</tt>
<br><tt> Sekunda++;</tt>
<br><tt> if (Sekunda > 59)</tt>
<br><tt> {</tt>
<br><tt> Sekunda = 0; //oraz
co minute</tt>
<br><tt> Minuta++;</tt>
<br><tt> if (Minuta > 59)</tt>
<br><tt> Minuta = 0;</tt>
<br><tt> if (Minuta > 45)</tt>
<br><tt> P1 = 0x00;
//Przykladowo migamy calym portem.</tt>
<br><tt> else</tt>
<br><tt> P1 = 0xFF;</tt>
<br><tt> }</tt>
<br><tt> }</tt>
<br><tt> }</tt><tt></tt>
<p><tt>//--- MAIN --------------------------</tt>
<br><tt>main()</tt>
<br><tt>{</tt>
<br><tt> Minuta = 0;</tt>
<br><tt> Sekunda = 0;</tt>
<br><tt> TMOD = 0x20; //T1 start 8bit autoreload</tt>
<br><tt> TH1 = 256-200; //T1 200 cycles -> int.</tt>
<br><tt> TCON = 0x40; //T1 start</tt>
<br><tt> IE = 0x88; //T1 interrupt
Enabled</tt><tt></tt>
<p><tt> while (1);</tt>
<br><tt> }</tt>
<br><tt>***************************************************</tt>
<p>Z czego kompilator zrobil takie zrodło: (po wywaleniu komentarzy
i procedury startowej)
<p><tt>***************************************************</tt>
<br><tt>; //--- INTERRUPT -------------------------------------------</tt>
<br><tt>CSEG AT 0001BH</tt>
<br><tt>LJMP Timer1</tt><tt></tt>
<p><tt>Timer1:</tt>
<br><tt> PUSH ACC</tt>
<br><tt> PUSH PSW</tt>
<br><tt> INC Preskaler+01H</tt>
<br><tt> MOV A,Preskaler+01H</tt>
<br><tt> JNZ ?C0010</tt>
<br><tt> INC Preskaler</tt>
<br><tt>?C0010:</tt>
<br><tt> SETB C</tt>
<br><tt> SUBB A,#010H</tt>
<br><tt> MOV A,Preskaler</tt>
<br><tt> SUBB A,#027H</tt>
<br><tt> JC
?C0006</tt>
<br><tt> MOV Preskaler,#00H</tt>
<br><tt> MOV Preskaler+01H,#00H</tt>
<br><tt> INC Sekunda</tt>
<br><tt> MOV A,Sekunda</tt>
<br><tt> SETB C</tt>
<br><tt> SUBB A,#03BH</tt>
<br><tt> JC
?C0006</tt>
<br><tt> MOV Sekunda,#00H</tt>
<br><tt> INC Minuta</tt>
<br><tt> MOV A,Minuta</tt>
<br><tt> SETB C</tt>
<br><tt> SUBB A,#03BH</tt>
<br><tt> JC
?C0003</tt>
<br><tt> MOV Minuta,#00H</tt>
<br><tt>?C0003:</tt>
<br><tt> MOV A,Minuta</tt>
<br><tt> SETB C</tt>
<br><tt> SUBB A,#02DH</tt>
<br><tt> JC
?C0004</tt>
<br><tt> MOV P1,#00H</tt>
<br><tt> SJMP ?C0006</tt>
<br><tt>?C0004:</tt>
<br><tt> MOV P1,#0FFH</tt>
<br><tt>?C0006:</tt>
<br><tt> POP PSW</tt>
<br><tt> POP ACC</tt>
<br><tt> RETI</tt>
<br><tt>; //--- MAIN --------------------------</tt>
<br><tt>main:</tt>
<br><tt> CLR A</tt>
<br><tt> MOV Minuta,A</tt>
<br><tt> MOV Sekunda,A</tt>
<br><tt> MOV TMOD,#020H</tt>
<br><tt> MOV TH1,#038H</tt>
<br><tt> MOV TCON,#040H</tt>
<br><tt> MOV IE,#088H</tt>
<br><tt>?C0007:</tt>
<br><tt> SJMP ?C0007</tt>
<br><tt>***************************************************</tt>
<p>--
<br>PZD, Irek.N.
<br> </html>
--------------2ED4A3ACC0CA8DAA6BAA1F01--
From: zielpro_at_nospam_cavern.pl (ziel)
Subject: RE: Uwaga, dlugie....
Date: 14 Jun 2002 11:18:11 +0200
No tak publicznie ;-)
Pytanie też było publiczne ;-)
{ciach - sklaniam sie jednak ku C)
Dla 2051 moglo by to wygladac np. tak
[...]
--
> PZD, Irek.N.
I tu się kryje wyższość BASCOM'a nad C ;-)
Mój program w BASCOM'ie odmierza czas 45min jeśli jest stan HI i 15minut
jeśli LO.
Że nie wspomnę o prostej możliwości dodania zmiany czasów HI i LO.
;-)
pzdr
Artur
--
Archiwum grupy: http://niusy.onet.pl/pl.misc.elektronika
From: Ireneusz Niemczyk <i.niemczyk_at_nospam_multispedytor.com.pl>
Subject: Re: Uwaga, dlugie....
Date: Fri, 14 Jun 2002 15:14:22 +0200
I tu się kryje wyższość BASCOM'a nad C ;-)
Mój program w BASCOM'ie odmierza czas 45min jeśli jest stan HI i 15minut
jeśli LO.
Że nie wspomnę o prostej możliwości dodania zmiany czasów HI i LO.
;-)
To już przerabialiśmy ;-)))
--
PZD, Irek.N.
From: "PedrO" <rambler_at_nospam_red.alpha.net.pl>
Subject: Re: Długi impuls TTL
Date: Fri, 14 Jun 2002 11:09:39 +0200
Użytkownik "Ireneusz Niemczyk" <i.niemczyk_at_nospam_multispedytor.com.pl> napisał w
wiadomości news:3D091346.BBE65DA5_at_nospam_multispedytor.com.pl...
Na AVR czy '51?
Chyba lepiej by było AVR....mniejsze toto bywa, niekoniecznie tańsze :-(
chociaż kto to wie, jakie sš preferencje PedrO ;-)
Normalne :-))
Jak się obejdzie bez oscyloskopu i programatora to lecimy :-)
Robs.
From: zielpro_at_nospam_cavern.pl (ziel)
Subject: =?iso-8859-2?Q?RE:_D=B3ugi_impuls_TTL?=
Date: 13 Jun 2002 23:33:47 +0200
Jeśli zaś pytasz jak to zrobić...hmm...parę ksiażek by się przydało...
Możemy też publicznie przećwiczyć ów timerek ;-)
--
> PZD, Irek.N.
> ps. a może Bascomowcy się odezwą?
>
Na AVR czy '51?
pzdr
Artur
--
Archiwum grupy: http://niusy.onet.pl/pl.misc.elektronika
From: "Martin Walter" <usrpwalt_at_nospam_kki.net.pl>
Subject: Re: Długi impuls TTL
Date: Wed, 12 Jun 2002 22:19:20 +0200
Jak wygenerować powtarzalny sygnał TTL o czasie trwania H=45 minut L=15
minut. Czy ktoś próbował czy 555 uciągnie takie czasy? Tolerancja może być
do 10%.
O ile pamiętam produkuje się gotowe timerki takie do sprzętu
kuchennego. Z całą pewnością będą Ci odpowiadać.
Jedna kostka parę elementów, dużo lepsza powtarzalność
impulsów niż potrzebujesz i możliwość podpięcia wyświetlacza.
No chyba...
że masz na myśli jakieś urządzenie jednorazowego użytku???
PMW
From: "PedrO" <rambler_at_nospam_red.alpha.net.pl>
Subject: Re: Długi impuls TTL
Date: Fri, 14 Jun 2002 11:12:12 +0200
O ile pamiętam produkuje się gotowe timerki takie do sprzętu
kuchennego. Z całą pewnością będą Ci odpowiadać.
Jedna kostka parę elementów, dużo lepsza powtarzalność
impulsów niż potrzebujesz i możliwość podpięcia wyświetlacza.
No chyba...
że masz na myśli jakieś urządzenie jednorazowego użytku???
PMW
Jednorazowego... (nie)stety...
ale może zapodasz jakiś symbol co bym pdf-a poszukał...??
R.