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í 

ATmega8 negovanie bitu

 
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
MiLe



Založen: Oct 18, 2005
Příspěvky: 123

PříspěvekZaslal: čt červenec 05 2007, 9:52    Předmět: ATmega8 negovanie bitu Citovat

Ahojte,
velmi by mi pomohla pomoc s nasledovnym problemom - chcem negovat jeden bit vystupneho portu bez toho, aby som nejak ovplivnil dalsie bity... Ako nato? Nenasiel som na to ziadnu instrukciu ako je napr. v klasickych atmeloch napr.: cpl P1.7. Este teda podotknem, ze to programujem v assembleri pre AVR. Zrejme na to bude potrebny nejaky podprogramik ale vsetky moje napady sa mi javia zlozite a neverim, ze by sa to nedalo napisat pomocou 2-3 instrukcii...
Prosim poradte!
Vdaka
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
coat



Založen: Jun 13, 2007
Příspěvky: 68
Bydliště: BRNO

PříspěvekZaslal: čt červenec 05 2007, 10:44    Předmět: negace Citovat

Zdravím. Tam toho asi moc nevymyslíš, instrukce přímo pro negaci pinu v AVR skutečně není. Bych si pro to třeba rezervoval jeden registr, který bych negoval instrukcí com a pak to vypouštěl na ten pin asi takhle.
Pokaždé když zavoláš tenhle podprogram tak se např. pin 5 překlopí.

NEGA: com R20 ;one´s complement
sbrc R20,5 ;Skip if Bit in Register Cleared
cbi PORTD,5 ;Clear Bit in I/O Register
sbrs R20,5 ;Skip if Bit in Register Set
sbi PORTD,5 ;Set Bit in I/O Register
ret
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
MiLe



Založen: Oct 18, 2005
Příspěvky: 123

PříspěvekZaslal: čt červenec 05 2007, 11:38    Předmět: Citovat

Coat: DAKUJEM
je to presne to co som hladal - elegantne a jednoduche!
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
MiLe



Založen: Oct 18, 2005
Příspěvky: 123

PříspěvekZaslal: čt červenec 05 2007, 11:44    Předmět: Citovat

... az nato, ze bez toho com R20, lebo potom je to negovane 2x a vysledok je tym padom rovnaky...
miesto com R20, treba napisat in R20, PORTD. Aspon podla mna.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
jankop



Založen: Apr 04, 2007
Příspěvky: 679

PříspěvekZaslal: čt červenec 05 2007, 12:16    Předmět: Citovat

AVR nedovede XOR mezi bitovou maskou - literálem a výstupním registrem? To bych považoval za standardní řešení při potřebě negovat jeden z řady výstupních bitů.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail Zobrazit autorovy WWW stránky
coat



Založen: Jun 13, 2007
Příspěvky: 68
Bydliště: BRNO

PříspěvekZaslal: čt červenec 05 2007, 13:12    Předmět: Citovat

pro Mile: s tím "com" to funguje, i když jak to píšeš ty je to asi lepší v tom, že ten registr pak můžeš používat i někde jinde.

pro jankop: s tím xor je to asi uplně nejlepší:


NEGA: in R16,PORTD
ldi R17,0b00100000 ;neguj 5. bit
eor R16,R17 ;EX-OR
out PORTD,R16
ret
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
MiLe



Založen: Oct 18, 2005
Příspěvky: 123

PříspěvekZaslal: čt červenec 05 2007, 16:06    Předmět: Citovat

Pani, diky za navrhy... tusim tu budem dotazy pisat castejsie Smile
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
coat



Založen: Jun 13, 2007
Příspěvky: 68
Bydliště: BRNO

PříspěvekZaslal: čt červenec 05 2007, 17:05    Předmět: Citovat

Jenom ještě doplním. Např. u attiny2313 jde tohle překlápění dělat jednoduše zapsáním 1 do registru PIN: sbi PIND,3
Poté se bit 3 v PORTD neguje.
V datasheetu je to pod názvem "Toggling the Pin".
U atmega8 tohle zrovna nefunguje.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
MiLe



Založen: Oct 18, 2005
Příspěvky: 123

PříspěvekZaslal: pá červenec 06 2007, 9:15    Předmět: Citovat

Coat - zdasa, ze sa vyznas! robis casto s AVRkami? Ja som doteraz len s Atmelmi x51 ale chcem sa naucit riadne aj AVR. S tymto by si nevedel poradit? Som robil dnes pokusy so znizovanim spotreby na ATmega8, nastavil a pripojil som krystal 32,768kHz aj to s tym paradne chodi lenze mi to viackrat nejde preprogramovat Sad. Pouzivam Ponyprog a vyzera to tak, ze funguje len ked je nastaveny interny oscilator. Odkedy som nastavil konfiguracnymi bitmi externy neda sa ani citat ani zapisovat... Asi budem musiet nastavit konfiguracne bity na interny oscilator na nejakom inom programatore vsak?
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
istrasil



Založen: Jul 30, 2005
Příspěvky: 71
Bydliště: Brno

PříspěvekZaslal: pá červenec 06 2007, 11:15    Předmět: Citovat

Jestli jde na ponyprogu nastavit pomalejsi frekvence prenosu dat po ISP, tak to zkus. Je potreba, aby na vodici SCK byla frekvence nizsi nez 1/4 hodin, tj. pro tebe neco pod 8 kHz.
Jinak:
a) sehnat jiny programator, ktery toto umi (ja mam AVR Dragon, kde se da nastavit ISP frekvence od 51 Hz do 8 MHz)
b) vnutit procesoru vyssi frekvenci hodin zvnejsku (misto Xtalu pripojit vystup treba 4 MHz z generatoru nebo treba z RC oscilatoru z nejakych hradel apod.)
c) pouzit paralelni programovani (nebo JTAG, kdybys mel procesor, ktery ho umi) - tyto metody nemaji problemy u procesoru bez hodin. kmitoctu nebo s jeho nizkou frekvenci

Problemy s nizkou hodinovou frekvenci jsou i pri pouzivani DebugWire, ale az pri frekvencich hodin pod cca. 100 kHz a je to loterie, nekdy bezi a jindy ne.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovy WWW stránky
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
Strana 1 z 1

 
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.15 sekund