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í 

RC spínač v Bascomu
Jdi na stránku 1, 2  Další
 
Přidat nové téma   Zaslat odpověď       Obsah fóra Diskuzní fórum Elektro Bastlírny -> Programování PIC, ATMEL, EEPROM a dalších obvodů
Zobrazit předchozí téma :: Zobrazit následující téma  
Autor Zpráva
denny_ul



Založen: Sep 14, 2015
Příspěvky: 30
Bydliště: Ústí n.L.

PříspěvekZaslal: po září 14 2015, 17:39    Předmět: RC spínač v Bascomu Citovat

Mohl by někdo, kdo programuje Atmely v bascomu a programoval někdy RC spínač, napsat sem jak by vypadal program, který by se choval takto:

pokud by na určitém vstupu ATTINY byl impuls >1,3ms bude aktivní určitý výstup

pokud bude impuls >1,7ms budou aktivní dva výstupy

chtěl bych z toho pochopit jak se měří ta šířka toho impulsu

předem dík všem dobrým duším za jakoukoliv radu Smile
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
ujosvec



Založen: Aug 07, 2008
Příspěvky: 283

PříspěvekZaslal: po září 14 2015, 19:24    Předmět: Citovat

mrkni tady
http://www.mikrocontroller.net/topic/271756

_________________
Dell INSPIRON N7110-Intel i7-2630QM-8G RAM-GT525M/1G-SSD-256G-Win8-64bit
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
hakamusai



Založen: Apr 17, 2007
Příspěvky: 943

PříspěvekZaslal: po září 14 2015, 21:27    Předmět: Citovat

šířku impulzu lze měřit za pomocí Timeru.Při náběžný hraně se spustí Timer , při sestupný se Timer zastaví a přečte hodnota.Je potřeba správně Timer inicializovat.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
denny_ul



Založen: Sep 14, 2015
Příspěvky: 30
Bydliště: Ústí n.L.

PříspěvekZaslal: po září 14 2015, 21:29    Předmět: Citovat

ujosvec napsal(a):
mrkni tady
http://www.mikrocontroller.net/topic/271756

Dík, netušil jsem že by to mohlo být až tak jednoduché, hned jak budu moc tak to vyzkouším Surprised
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
mtajovsky



Založen: Sep 19, 2007
Příspěvky: 3698
Bydliště: Praha

PříspěvekZaslal: po září 14 2015, 21:52    Předmět: Citovat

Jednoduché, ale ne moc dokonalé. Pokud bude ten puls velmi dlouhý, třeba až nekonečný, bude platit podmínka t>1.7 ms, ale oba dva výstupy nebudou aktivní. Pulsein neskončí a nic se nevyhodnotí.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
denny_ul



Založen: Sep 14, 2015
Příspěvky: 30
Bydliště: Ústí n.L.

PříspěvekZaslal: po září 14 2015, 22:22    Předmět: Citovat

mtajovsky napsal(a):
... Pokud bude ten puls velmi dlouhý ... Pulsein neskončí a nic se nevyhodnotí.

Co je to "velmi dlouhý"? Ten puls by měl mít šířku 1 - 2ms s opakováním po 20ms.

hakamusai napsal(a):
šířku impulzu lze měřit za pomocí Timeru a náběžný/sestupný hrany ...

tohle bude asi o dost složitější, mohl by někdo poradit jak by to vypadalo?
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
mtajovsky



Založen: Sep 19, 2007
Příspěvky: 3698
Bydliště: Praha

PříspěvekZaslal: po září 14 2015, 23:00    Předmět: Citovat

denny_ul napsal(a):
mtajovsky napsal(a):
... Pokud bude ten puls velmi dlouhý ... Pulsein neskončí a nic se nevyhodnotí.

Co je to "velmi dlouhý"?
V zadání úlohy není nic o omezení délky pulsu. Dokud puls neskončí, nic se nebude dít, takže puls > 1,7 ms je taky puls - 1 minuta, třeba. Jenže po té 1,7 ms se nic nenastaví, bude se čekat celou minutu. Toť k algoritmu. V případě Pulsein je maximální vrácená hodnota 65535 x 10 µs defaultně, timeout i časová jednotka se dají nastavit, nicméně zadání není splněno.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
denny_ul



Založen: Sep 14, 2015
Příspěvky: 30
Bydliště: Ústí n.L.

PříspěvekZaslal: po září 14 2015, 23:20    Předmět: Citovat

Ten puls vypadá takto v závislosti na poloze kniplu vysílače


pwm[1].jpg
 Komentář:

Stáhnout
 Soubor:  pwm[1].jpg
 Velikost:  19.15 kB
 Staženo:  83 krát



Naposledy upravil denny_ul dne st září 16 2015, 8:28, celkově upraveno 1 krát.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
jova1



Založen: Dec 20, 2007
Příspěvky: 1249
Bydliště: Chýnov - to je kousek od Tábora

PříspěvekZaslal: út září 15 2015, 6:49    Předmět: Citovat

Pokud by jsi netrval na tom Atmelu a bascomu, dalo by se to vyřešit jednoduše pomocí PICAXE. Má na to přímo dělané příkazy.
Já sem v něm děla ovládání fotoaparátu CANON: http://www.rcmania.cz/viewtopic.php?f=41&t=66817&p=1127375&hilit=canon#p1127296
Více najdeš zde: http://www.picaxe.cz/wp-content/uploads/Picaxe-procesor-pro-neprogram%C3%A1tory-RCR.pdf
Od strany 14.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovy WWW stránky
AB1



Založen: Nov 23, 2009
Příspěvky: 312

PříspěvekZaslal: út září 15 2015, 9:05    Předmět: Citovat

Zkus
kód:
Dim Time1 As Word
Dim Time2 As Word
Dim Krok As Long
Dim Sirka_pulsu As Long

   Config Timer1 = Timer , Prescale = 1

   Config Pinb.0 = Input

   Krok = 1000000000 / _xtal            '1 krok čítače [nanosec]

   Bitwait Pinb.0 , Reset

'*******************************************************

Do
   Bitwait Pinb.0 , Set                 'čekej na úroveň "1"
   Time1 = Tcnt1                        'zapiš stav čítače
   Bitwait Pinb.0 , Reset               'čekej na úroveň "0"
   Time2 = Tcnt1                        'zapiš stav čítače

   Sirka_pulsu = Time2 - Time1          'kroků čítače
   Sirka_pulsu = Sirka_pulsu * Krok     '[nanosec]
   Sirka_pulsu = Sirka_pulsu / 1000     '[microsec]

   Print Sirka_pulsu

Loop

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



Založen: Sep 14, 2015
Příspěvky: 30
Bydliště: Ústí n.L.

PříspěvekZaslal: út září 15 2015, 9:52    Předmět: Citovat

Tak jsem vyzkoušel tento program v mé konstrukci (vstup-PB0, výstupy PB3 a PB4) a nějak to nechce fungovat.
kód:

$regfile = "attiny13a.dat"
$crystal = 9600000
$hwstack = 16
$swstack = 8
$framesize = 24

Config Portb.0 = Input
Config Portb.3 = Output
Config Portb.4 = Output
Dim W As Word
Do
Pulsein W , Pinb , 0 , 1

If W > 170 And W <= 200 Then
Portb.3 = 1
Else
Portb.3 = 0
End If
If W <= 130 And W > 100 Then
Portb.4 = 1
Else
Portb.4 = 0
End If
Loop
End

poradí někdo co s tím, nebo jak by to vypadalo s měřením té náběžné/sestupné hrany?
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
mtajovsky



Založen: Sep 19, 2007
Příspěvky: 3698
Bydliště: Praha

PříspěvekZaslal: út září 15 2015, 11:04    Předmět: Citovat

Action
Returns the number of units between two occurrences of an edge of a pulse.

PULSEIN var , PINX , PIN , STATE

STATE: May be 0 or 1.
0 means sample 0 to 1 transition.
1 means sample 1 to 0 transition.

kód:
Pulsein W , Pinb , 0 , 1

bude měřit dobu mezi dvěma přechody z log. 1 do log 0. To bude podle obrázku zadání 10-22 ms, což při defaultní granularitě 10 µs dává číslo 1000 - 2200 do proměnné W.

Je ale třeba měřit dobu mezi přechody 0->1 a 1->0, což PULSEIN podle popisu nedělá. Zkus kód s měřením způsobem jak to naznačil AB1. Ten bych ještě doplnil před smyčkou úvodním čekáním na úroveň 0 pro případ, že by se program spustil v okamžiku, kdy je signál v úrovni 1.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
Ruprecht



Založen: Sep 28, 2005
Příspěvky: 1287
Bydliště: ZČ + JM

PříspěvekZaslal: út září 15 2015, 12:44    Předmět: Citovat

citace:
of an edge

Měří to délku log.0 nebo 1
When state 0 is used, the routine will wait until the level on the specified input pin is 0. Then a counter is started and stopped until the input level gets 1.

Jak máš fuse bity? Běží ta tiny na 9,6MHz?
Jak máš udělaný vstup? Přímo signál z přijímače nebo tranzistor na vstupu tiny + vnitřní pullup?

_________________
Kampaň, účelovka, nepodepsal, Palermo, ODS, Kalousek, je líp a jsou na to čísla, nastudujte si to.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
denny_ul



Založen: Sep 14, 2015
Příspěvky: 30
Bydliště: Ústí n.L.

PříspěvekZaslal: út září 15 2015, 14:51    Předmět: Citovat

Takže nakonec jsem to přeci jen rozchodil takto:
Signál je přímo z přijímače.
kód:
$regfile = "attiny13.dat"
$crystal = 1000000
$hwstack = 16
$swstack = 8
$framesize = 24

 Config Portb.0 = Input
 Config Portb.3 = Output
 Config Portb.4 = Output

 Dim Puls As Byte
 Dim Dolni As Byte
 Dim Horni As Byte

 Dolni = 130
 Horni = 160

Aaa:
Pulsein Puls , Pinb , 0 , 0

If Puls < Dolni Then
Portb.3 = 0
Portb.4 = 0
End If

If Puls > Dolni And Puls < Horni Then
Portb.3 = 1
Portb.4 = 0
End If

If Puls > Horni Then
Portb.3 = 1
Portb.4 = 1
End If

Goto Aaa

End


Ještě jednou díky všem za pomoc.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Ruprecht



Založen: Sep 28, 2005
Příspěvky: 1287
Bydliště: ZČ + JM

PříspěvekZaslal: út září 15 2015, 16:03    Předmět: Citovat

To goto není hezké. Je sice funkční, ale fakt není hezké Smile
Hlavní smyčka je Do ... Loop
Podmínky jdou napsat trochu čitelněji (třeba Select Case)
Pro konstanty není třeba zabírat místo v paměti deklarováním proměnných, stačí jako konstanty (Const)
Proměnná puls by měla být pro jistotu naopak deklarována jako word (má 16-bit, viz help: A 16 bit counter is used. A time out will occur after 65535 unit counts. With 10 uS units this will be after 655.35 mS).
Podle $crystal = 1000000 to vypadá, že používáš externí xtal. Pokud používáč vnitřní RC, nastav 4,8MHz nebo 9,6MHz (viz fusebity)
Pro přehlednost je dobré používat pro vstupy a výstupy aliasy (lidské názvy místo portů/pinů)

kód:

$regfile = "attiny13.dat"
$crystal = 9600000
$hwstack = 16
$swstack = 8
$framesize = 24

Config Portb.0 = Input
Config Portb.3 = Output
Config Portb.4 = Output

Vystup1 alias Portb.3
Vystup2 alias Portb.4

Dim Puls As Word
Const Dolni = 130
Const Horni = 160

Do
  Pulsein Puls , Pinb , 0 , 0

  Select Case Puls

    Case is < Dolni:
      Vystup1 = 0
      Vystup2 = 0

    Case Dolni to Horni:
      Vystup1 = 1
      Vystup2 = 0

    Case is > Horni:
      Vystup1 = 1
      Vystup2 = 1

  End Select

Loop
End

A nejsem si jistý, jestli tou poslední nulou v "Pulsein Puls , Pinb , 0 , 0" nedetekuješ log.0 (nemůžu vyzkoušet). Ono to teď fungovat může, ale s jiným přijímačem s jinou frekvencí opakování pulsů to pak nemusí fungovat správně i když vlastní pulsy budou 1-2ms...

_________________
Kampaň, účelovka, nepodepsal, Palermo, ODS, Kalousek, je líp a jsou na to čísla, nastudujte si to.
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 -> Programování PIC, ATMEL, EEPROM a dalších obvodů Časy uváděny v GMT + 1 hodina
Jdi na stránku 1, 2  Další
Strana 1 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.29 sekund