nejde nahrát program přes ISP do ATtiny25-20

jojo je to DIP8 v datasheetu píšou od 11,5V mam klasickej zdroj 12V, takže OK, no v PC v C++ napsat by problém asi nebyl… ale moc se mi do toho nechce protože ve škole sme po seriovým portu nakonci akorát rozsvítili 2 ledky a četli pár dig. vstupů, ale vůbec nějakou komunikaci nebo tak sme neřešili, to samý u tý atmegy, dělali sme samí kravinky ale nějakou seriovou sběrnici naprogramovat atak to né, kdybych to uměl tak to napíšu do tý atmegy a po půlhodině by nebylo co řešit…

A co to máš za IO ? Kouknu do datasheetu a zkusil bych Ti to spíchnout. Tolik práce to zase být nemůže …

no mám Atmega32-16PU (běží na krystalu 16Mhz) a pomocí něj potřebuju dát tovární hodnoty pojistek do Attiny25-20. Když poradíš budu jenom rád, aspoň se naučím i s něčím komunikovat po sběrnici :smiley:

ps: chci se ještě zeptat, mám krokový motor, vykuchnutý přímo z palubní desky nějakého WV, je možné že má 160kroků na cca 300 stupnů ? pak tam má nějaké mechanické omezení že nejde protočit, ale problém je že když krokuju tak dycky ručička se škubne kousek zpět, a při dalším kroku už se posune dopředu a takhle pořád dokola… tak jestli mám špatné krokování, nebo zapojení, nebo to je normální ?

Jednu volnu mega8 nemas, z toho doctora vytiahnut len riadiace mikrokontroler (mega8), software tam je (firmware) a pripojit k nemu len par tranzistorov na ovladanie napäti a podla zapojenia tiny25, ktoru ti treba vyliecit…na kontaktnom poli ako jednorazovka za par minut hotovo…

no bohužel nemam megu8, kdybych měl tak už by to bylo dávno flashlý a přehraný pojistky :smiley: kdyby někdo k tomu doktoru dal aspoň zdroják, a né jen už zkompilovaný hex, zdroják bych si upravil pro tu mega32 co tu mám a byl by klid, zatím sem se pokusil to naprogramovat ale nějak sem nepochopil postup vstoupení do toho HVSP režimu programování, tak samozdřejmě ani program potom nefungoval :smiley:

Psal jsi, žes nepochopil vstup do HVP, tak Ti zatím prográmek psát nebudu, ale popíšu Ti, jak na vstup do HV programování u ATtiny25.

1) Počkat pár ms na ustálení napětí na "doktorovi". 2) Nastavit piny Prog_enable, RESET a VCC na 0V Piny, kam jsou připojeny Prog_enable a VCC nastavit jako výstupní a do log. 0 Asi by stačilo připojit VCC ATtiny na IO pin "doktora". Nepředpokládám, že by napájecí proud do ATtiny překročil 40mA... RESET je třeba stáhnout k 0V odporem a nechat vypnutý tranzistor, který těch +12V pouští do RESETu 3) Zapnout ATtinu (přivést na VCC +5V) - napětí musí během 20 us dosahnout alespoň 1,8V Do pinu, který je připojen na VCC poslat log. 1 4) Počkat 20-60 us a na RESET přivést +12V Zapnout tranzistor, který přivádí +12V na RESET 5) Držet Prog_enable na "000" alespoň 10us po zapnutí +12V 6) Přepnout pin (na "doktorovi"), který ovládá Prog_enable[2] na vstup - po vstupu do režimu HVP je Prog_enable[2]=SDO, tedy výstupní 7) Počkat alespoň 300 us před začátkem programování ... 8) Naprogramovat ... 9) Ukončit programovací režim přivedením 0V na piny RESET a VCC. Vypnout tranzistor na RESETu a přivést log. 0 na pin s VCC.
Hotovo.

A ještě jedna věc : Pokud na připojení +12V používáš PNP tranzistor a používáš stabilizovaných 12V, pak se dostáváš s napětím na RESETu mimo toleranci (11,5-12,5V), protože úbytek na tranzistoru je 0,7V => 12-0,7=11,3V a může, ale nemusí to šlapat. Budeš muset buď trošku zvednout napájecí napětí (pokud stabilizuješ 7812-kou, pak do GND 7812-ky dát diodu, tím dostaneš na výstupu 12,7V) nebo použít na připojení +12V P-MOSFET.

díky tohle vypadá srozumitelně, až budu mít chvilku času, tak to zkusím znova, zatím sem si koupil novou attinu, tak doufám že se nezadaří už podobně :smiley:

Toto nie je pravda. Ak pouzivaz na zapnutie PNP tranzistor sposobom, ze E je na +12V, medzi E a B je odpor napr 10k, B je cez odpor napriklad 4k7 spinana dalsim tranzistorom o GND a C je pripojeny na RESET toho procesora na ktory chces tych 12V aplikovat, pri zapnuti PNP tranzistora je medzi E a C ubytok (v zavislosti od prudu) tak okolo 0,1V a menej a nie 0,7V.

Tranzistor prevadzkujes v zapojeni so spolocnym kolektorom (SC) a nie so spolocnym emitorom (SE). Potom je este zapojenie tranzistora so spolocnou bazou (SB), to ale nie je pre spinacie ucely uplne ze vhodne. PRi zapojeni tranzistora SC je ubytok medzi E a C minimálny, tranzistor je zopnutý. Samozrejme zavisi to mierne od odoberaneho prudu, ale nemyslim, ze byto bolo v tejto aplikacii kriticke.

Ak by to o ubytku 0,7V pri zapojeni SC bola pravda, potom by aj pri ovladani relatok pomocou tranzistora NPN (emitor spojeny s GND) bolo poznacene uvytkom 0,7V co evidentne nie je pravda.

Treba vsak velmi dorazne upozornit, ze odpor v baze PNP ak je jeho E pripojeny na +12V v ZIADNOM pripade nepripajaj priamo na pin procesora napajaneho 5-timi voltami. Mozes tomu MCU velmmi skaredo ublizit. Minimalne bude PNP tranzistor permanentne otvoreny a do nozicky MCU potecie prud. Ak bude tento dostatocne obmedzeny odporom v bazy tranzistora MCU mozno nezabijes, ale zapojenie rozhodne nebude fungovat.

Bud daj do serie s odporom zenerovu diodu tak okolo 7V5 az 9V1 (12V-9V1 = 2,9V, 12V-7V5 = 4,5V), alebo tam daj dalsi pomocny tranzistor NPN. Pouzitie P-MOSFETU ta od tohto neuchrani, lebo aj ten tranzistor bude permanentne otvoreny.

Podle tvého popisu jde vstup do báze a výstup z kolektoru.
Takže je to zapojení se společným emitorem.
Úbytek E-C může být při malých proudech 0,1-0,2 V.

Ne, v zapojení se společným kolektorem (vstup do báze, výstup z emitoru) je úbytek E-C vždy minimálně cca 0,7 V.

Tak to teda rozhodne neplatí pre správne zapojenie tranzistora ako spínacieho prvku, napríklad pre privedenie 12V na pin RESET :slight_smile: :slight_smile: :slight_smile:

Baza ani v jednom z uvedených prípadov nie je vstup, ale slúži na ovládanie prúdu tečúceho medzi kolektorom a emitorom.

Pre oba prípady (NPN, PNP) platí, že prúd cez emitor je súčtom bázového a kolektorového prúdu.

Napríklad pre PNP BC807, ktorý je do 0,5A

google.sk/url?sa=t&rct=j&q=& … 1344,d.ZWU

vyplýva, že úbytok medzi C a E je 0,1V pre prúd CE 300mA (Fig. 7 str. 8 )
a pre cca 20mA je to niečo okolo 0,02V.
A pochybujem, že si ATtiny25 cez RESET cucne 300mA.

To, že sú zapojenia, v ktorých napatie medzi C a E nemôže klesnúť viac ako je napätie BE (pre spomínaný tranzistor napr. fig.4 0,5V pri 100uA) ešte neznamená, že sa jedná o tento prípad. Odporúčam osobne si zapojiť, zmerať a až potom tvrdiť :slight_smile:

Tie špeciálne prípady sú napríklad také, keď sa NPN tranzistor používa na reguláciu napätia v kladnej vetve (alebo PNP v zápornej). Ak sa k tomu pridružia ďalšie obvodové prvky, výsledkom napríklad je, že minimálny rozdiel medzi vstupným a výstupným napätím na takej 78xx sú cca 2V.

Preto v LDO stabilizátoroch sa používa zapojenie nir NPN ale PNP tranzistora pre reguláciu napätia v kladnej vetve. Preto LDO stabilizátory dosahujú rozdiel medzi vstupným a výstupným napätím v závislosti od prúdu i 50mV.

Takže ak sa všetko zapojí správne, potom na otvorenom tranzistore (použitého ako spínač, z čoho explicitne vyplýva že za otvorený smer považujeme smer CE) bude zanedbateľný napäťový úbytok a to aj napriek tomu, že medzi BE bude niečo medzi 0,5V - 0,7V podľa typu tranzistora, prúdu do bázy a teploty.

Prajem pekné osobné experimentovanie :slight_smile:

P.S. Ešte chcem upozorniť, že zapojenie so spoločným emitorom je také, kedy je “záťaž”, napríklad relé pripojené medzi emitor a GND (pre NPN) alebo medzi emitor a +Un (pre PNP). Pre spínanie 12V však nie je dôvod použiť toto zapojenie a dokonca by ani nefungovalo správne ak by sme bázu (samozrejme cez odpor) ovládali pinom procesora. Potom by (pre NPN) na záťaži nebolo viac ako

Un_procesora - Ube.

Preto je treba “záťaž” pripojiť do kolektora. A už z toho máme zapojenie so spoločným kolektorom :slight_smile:

:arrow_right: administrator: přiloženy externí soubory
BC807_BC807W_BC327.pdf (233 KB)

no já to měl zapojený že z 12V zdroje sem měl 1K odpor na ten reset, a z toho na kolektor npn, kterej byl proti zemi :smiley: vycházel sem ze zapojení toho resetu který funguje v nějakým tom doktoroj (našel sem si schéma jak to je zapojený)

ještě tak mimo, jaký ty lockbity mám zaškrtnout aby nešel vyčíst program ? nebo to funguje jinak ty lockbity ? a pak se chci ještě zeptat, měl sem RC regulátor na 3f motor, vyhořely mi koncový můstky a tak sem si z toho vypreparoval atmegu8, koupil sem si adaptér TQFP32, takovou destičku co má po krajích díry pro dráty a uprostřed je chip co je s nima spojenej. no a teď když jsem koukal tak v tom regulátoru nebyl zapojenej reset přes pull up na +větev, nebyl zapojenej nikam, je to možný aby naschvál měli vyplej reset aby se to nedalo přes isp přeprogramovat ? jde mi o to že když regl je KO tak aspoň tu atmegu na další použití…

K tomu regulatoru: Nejdem hovorit, ze mam nejaky velky prehlad, ale zda sa mi nepravdepodobne, ze by nevyviedli reset pit. Este som taky nevidel.
Ak su tam vyvedene ostatne programovacie piny, isto je tam vyvedeny aj reset pin. A u TQFP32 puzdra nieje problem sa k tomu pinu dostat.

Reset mít vypnutý mohou, ale nemusí. Pokud jsou naprogramovaný LOCK bity, pak MCU nepřečteš v žádným případě. RESET může, ale nemusí být nastavený jako IO. ATmega (resp. všechny AVRka) má RESET připojený přes interní pull-up na VCC, tím pádem se externě nemusí připojovat nikam. Externím odporem na VCC se ale nic nezkazí. Interní pull-up je podle datasheetu cca 80k. Dá se však předpokládat, že pokud RESET není zapojený, pak pravděpodobně nebude ani přepnutý jako IO. Jak je RESET nastavený se dá poznat, pokud MCU žije a něco dělá takto :

Pokud MCU zapneš a RESET pin Ti nerozsvítí LEDku (přes odpor samozřejmě) ani proti VCC, ani proti GND, pak je pin buď jako vstupní nebo jako RESET. Pokud máš toto zjištěné, pak můžeš přistoupit ke druhému kroku. Vezmi onu LEDku a zkus jí připojit na některý IO pin - musíš jí zkusit jak proti VCC, tak proti GND. Alespoň na jednom by měla něco dělat (svítit, blikat - to je jedno) - pokud MCU něco řídil, pak nemohou být všechny piny vstupní, pokud není v programu nějaká podmínka ve stylu “OUTPUT ENABLE” pinu. Jakmile nějaký pin najdeš, tak (nejlépe přes odpor tak do 1k) uzemni RESET pin. LEDka musí zhasnout a zůstat zhasnutá po celou dobu, kdy je RESET uzemněný. Po dobu trvání RESETu jsou totiž všechny piny nakonfigurovány jako vstupní bez pull-up odporů. Pokud se tak chová, měl by být RESET použitý jako RESET a MCU by měl jít v pohodě smazat. Jakmile provedeš CHIP ERASE, smažou se i LOCK bity. Pokud je RESET nastavený jako IO, pak ti ovšem nezbyde nic jiného, než HVP …

P.S.: Možná tohle víš a píšu to zbytečně, ale už jsem na Internetu našel spoustu zapojení, kde někteří připojují LEDku z IO pinu bez omezovacího odporu !!! Tohle nikdy nedělej. MCU sice nedodá takový proud, aby LEDku okamžitě zničil, ale věř, že to rozhodně nedělá dobře ani procesoru, ani LEDce.

Nevím proč by obecné věci neměly platit právě pro tento případ.

To je zajímavá nová teorie. Nás ve škole učili, že vstup je právě na elektrodě kterou ovládáme proud tranzistoru.
Pokud nebudeme používat zavedené názvosloví tak se asi těžko domluvíme.

Súhlasim :slight_smile:

Ak by niekto zapojil tranzistor tak ako kresliš na ľavom obrázku, hrozí zabitie procesora. Teda ak tam nebudú spravené opatrenia o ktorých som písal vyššie. Zenerka v sérii s bázovým odporom a tranzistor s odporom medzi B a E. Ak si niekto zapojí tranzistor podľa Tvojho ľavého obrázka a bázový odpor bude správne navrhnutý, medzi E a C nebude ani náhodou 0,7V, ale niečo v okolí 0,1V :slight_smile:
Odporúčam si zapojiť a namerať. Medzi B a E samozrejme niečo v okolí 0,6V bude. To sa ale navzájom nevylučuje.

To je všetko, na čo som svojimi príspevkami reagoval. Skrátka nie je dôvod zvyšovať napätie na tej napríklad 7812 nejakými diódami či tak nejak.

jojo s tou atmegou v tom tqfp to zkusím, v tom regulátoru ta atmega má 6 výstupů pro ovládání koncových stupnu a pak má asi 3 analogový vstupy kde vlastně měří sinusovku na fázích a měří posun či co a hlavně jestli se motor rozeběhl a nebo se jen škube na místě a cívky se budí zbytečně, no a pak je tam ještě jeden vstup a tím se reguluje plyn podle šířky pulzu podobně jako u hojně používaných serv… takže ty lockbity mám zaškrtnout oba dva aby nešel vyčíst hex ? jo a je možný že bych odpráskl třeba jen část výstupů ? na attiny sem zapojoval budič pro ten krokový motor a nějak se mi povedlo dát do zkratu dva výstupy, rychle sem si toho všim, attina funguje vpohodě, ale na těch pinech je zrovna miso a sck, a právě po ISP už nekomunikuje :smiley:

Lock bity : Nevím, jaké zaškrtávání máš na mysli, ale programují se oba, aby nešel MCU číst.

Co se pinů týká : Datasheet říká následující - Connecting unused pins directly to VCC or GND is not recommended, since this may cause excessive currents if the pin is accidentally configured as an output.

Ano - píše se tam o přímém připojení pinů na GND nebo VCC, ale zkrat pinů proti sobě je v podstatě totéž. Prošel jsem datasheet celý a přímé varování o možnosti poškození při zkratu mezi výstupními piny jsem nenašel. Nicméně, pokud dám dohromady výše zmíněnou větu, k tomu přičtu, že maximální proud IO pinem je 40mA a při překročení tohoto proudu hrozí poškození součástky, nelze poškození pinu vyloučit. V každém případě není pravidlem, že k tomu dojde - mě už se to taky povedlo a nic se procesoru nestalo. Otázkou je, jak moc to bylo díky štěstí.

Pokud je nabětí mezi C a E skutečně jen okolo 0,1V, pak samozřejmě není třeba řešit zvyšování napětí na 7812-ce a ten PNP tranzistor sepnout pomocí NPN tranzistoru otevíraného pinem MCU :
RESET_12V.png

jojo ty lock bity zkusím, no já právě nevím jestli jsem zkratoval výstupy mezi sebou nebo proti zemi či vcc, ale je to asi jedno, při buzení toho krokáče je dycky na jedný fázi + a na druhý - takže to šlo do zkratu, attina byla zahřátá lehce, tak sem to rychle odpojil (mám na výstupech ledku a když sem viděl že nekrokuje tak sem to vypl) ale asi je pro ní už pozdě no :smiley: další attina na vyhození :smiley:

ps: řeším ten otáčkoměr pomocí krokového motorku, ten má už vnitřní omezení že ručička nejde přetočit kolemdokola, má jen nějaký úhel, chci se zeptat jak by ste to řešili, zajištění původní polohy je že ručka jednoduše vyjede nakonec dorazu a pak krokuje zpět, a potom zobrazování si počítá kroky, ale mám problém s tím že se to občas rozejde, když dám kratší zpoždění mezi krokama, tak ručka jde rychlej, ale pak se to rozejde a když vypnu signál co simuluje zapalování tak ručka místo toho aby se vrátila na 0 tak zůstane např u 2tis otáček, zatím to mám vyřešený pomalím krokováním aby ta ručka jela doopravdy pomalu a držela přesnej počet kroků, ale kupoval sem naschvál budiče (2x Hmustek) abych zvýšil napětí a proud a mohl to zrychlit, a ono se to takhle začlo rozhcházet, nejspíše vlivem setrvačnosti ručičky…