Založen: Aug 05, 2008 Příspěvky: 116 Bydliště: Praha 5
Zaslal: út listopad 15 2016, 19:36 Předmět: ATTINY4313 výstupy a propojení čítačů
1. Potřeboval bych poradit jak dosáhnout toho, aby výstup čítače TCNT0 byl na pinu PD5. Výstup na pin PB2 je bez problémů. Příkazy
TCCR0A=0b01000010;
OCR0A=250;
TCCR0B=0b00000100;
zajistí výstupna pin PB2. Ovšem příkazy
TCCR0A=0b00010010;
OCR0B=250;
TCCR0B=0b00000100;
výstup na pin PD5 neprovedou. A já nejsem schopen zjistit proč.
2. Je vůbec možné propojit výstup čítače0 se vstupem čítače1 bez drátů?
Předpokládal jsem, že když nastavím výstup čítače0 na pin PD5 a zároveň nastavím pin PD5 jako externí vstup čítače1, že by to eventuálně mohlo fungovat. Jak je vidět předpoklad nebyl nejlepjší a proto hledám někoho kdo by mně poradil.
Díky za každou radu.
Když používáš CTC režim, musíš nastavit OCR0A, protože určuje periodu. OCR0B pak musí mít menší nebo stejnou hodnotu jako OCR0A, aby se OC0B překlápěl.
Ano zapojit čítače do "kaskády" lze a taky se to tak dělá už několik let.
Oba TCNT0 i TCNT1 mají možnost externího vstupu.
Oba TCNT0 i TCNT1 mají možnost výstupu na pin.
Budeš potřebovat jeden drátek, kterým propojíš fyzicky výstup jednoho do vstupu druhého.
Lze takto TCNT0 -> TCNT1 nebo takto TCNT1 -> TCNT0
pozn. je třeba mít otevřený datasheet a udělat několik testů, než je sw odladěn.
Pokud myslýš např. toto:
TCCR0A=0b01010010;
OCR0A=250;
OCR0B=250;
TCCR0B=0b00000100;
tak to jsem též zkusil a na pinu PD5 kde nictu nic.
Nemyslým, myslím. A to máš blbý, mně to tu na bastl desce bez problému funguje i s tím "bezdrátkovým" propojením T0 a T1. Co třeba nastavit pin PD5 jako výstupní?
kód:
.include "tn2313def.inc"
.cseg
.org 0
rjmp RESET ; Reset Handler
RESET: cli
ldi R16,low(RAMEND)
out SPL,R16 ; Zasobnik na konci RAM
ldi R16,(1<<3)
out DDRB,R16 ; PB3 out
ldi R16,$0FF
out PORTB,R16 ;
ldi R16,(1<<5)
out DDRD,R16 ; PD5 out
ldi R16,$0F7
out PORTD,R16 ;
Založen: Aug 05, 2008 Příspěvky: 116 Bydliště: Praha 5
Zaslal: čt listopad 17 2016, 11:36 Předmět:
Tak se tak Lesanko hned nedurdi, to víš mužský občas myslí tvrdě. A že to mám blbý(é), to vím už dávno, zvlášť když jsem assembler viděl naposledy asi před 100 lety a tak vůbec nerozumím proč nastavuješ pin PB3 jako výstupní když výstup čítače0 je na pinu PB2. Dále vůbec nechápu význam příkazů
ldi R16,$0F7
out PORTD,R16 .
Jinak si myslím, že v mém céčkovském kodu je to samé, včetně příkazu na nastavení pinu PD5 jako výstupního pinu.
Při včerejším laborováním jsem zjistil, že když nastavím čítač0 na normální mod (0b01010000), tak se signál objeví na obou pinech. Takže nejspíš bude chybička někde v nastavení registrů, ale kde. Nenapadá Tě něco, Lesanko?
PB3 nastavuju na výstup proto, že mě zajímá výstup A čítače 1, abych viděla, že funguje to zřetězení. Naopak výstup A čítače 0 mě vůbec nezajímá, protože použitý je jen výstup B na pinu PD3.
ldi R16,$0F7
out PORTD,R16
mělo být správně
ldi R16,$7F
out PORTD,R16
Ale to je celkem vedlejší, jen se tím nastavují na vstupních pinech pull-up odpory, aby vstupy nevlály ve vzduchu a procesor zbytečně moc nežral. Kde máš chybu v programu říct neumím, jelikož jsi ho sem celý nedal.
Jinak k tomu nastavování registrů je lepší používat názvy bitů + rotace, tj.
TCCR0A=(1<<COM0A0)|(1<<COM0B0)|(1<<WGM01);
místo
TCCR0A=0b01010010;
Je to mnohem přehlednější, vychytá se tím řada chyb (překlepů) a je to i částečně procesorově nezávislé.
Založen: Aug 05, 2008 Příspěvky: 116 Bydliště: Praha 5
Zaslal: čt listopad 17 2016, 18:28 Předmět:
Přiznám se, že jsem netušil,že pull-up odpory snižují spotřebu procesoru, spíš jsem si myslel, že omezují možnost nákazy v tom sychravém povětří. Holt učit se, učit se musí člověk i na stará kolena, pak se možná i amatérům bude zdát i složitý zápis profíka trochu čitelnější.
Ten můj veleprogram vypadá následovně:
ddrd=0b0000000;
portd=0b0100000;
ddrb=0b11111111;
portb=0b00000000;
TCCR0A=0b01010010;
TCCR1A=0B01000000;
OCR0A=250;
OCR0B=250;
TCCR0B=0b00000100;
těchto pár příkazů mi vyexportuje podělený systémový kmitočet na pin PB2, ale na PD5 nikoli. A pokud změním TCCR0A=0b01010010; na TCCR0A=0b01010000; tak to funguje.
Podle tebe by pak stačil příkaz TCCR1B=0b00001111; a čítače by se propojily do kaskády tak, jak jsem si to představoval.
Teď už jen najít tu chybu.
Založen: Aug 05, 2008 Příspěvky: 116 Bydliště: Praha 5
Zaslal: čt listopad 17 2016, 22:00 Předmět:
Tak se zase hned nedurdi, Lesanko, originál program Ti zaslat nemůžu neboť sedím cca 160km od svého bastlířského kutlochu a u sebe mám pouze papírovou verzi původníého programu. Z té původní verze zbylo pro potřeby ověření možnosti propojení čítačů jen pár řádků. Věř mi, že jsem si kombinováním a nastavením vyhrál hodně dlouho, než jsem se obrátil na toto forum. Až se v sobotu vrátím domů, zkusím nějakým způsobem přeložit Tvůj assemblerovský kod a naprogramovat třeba ATTINY2313 abych vyloučil eventuální chybu překladače a programátoru. No, apokud to nebude k ničemu a Ty už mi nic jiného neporadíš, budu nejspíše donucen jít dělat něco užitečnějšícho.
Dobrou noc
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
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.