Jak wykonać zewnętrzny reset procesora ?

To forum jest dla wszystkich pasjonatów mikrokontrolerów AVR Atmela. Wymiana doświadczeń i pomoc dla początkujących w pisaniu programów zarówno w C, Asemblerze jak i BASCOM. Zapraszam znawców tematu, aby pomogli wszystkim początkującym!
Awatar użytkownika
kayron
Użytkownik
Posty: 2090
Rejestracja: 21 wrz 2008, 12:53
Lokalizacja: Poland
Kontakt:

Post autor: kayron » 20 sty 2015, 19:31

dondu napisał/a:
2. Dlaczego w ogóle musisz resetować mikrokontroler?

Bo w bascomie nie mogę wybudzić go inaczej ze stanu IDDLE (POWER DOWN)
A WatchDog przypadkiem nie pracuje w tych trybach. Może on ci bez problemu wybudzać MCU. BASCOM też nie jest tu jakąś wielką przeszkoda, możesz przecież odwolywać się do rejestrów przez ich nazwy, a nawet wstawić wstawkę ASM z noty katalogowej.
Jak dobrze sobie przejrzysz notę katalogową to wszystko co trzeba ma w sobie procesor, nawet układ wykrywania zaniku napięcia zasilania.
Power-down Mode
When the SM[1:0] bits are written to 10, the SLEEP instruction makes the MCU enter Powerdown
mode. In this mode, the Oscillator is stopped, while the external interrupts, and the Watchdog
continue operating (if enabled). Only an External Reset, a Watchdog Reset, a Brown-out
Reset, an external level interrupt on INT0,
or a pin change interrupt can wake up the MCU. This
sleep mode halts all generated clocks, allowing operation of asynchronous modules only.
Załączniki
Sleep_ModeT13.jpg
Sleep_ModeT13.jpg (265.6 KiB) Przejrzano 6621 razy

Awatar użytkownika
matrix
Użytkownik
Posty: 1796
Rejestracja: 15 mar 2006, 5:21
Lokalizacja: Sochaczew
Kontakt:

Post autor: matrix » 20 sty 2015, 19:56

Tak tak, czytałem notę i tiny13 i tiny24. Wiem że istnieją takie rzeczy jak watchdog i coś takiego jak możliwość używania wstawek, z tego co pamiętam to nawet chyba w C się da, tylko trzeba wiedzieć jak wstawiać te wstawki.
Co do samego watchdoga to on jest, działa bo już używałem tylko ma jedną wadę w przypadku bascoma:
Instrukcja CONFIG WATCHDOG

Przeznaczenie:
Konfiguruje opóźnienie zadziałania układu WATCHDOG.

Składnia:
CONFIG WATCHDOG = czas

gdzie:

czas - czas w milisekundach po jakim układ WATCHDOG uaktywni sygnał reset procesora. Możliwe są wartości: 16, 32, 64, 128, 256, 512, 1024 oraz 2048.
Na chwilę obecną zmieniłem procesor na tiny24, będę wybudzał go stanem niskim na INT0. I tu kolejne pytanie, czy wystarczy zwierać tranzystorem wejście INT0 bez zewnętrznego rezystora pullup ?? Wejście INT0 podciągnę wewnętrznie.

Awatar użytkownika
dondu
Użytkownik
Posty: 211
Rejestracja: 24 maja 2005, 9:47
Lokalizacja: Śląskie
Kontakt:

Post autor: dondu » 21 sty 2015, 1:17

matrix pisze:... czy wystarczy zwierać tranzystorem wejście INT0 bez zewnętrznego rezystora pullup ?? Wejście INT0 podciągnę wewnętrznie.
Tak.

Gdy zrobisz nowy schemat pokaż go na wszelki wypadek :)

A co do świateł i homologacji, to oczywiście wszystko jest zgodne z prawem. Są one jednak wąskie i nie zawsze są tak dobrze widoczne jak normalne światła o dużej powierzchni. Należy pamiętać, że czasami zerkamy tylko przez ułamek sekundy, stąd łatwo umykają niektóre mało widoczne elementy. Ale mam nadzieję, że spełnią swoją rolę.

BTW: Szkoda, że jednak nauki C nie kontynuowałeś :)

Awatar użytkownika
matrix
Użytkownik
Posty: 1796
Rejestracja: 15 mar 2006, 5:21
Lokalizacja: Sochaczew
Kontakt:

Post autor: matrix » 21 sty 2015, 16:47

Schemat wstawię wieczorem a co do C to tak do końca go nie porzuciłem, odstawiłem na jakiś czas bo nauczyć jednak bym się chciał.

Awatar użytkownika
kayron
Użytkownik
Posty: 2090
Rejestracja: 21 wrz 2008, 12:53
Lokalizacja: Poland
Kontakt:

Post autor: kayron » 21 sty 2015, 21:15

Tak patrzę na ten stary schemat, i rodzi mi się pytanie czy policzyłeś sobie moc strat na tym 78L05 ? Ja tak policzyłem Pi*Drzwi, bo nie wiem jaki prąd weźmie ten twój układ, że 14,4V-5V = 9,4*0,1A(100mA) to 0,94W Nie wiem czy taka pastylka to wytrzyma na dłuższą metę.
Inna sprawa że lepszy byłby stabilizator impulsowy.

Awatar użytkownika
matrix
Użytkownik
Posty: 1796
Rejestracja: 15 mar 2006, 5:21
Lokalizacja: Sochaczew
Kontakt:

Post autor: matrix » 21 sty 2015, 23:32

kayron pisze:policzyłeś sobie moc strat na tym 78L05 ? Ja tak policzyłem Pi*Drzwi, bo nie wiem jaki prąd weźmie ten twój układ, że 14,4V-5V = 9,4*0,1A(100mA) to 0,94W Nie wiem czy taka pastylka to wytrzyma na dłuższą metę.
A jak udało Ci się wyliczyć taką moc ? Ja zawsze myślałem że liczymy moc strat wedle prądu pobieranego a nie maksymalnego. Jeśli tak to przecież procek w życiu nie pobierze 100mA. Poza tym zrobiłem kiedyś prosty układ migacza właśnie na tiny13, dałem jako stabilizator 78l05 w w obudowie TO92, zasiliłem to napięciem rzędu 28V i nie zagrzał się nawet trochę ów stabilizator.

Na nowym schemacie jest stabilizator 7805 w obudowie TO220 ale równie dobrze mogę tam wstawić Mirkową przetwornicę, tylko po co ? według mnie ten układzik w życiu nie weźmie tyle prądu bo zasilany jest tylko procesor i kilka elementów dyskretnych.

Nowy xchemat wygląda tak
Załączniki
schemat daylight.png
schemat daylight.png (13.8 KiB) Przejrzano 6561 razy

Awatar użytkownika
Bogo89
-
Posty: 11
Rejestracja: 20 cze 2014, 10:28
Lokalizacja: G-cko

Post autor: Bogo89 » 22 sty 2015, 9:42

1. Co teraz ma robić układ rezystorów przy T3 ? (Nie chodzi mi o aktywacje stanu niskiego INT0, tylko czemu to zrobiłeś w ten sposób)
2. Gdzie zniknęła dioda przy wejściu 12V(+_po_stacyjce), a może po prostu stała się zbędna ?
3. Jak działa ten przycisk po MISO ? (jest jakoś podciągnięty w procku do Vdd ?)

Awatar użytkownika
matrix
Użytkownik
Posty: 1796
Rejestracja: 15 mar 2006, 5:21
Lokalizacja: Sochaczew
Kontakt:

Post autor: matrix » 22 sty 2015, 13:05

Bogo89 pisze:1. Co teraz ma robić układ rezystorów przy T3 ? (Nie chodzi mi o aktywacje stanu niskiego INT0, tylko czemu to zrobiłeś w ten sposób)
Dzielnik na wejściu ma dzielić napięcie wejściowe zgodnie z zasadą dzielnika. Po włączeniu zapłonu przed rezystorem bazowym powinienem dostać napięcie około 4,5V co i tak otworzy tranzystor. Nigdy nie stosowałem tranzystora w takiej konfiguracji więc przyznaję się bez bicia że nie wiem czy to tak zadziała.
Dla mnie tranzystor zawsze pracował w roli klucza włącz/wyłącz.
Gdy zapłon wyłączę baza tranzystora zostanie ściągnięta do masy i tranzystor się zatka.

Zastosowanie tak dziwnego układu wynika z mojej obawy o to by w przypadku jakiegoś dziwnego zwarcia tranzystora T3, 12V nie przedostało się na wejście procka bo to byłby koniec żywota tego ostatniego. Jeśli tranzystory nigdy nie dostają takiego zwarcia by zewrzeć bazę z kolektorem to dzielnik rezystorowy śmiało można wywalić i sterować tranzystorem wprost z napięcia 12-14V-poziom H, 0V-poziom L.

Bogo89 pisze:2. Gdzie zniknęła dioda przy wejściu 12V(+_po_stacyjce), a może po prostu stała się zbędna ?
Jako że miało to być urządzenie "idiotoodporne" (nie żebym był idiotą, ale może ktoś też by takie coś chciał) to w pierwszej wersji dioda służyła do zabezpieczenia się bo wejście nie było wejściem +_po_stacyjce tylko wejściem światła drogowego, sumowało się z innym światłem i tak zostało. Jako że będzie tam opis że należy podać +12V które to pojawia się po przekręceniu kluczyka to dioda rzeczywiście stała się zbędna.

Bogo89 pisze:3. Jak działa ten przycisk po MISO ? (jest jakoś podciągnięty w procku do Vdd ?)
Tak, podciągany będzie programowo do +5V.

Awatar użytkownika
dondu
Użytkownik
Posty: 211
Rejestracja: 24 maja 2005, 9:47
Lokalizacja: Śląskie
Kontakt:

Post autor: dondu » 23 sty 2015, 1:19

matrix pisze:Na nowym schemacie jest stabilizator 7805 w obudowie TO220 ale równie dobrze mogę tam wstawić Mirkową przetwornicę, tylko po co ?
Masz rację, po co wydawać ponad 20zł + koszty dostawy za tę przetwornicę, która nota bene ma tylko 1A na wyjściu i stałe napięcia +5 lub +3,3V.

Na Alliexpress lub eBay za mniej niż 1$ z darmową dostawą kupisz przetwornicę na układzie LM2596 (zdjęcie poniżej) o regulowanym potencjometrem napięciu wyjściowym w zakresie 1,5-35V i prądzie do 3A. W polskich sklepach można ją dostać za około 6zł + dostawa. Z reguły więc warto poczekać na przesyłkę z Hong Kongu 20 dni tym bardziej, że tego typu przetwornicę zawsze warto mieć w szufladzie :)

Są też jeszcze tańsze i mniejsze wersje tej przetwornicy w granicach 0,80$, przy tych samych parametrach.

Ale jak słusznie zauważyłeś w Twoim przypadku 7805 bez problemu może być zastosowany i poprawnie interpretujesz sposób liczenia wydzielanej mocy.

Zanim napiszę uwagi do schematu napisz proszę, czy 7805 (oraz pozostałe symbole +12V) jest na stałe podłączony do akumulatora, czy też zasilany jest dopiero w momencie włączenia kluczem stacyjki? Wydaje się, że to pierwsze, ale wolę się upewnić.
Załączniki
przetwornica-napiecia-dc-dc-lm2596s-step-down.jpg
przetwornica-napiecia-dc-dc-lm2596s-step-down.jpg (16.69 KiB) Przejrzano 6459 razy

Awatar użytkownika
matrix
Użytkownik
Posty: 1796
Rejestracja: 15 mar 2006, 5:21
Lokalizacja: Sochaczew
Kontakt:

Post autor: matrix » 23 sty 2015, 14:35

Z tymi przetwornicami to nie szukałem ale przyznam że ciekawa alternatywa dla standardowego 7805.
Co do podłączenia to tam gdzie napisano +_po_stacyjce to jest +12V po przekręceniu kluczyka a tam gdzie napisane +12V zasilanie jest na stałe.

Troszeczkę zastanawiałem się nad sensem usypiania układu skoro stabilizator stale podłączony i tak będzie pobierał prąd pewnie równy procesorowi lub większy stąd w jednej z wersji był stabilizator 78L05 w obudowie TO92 który pobiera około 3mA w stanie spoczynku. Zwykły 7805 pobiera około 5-8mA w spoczynku (z tego co udało mi się wyczytać).

Natomiast prawdopodobnie jeszcze zmienię schemat i pomyślę nad zastosowaniem małego przekaźnika na 12V który będzie podawał zasilanie po przekręceniu kluczyka a jednocześnie będzie sterowany procesorem i będzie zasilał cały układ.
Po wyłączeniu zapłonu procesor będzie jeszcze podtrzymywał przekaźnik a po odpowiednim czasie wyłączy ów przekaźnik jednocześnie wyłączając zasilanie na cały układ. Takie rozwiązanie sprawi że układ w stanie spoczynku nie będzie pobierał wcale prądu i rozwiąże mi to kłopot resetu ponieważ włączając zapłon czyli zasilanie na cały układ program zacznie się od początku więc nie będę musiał kombinować z resetem sprzętowym.

Awatar użytkownika
matrix
Użytkownik
Posty: 1796
Rejestracja: 15 mar 2006, 5:21
Lokalizacja: Sochaczew
Kontakt:

Post autor: matrix » 23 sty 2015, 19:20

No i jak mówiłem tak zrobiłem.

Obrazekf

Obwód z tranzystorem T3 załącza zasilanie dla procesora i calej reszty po przekręceniu kluczyka w stacyjce, procesor zaczyna pracować, wystawia stan wysoki na wyjściu POWER_ON i wysterowuje tranzystor T4. Po wyłączeniu zapłonu T3 zostaje zatkany ale w dalszym ciągu przewodzi T4. Procesor odlicza czas i wystawia stan niski na wyjściu POWER_ON. Wyłącza się przekaźnik Pk1 wyłączając zasilanie na cały układ. W ten sposób układ nie powinien pobierać nawet grama prądu.

Awatar użytkownika
kayron
Użytkownik
Posty: 2090
Rejestracja: 21 wrz 2008, 12:53
Lokalizacja: Poland
Kontakt:

Post autor: kayron » 24 sty 2015, 16:35

A jaki prąd ma cewka przekaźnika w stanie zamkniętym ?
Moim zdaniem za bardzo kombinujesz z tym oszczędzaniem prądu, kiedy jak sam twierdzisz, stabilizator będzie brał więcej prądu niż CPU. W ten sposób wpędzasz się w sytuacje w której układ oszczędzania energii w stanie aktywnym bierze wiec prądu niż układ z którym współpracuje.
Sam procesor wg. noty przy 4MHz w trybie pracy bierze 2.5mA, a wystarczy ci w takim układziku taktowanie 1MHz (300uA) to stabilizator jest bardziej prądożerny od niego, a cewka przekaźnika w stanie aktywnym będzie 10x bardziej prądożerna.
Dla przykładu przekaźnik AZ2150-1A-12.
Cewka =~155Ω, U zas -12V
to masz I=U/R czyli 12V / 155 Ω = 0,077A czyli 77mA niech stabilizator bierze te 5mA CPU 3mA to masz 77/8 co daje 9X więcej prądu weźmie ci sama cewka przekaźnika niż cały układ.
Co prawda prąd podtrzymania cewki jest znacznie mniejszy, jakieś 3-5x, ale to i tak więcej bierze niż cały układ.
Nie wiem czy nie łatwiej dać zamiast 78L05 diodę zernera 5,1V i opornik które zrobią to samo, sądzę że R-3,3K mogło by nawet być.
Tak czy siak, zastanów się czy pogoń, za oszczędzaniem energii za wszelka cenę, nie wpędza cię w absurdalne rozwiązanie. 3mA w stanie spoczynku raczej nie zabiją akumulatora w aucie który ma 40Ah lub więcej.

Awatar użytkownika
matrix
Użytkownik
Posty: 1796
Rejestracja: 15 mar 2006, 5:21
Lokalizacja: Sochaczew
Kontakt:

Post autor: matrix » 24 sty 2015, 18:52

Wiesz kayron, nie chodzi o ogólne zmniejszenie poboru prądu ponieważ podczas pracy silnika nie jest to tak ważne. Alternator generuje tyle prądu że te kilka mA nie ma najmniejszego znaczenia. Chodzi o jak najmniejsze zużycie prądu podczas gdy samochód stoi i nie jest używany a czasem może to trwać nawet i kilka tygodni, zależy jak kto auto użytkuje.

Stosując układ według ostatniego schematu eliminuję pobór prądu praktycznie do zera bo przekaźnik całkiem odłączy źródło poboru prądu..

Skupmy się na ostatnim schemacie... Jeśli nie ma większych uwag to wykonam płytkę obwodu drukowanego i udostępnię pliki eagle a po przetestowaniu również plik źródłowy bascoma.

Awatar użytkownika
kayron
Użytkownik
Posty: 2090
Rejestracja: 21 wrz 2008, 12:53
Lokalizacja: Poland
Kontakt:

Post autor: kayron » 25 sty 2015, 10:41

Oczywiście. Ale w samochodzie nie ma jakiś obwodów / przekaźników, które się włączają po włożeniu i przekręceniu kluczyka w stacyjce ?
Jeżeli tak, to nie prościej skorzystać z nich, niż je dublować ?

Awatar użytkownika
matrix
Użytkownik
Posty: 1796
Rejestracja: 15 mar 2006, 5:21
Lokalizacja: Sochaczew
Kontakt:

Post autor: matrix » 25 sty 2015, 11:30

kayron pisze:Oczywiście. Ale w samochodzie nie ma jakiś obwodów / przekaźników, które się włączają po włożeniu i przekręceniu kluczyka w stacyjce ?
Jeżeli tak, to nie prościej skorzystać z nich, niż je dublować ?
Oczywiście że są, ale nie każdy ma wiedzę gdzie i jak w swoim aucie szukać takiego przekaźnika więc łatwiej dołożyć jeszcze jeden przekaźnik na płytce i wskazać tylko miejsca podłączenia zasilania i miejsce podłączenia + po przekręceniu kluczyka w stacyjce.

A chciałbym mimo wszystko by układ był prosty w podłączeniu nawet dla laika.

Jeszcze jeden fakt przemawia za zastosowaniem dodatkowego przekaźnika na mojej płytce. Po wyłączeniu zapłonu wyłączyło by się zasilanie dla procesora więc światła by zgasły a chciałem zaimplementować obsługę tzw doświetlania obszaru przed pojazdem również po wyłączeniu zapłonu.

Wyobraź sobie ciemność, podjeżdżasz przed dom i nie wjeżdżasz do garażu tylko stawiasz auto na podjeździe. Gasząc silnik nie widzisz nic przed pojazdem bo światła też zgasły. Stosując dodatkowy przekaźnik można wydłużyć czas świecenia świateł do jazdy dziennej o określony czas po wyłączeniu zapłonu i dopiero wtedy mogę wyłączyć zasilanie na cały układ a tym samym na światła do jazdy dziennej.

ODPOWIEDZ