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í

 
Pull-up rezistor vs GND

 
Přidat nové téma   Zaslat odpověď    Obsah fóra mcontrollers.com -> AVR
 
ok2vvv
Anonymní





PříspěvekZaslal: 26 únor 2018, 12:45    Předmět: Pull-up rezistor vs GND Citovat

Zdravím, jako začínající elektronik (v oblasti programování a procesorů) jsem se začal zabývat AtTiny13. Programuji v arduino programu, do kterého jsem si stáhnul překladač pro attiny. Zatím mám dost problémů, ale mám strach programovat v asembleru apod, protože je to moc složitý jazyk. Mám dva dotazy.
1. Stále mi funguje A/D převodník jen na pinu 2 a nikde jinde. Někdo mi říkal že je potřeba v programu přepínat vstupy, ale stejně mi to nefunguje. Pokud mám jednoduše zvolen například PB2 jako vstup tak nefunguje.

2. Narazil jsem na zapojení ledek v matici. Problém je, že v zapojení je potřeba aby výstupy někdy tvořili plus napájení a někdy mínus. Vím, že attiny 13 má pull-up rezistor, díky kterému dokáže udělat 5V. Dokáže ale díky LOW hodnotě výstup uzemnit a tím vytvořit obvod spolu s dalším výstupem v HIGH?

https://www.google.cz/search?q=Funkce+vstupn%C4%9B-v%C3%BDstupn%C3%ADch+pin%C5%AF+attiny45&rlz=1C1AOHY_csCZ710CZ710&source=lnms&tbm=isch&sa=X&ved=0ahUKEwj7tN67rsPZAhWDaFAKHR57BsIQ_AUICigB&biw=1680&bih=892#imgrc=YtEtByZnNpNeIM:

http://fritzing.org/projects/charlieplex-snowfallshooting-star-20-leds

Díky za odpověď. (ps: mám přejít na programování v céčku nebo zůstat u arduino programování? )
Návrat nahoru
 

 
Divous
Profesionál
Profesionál


Založen: 24.4.2009
Příspěvky: 226
Bydliště: Valašsko

PříspěvekZaslal: 26 únor 2018, 13:56    Předmět: Citovat

Ahoj.
1.) Zkus sem hodit zdroják, ať můžeme vydedukovat, kde děláš chybu.
2.) Nějak jsem se v tom tvém vysvětlování ztratil, ale asi takto:
Vnitřní pull-up má zhruba 20-50kOhm, což při 5V dělá proud max. 0,25mA.
S tímto proudem nemáš šanci ledku rozsvítit. Proto se při svícení LED programují výstupy jako totemy.
POZOR: Odpor tam však musí být a tak se vkládá zpravidla do anod LEDek. (Viz. tvé schéma)
Velikost odporu si musíš napočítat sám dle typu LEDek.

_________________
AVR Studio 4.18 + WinAVR, AVR Studio 6.2
Elnec T51prog, ASIX PRESTO, AVR MKII
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
 

 
Anonymní






PříspěvekZaslal: 26 únor 2018, 14:15    Předmět: Citovat

Nevím teď přesně jak kód byl, ale jednoduchý příklad na kterém jsem to testoval je níže. Jde jednoduše o to, že potenciometrem měním napětí na vstupu a stejně tak se měnil jas LED diody na výstupu.

Problém je, že pokud dám vstup například 2 nebo 4 tak to nefunguje. Čte to napětí jen a pouze na vstupu 3.

void setup() {

pinMode(0, OUTPUT);
pinMode(3, INPUT);


}

void loop() {
analogWrite(0, analogRead(3));
}


-----

K druhé části otázky, už znám odpověď. AtTiny dokáže jak uzemňovat tak připojovat + napětí. Takže to jen doma ještě ozkouším.
Návrat nahoru
 

 
Balů
Profesionál
Profesionál


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

PříspěvekZaslal: 26 únor 2018, 16:47    Předmět: Citovat

1) analogRead(Parametr) - Co ten parametr znamená ? Pin procesoru ? Kanál AD převodníku ?
2) analogWrite(Parametr1, Hodnota) - Stejná otázka jako 1)
3) pinMode(Paratmetr1, Hodnota) - Stejná otázka jako 1)

ad 1) analogRead(3)
- Pokud je to na pouzdru pin 3, tak je to na AD převodníku kanál 2, IO pin B4 (brána B, bit 4).
- Pokud je to na AD převodníku kanál 3, tak je to na pouzdru pin 2, IO pin B3 (brána B, bit 3).

ad 2) analogWrite(0, hodnota)
- žádný AVR procesor nemá analogový výstup. Analog se tvoří pomocí PWM. Jenže HW PWM má ATtiny13 jenom 2 - a to OC0A a OC0B - tedy oba jsou 0.

ad 3) pinMode(0, hodnota)
- Co je ten první parametr zač ? Pouzdro nemá pin 0, takže to vypadává ze hry.



Moje rada je :

1) Vezmi si datasheet a postupuj podle datasheetu - nastavení pinů, nastavení periferií, nastavení časovačů atd.

2) Zapomeň na Arduino - to je prostě hroznej paskvil. Použij ho maximálně jako programovací prostředí, pomocí kterého program nejenom přeložíš, ale dostaneš ho i do procesoru. Mnohem lepší by ale bylo použít Atmel Studio. Jednak tam máš i simulátor (s chybama, ale je tam) a výsledný .hex pak pomocí Arduino prostředí nahraješ do procesoru. Používám AVR Studio 4.19 (primárně pro assembler) a Atmel Studio 7 (pro assembler i pro Cčko). Oba mají své výhody i nevýhody, ale osobně jsem si pro Cčko na AS7 celkem rychle zvyknul.

Zkus porovnat následující zápisy :
1) Pin 0 brány B na výstup :
Arduino : pinMode(0, OUTPUT);
Cčko : DDRB |= (1<<PB0);
Assembler : sbi DDRB, PB0

2) Pin 3 brány B na vstup :
Arduino : pinMode(3, INPUT);
Cčko : DDRB &= ~(1<<PB0);
Assembler : cbi DDRB, PB3

Pokud chceš, můžeme tady zkusit dát dohromady Cčkovskou verzi řízení jasu LEDky podle hodnoty z potenciometru. Program bude obsahovat vlastně jenom 4 části :
1) Nastavení IO pinů - ta bude nejjednodušší.
2) Nastavení timeru pro PWM výstup - pro začátek použijeme HW PWM. Je to trošku jednodušší, než ho generovat softwarově.
3) Nastavení AD převodníku pro cyklické čtení hodnoty z pinu.
4) Hlavní smyčku, kde budeme hodnotu z AD převodníku přehazovat do PWMka - pro začátek to uděláme v hlavní smyčce, pak bychom to mohli přehodit do přerušení od časovače a v hlavní smyčce se o to nebudeš muset vůbec starat.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
stanleyv
Profesionál
Profesionál


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

PříspěvekZaslal: 26 únor 2018, 17:06    Předmět: Citovat

Môžem len potvrdiť to, čo písal Balů. Programuj to v Atmel studiu a v C-ku s datasheetom v ruke (na monitore).

Ak nepoznáš začiatky C, je veľa kníh, ktoré ťa to naučia (napr. Herout - asi najlepšie, nájdeš na nete). Nahodíš si napríklad Code::Block a tie základy sa naučíš za chvíľu. Jednotlivé špecifikácia ohľadom procesorov nájdeš v literatúre priamo k nim (Programujeme AVR v jazyku C a pod, sú aj také , kde je vysvetlený procesor aj s perifériami - ak nenájdeš, pomôžeme) alebo aj v datasheete, kde je väčšinou aj ukážka kódu, ako v ASM tak aj v C pre jednotlivé periférie.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
AB
Profesionál
Profesionál


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

PříspěvekZaslal: 27 březen 2018, 8:00    Předmět: Citovat

Tady je pinout tiny13 pro arduino:
https://camo.githubusercontent.com/b621cdf0625c6a9e961bb3ac5c94c46198f7585d/687474703a2f2f692e696d6775722e636f6d2f4a7362677550562e6a7067

Arduino má piny digitální (D) a analogové (A).
Mohou být číslované jinak než piny portů.
Na obrázku v odkazu je v modrém poli např 4/A2.
Je to digitální pin 4 a analogový A2

Pro analogRead() používej piny A0 pro adc0, A1 pro adc1 atd.
Pro analogWrite používej digitální piny (v tomto případě jsou číslovány stejně jako piny portu (D0=PB0, D1=PB1 atd).


kód:
int x;

void loop() {

x=analogRead(A1);       // čti kanál A1 (ADC1, portb.2)
analogWrite(0,x);       // pwm na  D0 (portb.0)
}


.
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
 
Strana 1 z 1
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)