forum.mcontrollers.com - hlavní stránka forum.mcontrollers.com - fórum

 

.: fórum - hlavní stránka :.
Technology Stronghold by Rudolf Vesely
How to build Microsoft System Center hosted cloud series
FAQFAQ HledatHledat Seznam uživatelůSeznam uživatelů Uživatelské skupinyUživatelské skupiny RegistraceRegistrace
ProfilProfil StatistikaStatistika Soukromé zprávySoukromé zprávy PřihlášeníPřihlášení

 
ATtiny25: změna frekvence oscilátoru za běhu programu
Jdi na stránku Předchozí  1, 2, 3
 
Přidat nové téma   Zaslat odpověď    Obsah fóra mcontrollers.com -> AVR
 
mpcz
Nováček
Nováček


Založen: 3.10.2017
Příspěvky: 9

PříspěvekZaslal: 14 říjen 2017, 17:26    Předmět: Citovat

Dík,
to bych rád, ale můžu "zpracovat" pouze hotový HEX nebo zkompilovat ino v IDE Arduina.
mpcz, 14.oct.2017
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
AB
Profesionál
Profesionál


Založen: 24.2.2010
Příspěvky: 420

PříspěvekZaslal: 14 říjen 2017, 17:49    Předmět: Citovat

Tak nevím, ale jestli neumíš napsat ani program pro blikání ledky, (což bývá první program začátečníků) tak by asi bylo dobré si něco přečíst, třeba aspoň

https://svetelektro.com/clanky/kniha-programujeme-avr-v-jazyku-c-557.html

Edit:
nebo
https://arduino.cz/programujeme-arduino/

Program napsaný v C můžeš zkompilovat v Arduinu, když mu přejmenuješ koncovku na .ino
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
Martin
ATmega pouzivatel
ATmega pouzivatel


Založen: 5.1.2008
Příspěvky: 1469

PříspěvekZaslal: 14 říjen 2017, 21:15    Předmět: Citovat

Ak potrebuješ iba reagovať na stlačnenie tlačítka a na základe toho niečo spraviť a potom "uspať", riešenie je velice že jednoduché.

V napájaní použi zapojenie odvodené od zapojenia dvojtlačítka. To znamená, že tlačítko privedie napájanie na mcu. MCU hneď po nábehu zopne FET paralelne zapojený k tlačítku (to sú rádovo desiatky mikrosekúnd). Nech mcu spraví čo má a napájací FET nech si následne vypne.
Nižšie so spotrebou už ťažko pôjdeš. Ak by si sa bál spotreby pri príliš dlhom stlačení tlačítka, kľudne to tlačítko môže pripnúť napájanie na mcu cez kondenzátor. Tým si zabezpečíš, že trvale stlačené tlačítko nebude trvalo napájať mcu.

Rozhodovacia úroveň času pre tlačítko (odozva na stlačenie) by nemala presiahnuť 20ms. Pri dlhšom reakčnom čase už má obsluha pocit, že tlačítko "blbne". Preto je zbytočné skenovať tlačítko 1x za 100us, úplne kľudne stačí 1x za 5ms. Už len na tom znížiš priemerný aktívny prúd 50x.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
Anonymní






PříspěvekZaslal: 15 říjen 2017, 16:08    Předmět: Citovat

to AB: je to ta 3. možnost, už jsem to tu psal několikrát. Neumím C a učit se ho nebudu z mnoha důvodů.
Umím jakž takž napsat ino v řeči Arduina, zkompilovat v IDE do HEX a poslat skrze DUDE do Tiny. Zdá se však, že tento kompilát není úplně v pořádku a dělá problémy. Zatím jsem se dostal do stavu, že TINA běží na 8kHz, což je dobrý začátek. Teď provedu metodu "sekáčku" a budu se pokoušet v TINY odpínat vše nepotřebné. Uvidíme, kam se dostanu.
mpcz, 15.oct.2017
Návrat nahoru
 

 
Anonymní






PříspěvekZaslal: 15 říjen 2017, 20:53    Předmět: Citovat

Zdravím,
mám trošku problém s děličkou osmi v TINY85. Jak to čtu, možná blbě, dá se zapnout po startu programu SW , to funguje OK. Podle pomůcek pro nastavování pojistek je ale možné děličku nastvavit přímo pojistkami, což by mi pasovalo lépe.
Je možné pojistkami nastavit clock i děličku jednorázově při programování - jednou pro vždy? Funguje to někomu?
Děkuji, mpcz, 15.oct.2017
Návrat nahoru
 

 
Balů
Profesionál
Profesionál


Založen: 29.10.2012
Příspěvky: 737

PříspěvekZaslal: 15 říjen 2017, 22:29    Předmět: Citovat

Pojistka CKDIV8 říká, jestli po startu budeš mít hodiny dělené 8 nebo ne. Nastavit děličku na jakoukoliv jinou hodnotu lze pouze softwarově. Jinak samozřejmě, co nastavíš v pojistkách při naprogramování tam zůstává stejně jako nasypaný program.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
Anonymní






PříspěvekZaslal: 16 říjen 2017, 6:12    Předmět: Citovat

Děkuji, no právě. Kde je tedy chybka?:
C:\avrdude-5.8>avrdude -B250 -c usbasp -p t85 -U lfuse:w:0x04:m -U hfuse:w:0xdf:m -U efuse:w:0xff:m ....
Toto je dle oficiální kalkulačky AVR a zdá se mi, že k dělení osmi po uploadu nedochází. Pokud přidám do programu SW dělení, tak ano.
mpcz, 16.oct.2017
Návrat nahoru
 

 
Anonymní






PříspěvekZaslal: 17 říjen 2017, 20:28    Předmět: Citovat

Zdravím,
tak problém vyřešen. Zdá se, že jak se do toho procesu zapojí kompilace v Arduino IDE, jsou problémy.
Je tu tedy otázka: je vůbec možné přepnout pojistky při uploadu a používat hex vytvořený v Arduino IDE? Mám pocit, že to stejné napsané v C++ a v Arduinu je v HEXu dost odlišné a hlavně jsou tam přidané věci, které vadí. Snažím se vyhnout učení C++, na jsem již starý a také se to pro těch pár případů neoplatí.
Děkuji, mpcz, 17.oct.2017
Návrat nahoru
 

 
AB
Profesionál
Profesionál


Založen: 24.2.2010
Příspěvky: 420

PříspěvekZaslal: 18 říjen 2017, 9:36    Předmět: Citovat

citace:
je vůbec možné přepnout pojistky při uploadu

Ano, jedině pomocí programátoru jde změnit pojistky.
Kromě pojistky CKDIV8. Ta se dá změnit i v programu přes CLKPR.

Myslím, že ten příkaz pro Avrdude máš dobře.
Můžeš potom ještě dalším příkazem pojistky přečíst, abys viděl jestli se změnily.

citace:
a používat hex vytvořený v Arduino IDE? Mám pocit, že to stejné napsané v C++ a v Arduinu je v HEXu dost odlišné


Jistě, pokud chci použít ISP programátor např. USBASP tak použiju hex z Arduina.

Porovnávat hex soubory nemá žádný význam.
Tentýž program, napsaný v různých jazycích, nebo zkompilovaný různými překladači vytvoří rozdílné hex soubory.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
mpcz
Nováček
Nováček


Založen: 3.10.2017
Příspěvky: 9

PříspěvekZaslal: 18 říjen 2017, 18:47    Předmět: Citovat

Zdravím, dík za odpověď. No ne že bych chtěl porovnávat HEXy, i mě je jasné, že každý bude jiný. Podstatné pro výsledek je, že stejný program (třeba jen prázdný nebo blikající ledka), zkompilovaný systémem:
1. psáno v ARDUINU, kompilace v IDE 1.8.5 hex vypálený AVRdude 5.8 a odesláno do tiny USBASP
2. to stejné psáno C++, kompilováno v ATMELstudio 7
má rozdíl spotřeby 20-ti násobný.
Osciloskop na noze 3 potvrzuje odpovídající snížení frekvence. To zpočátku trošku mátlo, vypadalo to, že frekvence se nesnížila, ale oscilokop to vyvrátil.
Je docela možné, že dělám při kompilaci v Arduinu dělám nějakou chybu, zatím jsem na ni nepřišel. Horší by bylo, kdyby to z principu nešlo v Arduinu programovat.
mpcz, 18.oct.2017
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
stanleyv
Profesionál
Profesionál


Založen: 5.3.2008
Příspěvky: 164

PříspěvekZaslal: 18 říjen 2017, 19:14    Předmět: Citovat

Anonymous napsal:
Zdravím,
tak problém vyřešen. Zdá se, že jak se do toho procesu zapojí kompilace v Arduino IDE, jsou problémy.
Je tu tedy otázka: je vůbec možné přepnout pojistky při uploadu a používat hex vytvořený v Arduino IDE? Mám pocit, že to stejné napsané v C++ a v Arduinu je v HEXu dost odlišné a hlavně jsou tam přidané věci, které vadí. Snažím se vyhnout učení C++, na jsem již starý a také se to pro těch pár případů neoplatí.
Děkuji, mpcz, 17.oct.2017


No ja si myslím, že pre programovanie takého AVR-ka práve C++ nepotrebuješ, tam ti stačí úplne C-ko. A ak sa s procesorom zahráš čo i len 5 krát do roka, myslím, že nie je na škodu sa to C-ko naučiť.

Nepoznám tvoj vek, ale aj tak si myslím, že naučiť sa niečo nie je nikdy na škodu, a pri hraní sa s elektronikou a hlavne s procesormi už vôbec nie, a na druhej strane to C-ko časom môžeš využiť aj pri komunikácií procesora s PC, kde si napíšeš nejaký jednoduchý program na komunikáciu či ovládanie - tam jazyk Arduina nevyužiješ.

A nie je to vôbec ťažké a pre procesor viac prijateľnejšie Smile.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
AB
Profesionál
Profesionál


Založen: 24.2.2010
Příspěvky: 420

PříspěvekZaslal: 18 říjen 2017, 19:44    Předmět: Citovat

citace:
Podstatné pro výsledek je, že stejný program (třeba jen prázdný nebo blikající ledka), zkompilovaný systémem:
1. psáno v ARDUINU, kompilace v IDE 1.8.5 hex vypálený AVRdude 5.8 a odesláno do tiny USBASP
2. to stejné psáno C++, kompilováno v ATMELstudio 7
má rozdíl spotřeby 20-ti násobný.


Předpokládám, že víc žere program z Arduina.
Arduino má tu nepříjemnou vlastnost, že je strašně "smart" a hned po resetu nastaví hromadu věcí které jsme nežádali.
Např. (i při prázdném programu) spustí timer0 pro počítaní milis(), zapne ADC atd atd. Sám nevím, co všechno nastaví, neznám ho tak detailně.

Takže pro snížení spotřeby je třeba v setupu všechno co nepotřebujeme preventivně zakázat a odpojit.
Tak to vidím já, ale v reálu jsem to nezkoušel.

Jenom pro úplnost:
Program v Arduino .ino souboru můžeme bez jakýchkoliv dalších změn napsat v C jazyku.
V tom případě zmíněné problémy odpadají.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
mpcz
Nováček
Nováček


Založen: 3.10.2017
Příspěvky: 9

PříspěvekZaslal: 18 říjen 2017, 19:48    Předmět: Citovat

To StanleyV: Prosím, k věci. Toto jsme tu již probrali a v tomto směru vím, co mám dělat.
Na fórum se obracím s technickým problémem, který už určitě někdo řešil a třeba je ochotný poradit. Samozřejmě jsem rád za každou radu, pokud ovšem vede k vyřešení problému. Jinak toto bohužel zbytečně rozptyluje pozornost.

Zdravím, dík za odpověď. No ne že bych chtěl porovnávat HEXy, i mě je jasné, že každý bude jiný. Podstatné pro výsledek je, že stejný program (třeba jen prázdný nebo blikající ledka), zkompilovaný systémem:
1. psáno v ARDUINU, kompilace v IDE 1.8.5 hex vypálený AVRdude 5.8 a odesláno do tiny USBASP
2. to stejné psáno C++, kompilováno v ATMELstudio 7
má spotřebu 20x menší.
Osciloskop na noze 3 potvrzuje odpovídající snížení frekvence. To zpočátku trošku mátlo, vypadalo to, že frekvence se nesnížila, ale oscilokop to vyvrátil.
Je docela možné, že dělám při kompilaci v Arduinu dělám nějakou chybu, zatím jsem na ni nepřišel. Horší by bylo, kdyby to z principu nešlo v Arduinu programovat.
mpcz, 18.oct.2017
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
Atlan
Profesionál
Profesionál


Založen: 4.2.2009
Příspěvky: 921

PříspěvekZaslal: 05 listopad 2017, 13:36    Předmět: Citovat

Chyba je pouzivat arduino ide na riesenie takejto veci. Urcito to ide len musis vediet co vsetko to ide v zaklade urobi s up.
Jednoduchsie bude presjt na to Cko. Ved vlastne o nic nejde ze.

Navyse ak by si to chcel robit nadalej v ide arduina, tak budes musiet pouzit prikazy C a nastavovat registre uP podla toho aky uP je pouzity. Tak ze drzat sa ide arduina nema vyznam okrem problemov.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

Zobrazit příspěvky z předchozích:   
Zobrazit předchozí téma :: Zobrazit následující téma  
Přidat nové téma   Zaslat odpověď    Obsah fóra mcontrollers.com -> AVR Časy uváděny v GMT + 2 hodiny
Jdi na stránku Předchozí  1, 2, 3
 
Strana 3 z 3
Přejdi na:  
Můžete přidat nové téma do tohoto fóra.
Můž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.
Můžete k příspěvkům připojovat soubory
Můžete stahovat a prohlížet přiložené soubory
 



Num Lock Holder - app to hold Numlock
Copyright © 2018 Rudolf Veselý, mcontrollers.com.
Je zakázáno používat části tohoto webu bez souhlasu autora. || Powered by phpBB © 2001, 2002 phpBB Group - with RedSquare DoubleJ(Jan Jaap)