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í 

Přerušení u ATTiny2313
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
epes



Založen: Aug 05, 2008
Příspěvky: 116
Bydliště: Praha 5

PříspěvekZaslal: čt leden 20 2011, 15:10    Předmět: Přerušení u ATTiny2313 Citovat

Potřeboval bych pomoci s externím přerušením u Tiny2313 apod. Přerušení s INT0 a s INT1 jasem už jakž takž zvládl, ale stále nejsem schopen používat přerušení PCIE. Zřejmě neumím nastavit řádně příslušné registry a také vlastně nevím, kde se dají nastavit alternativní fce všech pinů - tedy hlavně PCINT0-7.
Poradí mi někdo?
Díky
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
Andrea



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

PříspěvekZaslal: čt leden 20 2011, 15:15    Předmět: Citovat

Alternativní fce PCINT se nikde nenastavuje, prostě jen povolíš PCINT od konkrétního pinu v registru PCMSK a povolíš PCINT v GIMSK (bit PCIE).
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
epes



Založen: Aug 05, 2008
Příspěvky: 116
Bydliště: Praha 5

PříspěvekZaslal: čt leden 20 2011, 16:08    Předmět: Citovat

Andreo,

díky za radu, problém je ale v tom, že to co mi radíš jsem zkusil alespoň 10x a stejně to nefunguje. Problém je dost možná v adresaci obslužné rutiny, nebo také v AVR Studio, kde ručně měním nastavení registrů. Také je možné, že už pro oči nevidím a tak podobně. Pro jistotu, zde je můj zkušební kód.
Díky
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
Andrea



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

PříspěvekZaslal: čt leden 20 2011, 16:17    Předmět: Citovat

Asi taky pro samé oči nevidím ten kód. Ale tohle chodí:
kód:

   ldi R16,(1<<2)      ; Povoleni PCINT2
   out PCMSK,R16
   ldi R16,(1<<PCIF)   ; Shozeni PCIF
   out EIFR,R16
   in R16,GIMSK
   sbr R16,(1<<PCIE)   ; Povoleni preruseni od Pin Change
   out GIMSK,R16
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
epes



Založen: Aug 05, 2008
Příspěvky: 116
Bydliště: Praha 5

PříspěvekZaslal: čt leden 20 2011, 17:14    Předmět: Citovat

Neboj Andreo, oči máš určitě dobré, to jen mně už šedá kůra nějak neslouží.
Tak tady je ten kod?

int cnt = 0;
// Global variable cnt

void interrupt_ISR() org 0x0b
{ // Interrupt rutine
SREG_I_bit = 0; // Disable Interrupts
cnt++; // Increment variable cnt
SREG_I_bit = 1; // Enable Interrupts
}

void main()
{ int a; // Main program


DDRD = 0xF7; // Set PD3 as input
DDRB = 0xFF; // Set PortB as output

PORTD = 0x00;
PORTB = 0xFF; // Starting value for PortD
// Set the Interrupts
// MCUCR = 0b00000100; // Configure Interrupt for falling edge on PortD.3
// gimsk=0b10000000;
SREG_I_bit = 1; // Enable Interrupts

while(1){ // Unending loop
PORTB = cnt; // Write on PortB value of varibale cnt
}
}

Jinak assembler jsem už asi 50 let neviděl, ale řekl bych, že je to co dělám ručně v AVR Studiu.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
Andrea



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

PříspěvekZaslal: čt leden 20 2011, 18:09    Předmět: Citovat

Nějak v tom kódu nevidím nic kolem toho PCINT.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
piitr



Založen: Oct 19, 2007
Příspěvky: 1003

PříspěvekZaslal: čt leden 20 2011, 18:16    Předmět: Citovat

Zkusil jsi ten cnt definovat takhle?
kód:
volatile int cnt = 0;
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovy WWW stránky
epes



Založen: Aug 05, 2008
Příspěvky: 116
Bydliště: Praha 5

PříspěvekZaslal: čt leden 20 2011, 18:18    Předmět: Citovat

V kodu to není, dělám to ručně v AVR studiu. Nastavuji bity přímo při krokování programu. Při laborování nemusím tak stále přepisovat program.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
Andrea



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

PříspěvekZaslal: čt leden 20 2011, 18:20    Předmět: Citovat

Tak do toho, co tam datluješ, nevidím, ale jak chceš používat PCINT, když máš celý PortB nastavený jako výstup?
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
epes



Založen: Aug 05, 2008
Příspěvky: 116
Bydliště: Praha 5

PříspěvekZaslal: čt leden 20 2011, 18:27    Předmět: Citovat

Hned to jdu zkusit
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
epes



Založen: Aug 05, 2008
Příspěvky: 116
Bydliště: Praha 5

PříspěvekZaslal: čt leden 20 2011, 18:41    Předmět: Citovat

Tak jsem z toho jelen.
Nastavím PCIE v GIMSK a PCMSKO v PCMSK - takže jestli se nemýlím, PINB0 by měl reagovat na změnu hodnoty vyvoláním přerušení.

Při krokování programu ve smyčce WHILE změním hodnotu pinu B0 - nato reaguje pouze bit PCIF v EIFRu a nic jiného se neděje, jprogram pokračuje stále ve smyčce While.
Přitom pokud použiji INT0 či INT1 a nastavím MCUR a GIMSK, tak to funguje.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
epes



Založen: Aug 05, 2008
Příspěvky: 116
Bydliště: Praha 5

PříspěvekZaslal: čt leden 20 2011, 19:28    Předmět: Citovat

Port B se pochopitelně dá v AVR studiu kdykoliv nastavit jinak.Nicméně zkusil jsem vše nastavit přímo v kódu a zjistil jsem jednu věc nemilou. Kódem mi nejde nastavit 5. bit v registru GIMSK -onen bit PCIE. 6. a 7. bit přitom nastavit programově lze. Ať zadám GIMSK=0x20, nebo GIMSK=0b00100000 do registru se uloží hodnota 0x08!!! Přito ručně ten bit nastavit lze správně. Buď je něco shnilého v překladači, nebo spíše v AVR Studiu.
Vzhledem k tomu, že už mě máš nejspíš dost a patrně si už dáváš nějakou dobrou večeřičku, jdu dělat něco podobného, neboť mám plné zuby a prázdný bachor.

Přeji hezký večer
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
epes



Založen: Aug 05, 2008
Příspěvky: 116
Bydliště: Praha 5

PříspěvekZaslal: pá leden 21 2011, 13:31    Předmět: Přerušení u ATTiny2313 Citovat

Milá Andreo, bose týmový!

I když se již neozýváš, chtěl bych Ti touto cestou poděkovat za snahu pomoci mně s mým trápením.
Problém se vyřešil v momentě kdy jsem naprogramoval jednu AT2313 a zapojil ji s pár ledkami a spustil program. Přerušení fungovalo jak mělo!!! i když simulátor v AVR Studiu ukazoval něco jiného. AVR Studio jsem odinstlaloval a nainstaloval jej znovu se všemi aktualizacemi. Chování simulátoru se troch změnilo k lepšímu - přerušení začalo fungovat, nic méně signalizace nastavení registru GIMSK nefunguje stejně. A vzhledem k tomu, že se takto AVR Studio chová na dvou PC stejně, usuzuji spíše na chybu ve Studiu než na nepodařené instalaci.
Pokud máte někdo podobné zkušenosti, dejte vědět.

Hezký víkend všem.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
Andrea



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

PříspěvekZaslal: pá leden 21 2011, 14:06    Předmět: Citovat

Možná proto žádné simulátory nepoužívám, simuluju v hlavě a ladím v reálném hardwaru, takže mi stačí textový editor a assembler. I když i assemblerský překladač umí vypéct. V jedné z prvních verzí avrasm byla chyba, ldi Rx,y se občas přeložilo jako ldi Rx,0. Rolling Eyes
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
epes



Založen: Aug 05, 2008
Příspěvky: 116
Bydliště: Praha 5

PříspěvekZaslal: pá leden 21 2011, 15:08    Předmět: Citovat

Tedy Andreo,
jseš Ty vůbec ženská? Moje dcera simulovala a simuluje dodnes kde co, ale hlavu má spíše plnou kluků. Není náhodou Andrea jen krycí název pro utajovanou pobočku Mensy? Ať už je to jak jeto, díky.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
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.14 sekund