Vítejte na Elektro Bastlírn?
Nuke - Elektro Bastlirna
  Vytvořit účet Hlavní · Fórum · DDump · Profil · Zprávy · Hledat na fóru · Příspěvky na provoz EB

Vlákno na téma KORONAVIRUS - nutná registrace


Nuke - Elektro Bastlirna: Diskuzní fórum

 FAQFAQ   HledatHledat   Uživatelské skupinyUživatelské skupiny   ProfilProfil   Soukromé zprávySoukromé zprávy   PřihlášeníPřihlášení 

Hledá se pomocník ke zhotovení přístroje pro lucidní sny
Jdi na stránku Předchozí  1, 2
 
Přidat nové téma   Zaslat odpověď       Obsah fóra Diskuzní fórum Elektro Bastlírny -> Poptávka služeb, nabídky zaměstnání
Zobrazit předchozí téma :: Zobrazit následující téma  
Autor Zpráva
frantajetel11



Založen: Nov 13, 2008
Příspěvky: 1922
Bydliště: Kladno

PříspěvekZaslal: pá říjen 08 2010, 21:59    Předmět: Citovat

Vůbec teda nechápu přínos tohohle zařízení, ale když už bych měl spát s něčím takovým na ksichtě a mít z toho vedenej 5ti žílovej kabel tak :
1) ta navrhovaná CR 2032 ti moc dlouho nevydrží, kór u vysocesvítivejch ledek - dej tam malej síťovej zdroj
2) čtyřma výstupama uP uděláš 16 úrovní blikání ledky i bez pwm - to je málo?
3) ať počítám jak chci, tak společná zem, + ledek (pokud teda blikaj vždycky zároveň) a tlačítko jsou furt jen 3 žíly - proč 5?
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Alex005



Založen: Sep 22, 2010
Příspěvky: 63

PříspěvekZaslal: so říjen 09 2010, 11:41    Předmět: Citovat

Pokud by ta cr2032 nevydržela tak bych to napájel přes usb = 5V. Nevím přesně co je uP, ale 16 úrovní je určitě dostatek. A těch 5 kabelů. Dva jsou pro tlačítko, dva pro anody LED diod a jeden pro společnou katodu = 5 žil.

Ono by samozřejmě šlo dát anody na jeden kabel a dlačítko hodit na vývod ke katodám LED diod. Ještě jsem to tolik nezkoumal. 5 žil mám teď u masky kterou ženu přes RS232.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Alex005



Založen: Sep 22, 2010
Příspěvky: 63

PříspěvekZaslal: so říjen 09 2010, 18:40    Předmět: Citovat

Zdravím všechny,

zkoušel jsem projít nějaké stránky a kouknout do datasheetu k ATTINY2313, ale jsem z toho hodně zmatený. Mám nainstalovaný PonyProg a AT Studio. Co vše mám nastavit aby jednočip po spuštění tikal na vnitřním krystal který by měl být 8MHz (prá je to nějaká propojka u Fuse Low Bite). Když pak budu chtít aby jednočip odpočítával třeba 4 hodiny (14400 sekund = 14400000000 mikro-sekund) tak udělám cykl o jedné instrukci který se zopakuje 14400000000krát ? ... a nebo bych mohl použít Watchdog? Mám to chápat jako Timer v Delphi? Nastavím čas a spustím, po jeho odpočtu se provede instrukce (třeba JUMP někam)? Jinak 8MHz = 1 procesorový tik = 1uS ? ...

Jak mám začít první řádek? Má mít ATTINY na začátku nějakou startovací instrukci? A to PWM? ... z toho jsem totálně mimo. Sad

Díky moc za pomoc.

Toto jsem přidal dodatečně - kód jak by to mohlo být ale ve vyšším jazyce (aby se nikdo nemusel namáhat s logikou, tak jsem to takto načrtnul):

// zapnutí ON / OFF přepínače do polohy ON
START PROGRAMU
A=0 // proměná alarm 1
B=0 // proměná alarm 2
Tlacitko1=1 // nastavení log. 1 na tlačítku
Tlacitko2=1 // nastavení log. 1 na tlačítku
Tlacitko3=1 // nastavení log. 1 na tlačítku
VystupLED1=0 // zhasnutí LED diody č.1
VystupLED2=0 // zhasnutí LED diody č.2
JasLED=0 // nejmenší jas LED diod
tlacitko3 nastavit na preruseni

cykl1:
if tlacitko1=0 then
A=A+1
VystupLED1=1 // rozsvícení LED diody č. 1
VystupLED2=1 // rozsvícení LED diody č. 2
cekej 200 ms
VystupLED1=0 // zhasnutí LED diody č. 1
VystupLED2=0 // zhasnutí LED diody č. 1
if tlacitko2=1 then goto cykl1

cykl2:
if tlacitko1=0 then
B=B+1
VystupLED1=1 // rozsvícení LED diody č. 2
VystupLED2=1 // rozsvícení LED diody č. 2
cekej 100 ms
VystupLED1=0 // zhasnutí LED diody č. 1
VystupLED2=0 // zhasnutí LED diody č. 1
if tlacitko2=1 then goto cykl2

Timer=A*3600000 // počet hodin * 3600000 milisekund

Timer.start=1 // spuštění odpočtu alarmu

Timer.Crrr: // sem skočí když timer odpočítá vše do nuly
cekej 2000 ms
JasLED=JasLED+1 // nastavení jasu LED diod
PWM=JasLED // nastavení PWM na požadovaný jas LED diod
VystupLED1=1 // rozsvícení LED diody č. 1
VystupLED2=1 // rozsvícení LED diody č. 2
cekej 200 ms
VystupLED1=0 // zhasnutí LED diody č. 1
VystupLED2=0 // zhasnutí LED diody č. 2
goto Timer.Crrr

Preruseni: // sem skočí když se stiskne tlačítko č.3
if Timer.start=1 then return // pokud timer stále počítá (zamezení stisknutí tlačítka dřív než dopočítá čas)
VystupLED1=0 // zhasnutí LED diody č. 1
VystupLED2=0 // zhasnutí LED diody č. 2
JasLED=0 // jas LED diod opět na nejmenší hosnotu
Timer=B*60000 // počet minut * 60000 milisekund
Timer.start=1 // spuštění odpočtu alarmu


... řekl bych že to je asi vše Smile


Naposledy upravil Alex005 dne so říjen 09 2010, 19:37, celkově upraveno 2 krát.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Burajko



Založen: Aug 21, 2009
Příspěvky: 1811

PříspěvekZaslal: so říjen 09 2010, 19:15    Předmět: Citovat

1.Casovanie sa robi povacsinou cez Timer z preddelickou a to tak,ze nastavis pretecenie napr. kazdych 10ms,ktore obsluzis v preruseni,alebo softwarove kontrolujes priznak pretecenia.
2.Urob delay ruinu,ktora ma napr 1s. a 14400 ju opakuj.

_________________
Už druhý krát strihám a furt je to krátke
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Andrea



Založen: Sep 07, 2007
Příspěvky: 9340

PříspěvekZaslal: so říjen 09 2010, 20:12    Předmět: Citovat

Alex005 napsal(a):
Jinak 8MHz = 1 procesorový tik = 1uS ? ...

Při 8MHz je hodinový cyklus 125ns a instrukce trvají 1-4 hodinové cykly.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Alex005



Založen: Sep 22, 2010
Příspěvky: 63

PříspěvekZaslal: so říjen 09 2010, 20:16    Předmět: Citovat

Děkuji za odpověď ... mohu si tak udělat obrázek kolik cyklů a tak.

Jinak právě stahuji BASCOM, kde se programuje v qbasicu. V tom to bude lepší. Pokud jej někdo ovládá a mohl by mi poradit do začátku?

Díky.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Crifodo



Založen: Oct 11, 2005
Příspěvky: 15005

PříspěvekZaslal: so říjen 09 2010, 20:36    Předmět: Citovat

Alex005 napsal(a):
právě stahuji BASCOM, kde se programuje v qbasicu

to je asi tak pravda jako že Poláci mluví slovensky.
Bascom má pro pauzy příkaz wait, waitms a waitus (s, ms, µs).
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
Alex005



Založen: Sep 22, 2010
Příspěvky: 63

PříspěvekZaslal: so říjen 09 2010, 21:50    Předmět: Citovat

Crifodo ... mno mě to skoro přišlo jako qbasic. Mimoto když už jsi nakousnul pár příkazů tak asi s tím máš nějakou zkušenost ... co tedy dál?

Zatím mám toto:
**************

$regfile = "attiny2313.dat"
$crystal = 8000000 // interní 8MHz krystal

Config Portb.3 = Output // jeden výstup na jedu LED
Config Portb.4 = Output // druhý výstup na druhou LED
Config Portd.4 = Input // tlačítko č.1
Config Portd.5 = Input // tlačítko č.2
Config Portd.6 = Input // tlačítko č.3
Portb.3 = 1 // napájení LED č.1
Portb.4 = 1 // napájení LED č.2
Portd.4 = 1 // nastavení tlačítka č.1
Portd.5 = 1 // nastavení tlačítka č.2
Portd.6 = 1 // nastavení tlačítka č.3

Dim A As Integer // proměnná pro alarm 1
Dim B As Integer // proměnná pro alarm 2
Dim C As Integer // pomocná proměnná pro jas LED diod
Dim F As Byte // pomocná proměnná pro cykl
Let A = 0 // nastavení alarmu 1 na 0
Let B = 0 // nastavení alarmu 2 na 0
Let C = 0 // nastavení pomocné proměnné pro jas LEDek

// nastavim dva timery tak aby 0 = 0% a 255 = 100% jas LED diod
Config Timer0 = Pwm , Pwm = On , Prescale = 1 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down
Config Timer1 = Pwm , Pwm = 8 , Prescale = 1 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down

Enable Timer0
Enable Timer1
Start Timer0
Start Timer1

Led1 alias Ocr1bl // to nevim co je
Led2 alias Ocr1al // to nevim co je
Led1 = 0 // zhasnutí LED č.1
Led2 = 0 // zhasnutí LED č.2

// nastavení alarmu 1 (hodiny)
Do
if Portd.4 = 0 then
A = A + 1
Led1 = 255
Led2 = 255
Waitms 500
Led1 = 0
Led2 = 0
Waitms 500
end if
if Portd.5 = 0 then goto AlarmDva
Loop

// nastavení alarmu 2 (minuty)
AlarmDva:
Do
if Portd.4 = 0 then
B = B + 1
Led1 = 255
Led2 = 255
Waitms 500
Led1 = 0
Led2 = 0
Waitms 500
end if
if Portd.5 = 0 then goto Start
Loop

// odpočítání alarmu č.1
Start:
A = A * 3600 // počet hodin v sekundách (alarm 1)
B = B * 60 // počet minut v sekundách (alarm 2)
Wait A // čekej požadovanou dobu

// blikací cyklus
Cykl:
Do
Led1 = 0 // zhasnutí LED č.1
Led2 = 0 // zhasnutí LED č.2
For F = 1 To 20 // cyklus, který se provede 20x (20x 100ms = 2 sec)
Waitms 100 // počkej dvěstě milisekund
if Portd.6 = 0 then goto Preruseni // obsluha tlačítka na masce
Next F
If C < 255 then C = C + 1 // zvětšení jasu LED diod
Led1 = C
Led2 = C
For F = 1 To 5 // zpoždovací cyklus (jak dlouho mají LEDky svítit)
Waitms 100
if Portd.6 = 0 then goto Preruseni
Next F
Loop

Preruseni:
Led1 = 0 // zhasnutí LED č.1
Led2 = 0 // zhasnutí LED č.2
C = 0 // reset pomocné proměnné pro jas LEDek
Wait B // čekej požadovounou dobu (alarm 2)
goto Cykl

End
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Alex005



Založen: Sep 22, 2010
Příspěvky: 63

PříspěvekZaslal: ne říjen 10 2010, 10:35    Předmět: Citovat

Bohužel se mi ještě nikdo ke kódu nevyjádřil tak ještě přidávám schéma zapojení ... prosil bych o kontrolu zda-li jej mohu takto spájet.

Děkuji.



schmmm.png
 Komentář:

Stáhnout
 Soubor:  schmmm.png
 Velikost:  15.43 kB
 Staženo:  166 krát

Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Alex005



Založen: Sep 22, 2010
Příspěvky: 63

PříspěvekZaslal: čt říjen 14 2010, 9:30    Předmět: Citovat

Tak už vše funguje. Přikládám funční kód a schéma zapojené pro případě že by si to někdo chtěl postavit.

kód:
' ***********
' LDI COUNTER

$regfile = "attiny2313.dat"
$crystal = 1000000                                          ' Internal 8Mhz crystal

Config Portb.3 = Output                                     ' first LED
Config Portb.4 = Output                                     ' second LED
Config Portd.4 = Input                                      ' button 1
Config Portd.5 = Input                                      ' button 2
Config Portd.6 = Input                                      ' button 3

Portb.3 = 1                                                 ' power for LED 1
Portb.4 = 1                                                 ' power for LED 2
Portd.4 = 1                                                 ' button 1 set to 1
Portd.5 = 1                                                 ' button 2 set to 1
Portd.6 = 1                                                 ' button 3 set to 1

Dim A As Integer
Dim B As Integer
Dim C As Integer
Dim F As Byte

Let A = 0
Let B = 0
Let C = 0

' ***********************************************************
' Timer for each LED with 0 = 0% and 255 = 100% of brightness

Config Timer1 = Pwm , Pwm = 8 , Prescale = 1 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down
Enable Timer1
Start Timer1
Led1 Alias Ocr1bl
Led2 Alias Ocr1al
Led1 = 0                                                    ' turn off LED 1
Led2 = 0                                                    ' turn off LED 2

' ********************************
' setup first countdown (in hours)

Alarmone:

  If Pind.4 = 0 Then
    A = A + 1                                               ' number of hours
    Led1 = 255
    Led2 = 255
    Waitms 500
    Led1 = 0
    Led2 = 0
    Waitms 250
  End If
  If Pind.5 = 0 Then
    Waitms 500                                              ' wait for avoid double-push
    Goto Alarmtwo
  End If
  Goto Alarmone

' ***********************************
' setup second countdown (in minutes)

Alarmtwo:

  If Pind.4 = 0 Then
    B = B + 1                                               ' number of minutes
    Led1 = 255
    Led2 = 255
    Waitms 500
    Led1 = 0
    Led2 = 0
    Waitms 250
  End If
  If Pind.5 = 0 Then Goto StartCountdown
  Goto Alarmtwo

' ***********************************************************
' converting variables into seconds and start first countdown

Startcountdown:

  A = A * 3600                                              ' first countdown in seconds
  B = B * 60                                                ' second countdown in seconds
  If A = 0 Then Goto Cycle
  Wait A                                                    ' wait first countdown

' **********************************************
' LED flashing + responding on pressing button 3

Cycle:

  Led1 = 0                                                  ' turn off LED 1
  Led2 = 0                                                  ' turn off LED 2
  For F = 1 To 10                                           ' wait (10x 100ms = 1 sec)
    Waitms 100
    If Pind.6 = 0 Then Goto Preruseni                       ' if button 3 pressed than jump
  Next F
  If C < 255 Then C = C + 1                                 ' increase LED brightness each cycle into max
  Led1 = C
  Led2 = C
  For F = 1 To 2                                            ' How long may LED be ON (200ms)
    Waitms 100
    If Pind.6 = 0 Then Goto Preruseni
  Next F
  Goto Cycle

' *****************************
' code when user press button 3

Preruseni:

  Led1 = 0                                                  ' turn off LED 1
  Led2 = 0                                                  ' turn off LED 2
  C = 0                                                     ' reset variable with last brightness of LEDs to zero
  If B = 0 Then Goto Cycle
  Wait B                                                    ' start second countdown
  Goto Cycle

End



schmmm.png
 Komentář:

Stáhnout
 Soubor:  schmmm.png
 Velikost:  19.98 kB
 Staženo:  153 krát



Naposledy upravil Alex005 dne čt říjen 14 2010, 10:59, celkově upraveno 1 krát.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
frantajetel11



Založen: Nov 13, 2008
Příspěvky: 1922
Bydliště: Kladno

PříspěvekZaslal: čt říjen 14 2010, 10:10    Předmět: Citovat

Hmm tak na tomhle schématu jsi nějak zapoměl propojenou zem uP s napájením Confused To asi moc fungovat nebude...
Ten program sice moc nepobírám, ale jestli se nepletu, tak ty diody prakticky vždycky blikaj zároveň? Tak nechápu, proč je nemáš na jeden výstup. A jestli jsou tam vysocesvítivý, jak jsi psal vejš, proč jsou přímo na výstupu a ne přes tranzistor? Nebude ten procák přetíženej?
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Alex005



Založen: Sep 22, 2010
Příspěvky: 63

PříspěvekZaslal: čt říjen 14 2010, 11:00    Předmět: Citovat

Ahh ano, ten kondenzátor tam byl špatně. Opravil jsem to a uploadnul namísto špatného. Takto to mám složené a funguje to. Ty vysokosvítivé diody mají 3V/20mA (svítivost 20000mCd) takže jsou napřímo.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Zobrazit příspěvky z předchozích:   
Přidat nové téma   Zaslat odpověď       Obsah fóra Diskuzní fórum Elektro Bastlírny -> Poptávka služeb, nabídky zaměstnání Časy uváděny v GMT + 1 hodina
Jdi na stránku Předchozí  1, 2
Strana 2 z 2

 
Přejdi na:  
Nemůžete odesílat nové téma do tohoto fóra.
Nemůžete odpovídat na témata v tomto fóru.
Nemůžete upravovat své příspěvky v tomto fóru.
Nemůžete mazat své příspěvky v tomto fóru.
Nemůžete hlasovat v tomto fóru.
Nemůžete připojovat soubory k příspěvkům
Můžete stahovat a prohlížet přiložené soubory

Powered by phpBB © 2001, 2005 phpBB Group
Forums ©
Nuke - Elektro Bastlirna

Informace na portálu Elektro bastlírny jsou prezentovány za účelem vzdělání čtenářů a rozšíření zájmu o elektroniku. Autoři článků na serveru neberou žádnou zodpovědnost za škody vzniklé těmito zapojeními. Rovněž neberou žádnou odpovědnost za případnou újmu na zdraví vzniklou úrazem elektrickým proudem. Autoři a správci těchto stránek nepřejímají záruku za správnost zveřejněných materiálů. Předkládané informace a zapojení jsou zveřejněny bez ohledu na případné patenty třetích osob. Nároky na odškodnění na základě změn, chyb nebo vynechání jsou zásadně vyloučeny. Všechny registrované nebo jiné obchodní známky zde použité jsou majetkem jejich vlastníků. Uvedením nejsou zpochybněna z toho vyplývající vlastnická práva. Použití konstrukcí v rozporu se zákonem je přísně zakázáno. Vzhledem k tomu, že původ předkládaných materiálů nelze žádným způsobem dohledat, nelze je použít pro komerční účely! Tento nekomerční server nemá z uvedených zapojení či konstrukcí žádný zisk. Nezodpovídáme za pravost předkládaných materiálů třetími osobami a jejich původ. V případě, že zjistíte porušení autorského práva či jiné nesrovnalosti, kontaktujte administrátory na diskuzním fóru EB.


PHP-Nuke Copyright © 2005 by Francisco Burzi. This is free software, and you may redistribute it under the GPL. PHP-Nuke comes with absolutely no warranty, for details, see the license.
Čas potřebný ke zpracování stránky 0.89 sekund