Steff.k pisze:Z tą samą płytka do ver 3.xx i 4.xx nieźle wykombinowałeś. Szczwane z Ciebie Bestia
W sumie, to nie planowaliśmy takiego jej zastosowania (była projektowania do wersji 3), ale po małej analizie wyszło, że prawie idealnie nada się do 4-ki.
Wyszło to w sumie przypadkiem, a tym elementem, który trzeba zewrzeć, to kondensator wyjściowy no i oczywiście dostawiony microswitch
W gwoli ścisłości, to płytki projektował Arek i to przede wszystkim on cierpliwie testował różne wypracowywane wspólne te lepsze i gorsze pomysły - a trochę ich było... Myślę, że czas poświęcony na v3 można liczyć w setkach godzin na głowę - prawda Arku?
Steff.k pisze:Jeszcze mam pytanie programistyczne
Jeśli to nie jest ściśle strzeżona tajemnica oczywiście .
Zakładam, że masz czyste intencje i nie zamierzasz po prostu skopiować naszego rozwiązania, a następnie za bezcent sprzedać ludzikom z małymi żółtymi rączkami
Steff.k pisze:W attiny13 jest jeden timer/licznik/pwm. W związku z tym jak rozwiązujesz PWM i zliczanie impulsów?
Robię to wszystko na jednym timerze stosując implementacje kaskadowych liczników, na których wyliczam sobie podziały częstotliwości i czasu używane do innych celów - np. jako podstawa czasu do sterowania sekwencjami.
Czyli u mnie 1 sekunda, to przykładowo 80 tys cykli PWM - podpowiedziałem?
Steff.k pisze:1. Przy dwu/trój kliku liczysz wystąpienia INT0, a PWM'a używasz hardwarowego, czy
2. Przy dwu/trój kliku liczysz impulsy timerem, a PWM'a sam napisałeś??, czy może jeszcze inaczej.
To drugie - liczę odstępy czasu na cyklach timera, PWM to własna (niestandardowa) implementacja - inaczej nie uzyskałbym tak szerokiej rozpiętości i tak niskiego low`a.
Co więcej nie tylko liczę w ten sposób czas minimalnej przerwy, która rozróżnia dwa pojedyncze kliknięcia od jednego podwójnego, ale i czas przyciśnięcia przycisku.
W ten sposób zabezpieczam się przed odbiciami styków / iskrzeniem / niestabilnym kontaktem wyłącznika. Zauważ, że wejścia ze switch`a nie blokujemy żadnym kondensatorkiem - filtrowane jest to programowo.
Steff.k pisze:Aktualnie soft testuję na attiny2313 tam są 2 liczniki i nie ma problemu, ale docelowo uP w latarce to będzie attiny13, także muszę jakoś to rozwiązać.
Ano właśnie - ja też trochę żałuję, że 13-tka ma tylko jeden timer.
Zastanawialiśmy się z Arkiem, czy nie przejść na 15-tkę, głównie z powodu dodatkowego timera. Wówczas jeden by robił PWM, a drugi z większym preskalerem robił za sequencer dla zdarzeń wolnozmiennych (sekwencje) i zegar czasu rzeczywistego.
2313 jest ciekawym układem z rodziny ATtiny - w sumie to tiny, a jednak ma i więcej portów (nóżek) i w środku trochę więcej pamięci i peryferiów.
Ale do zastosowania w układzie z jednym we. i jednym wy. (+ew. 2-gie wejście do pomiaru prądu) to trochę profanacja, no i rozmiarowo jest trochę jednak przyduży. Dlatego też zdecydowaliśmy się na 13-tki z myślą na przejście w przyszłości na 15-tki (25/45/85), bo są one małe i wystarczające (no i kompatybilne pod względem pinout`ów z 13-tkami, więc PCB zostaje bez zmian).
Widziałem, że piszesz w Bascomie - w 1kB flasha nie zmieścisz kodu sterownika z tyloma funkcjami - ja piszę w assemblerze i jest to nie lada wyzwanie. Walka o każdy bajt kodu i o niemalże każdy cykl procesora. Mógłbym oczywiście pójść po najniższej linii oporu, ale wówczas nie zmieściłbym tam aż tylu funkcji. To dobra szkoła optymalizacji i efektywnego tworzenia kodu - w projektach o mniejszej skali lub wymagających max. efektywności pisanie kodu w asm bardzo się opłaca. Natomiast jakbym miał programować kontroler robiący dużo operacji zmiennoprzecinkowych lub operujący masowo np. na Stringach, to pwenie usiadłbym do C, bo będzie łatwiej.
Dziś wielu programistów nie zwraca uwagi na optymalizacje (a wiem co mówię) i często idzie na łatwiznę - pamięci są tanie, procesory coraz szybsze... i pewnie mają rację - tak jest taniej, co nie znaczy, że lepiej.
Wystarczy skompilować sobie głupie okienkowe "Hello world." - wszystko jedno, czy w Delphi, Visual C/C++, C#, dotNet, czy Javie - zobaczysz ile na start zajmuje (nie liczę grubych MB kodu i bibliotek maszyn wirtualnych JVM i .Net itp.).
A z drugiej strony są ludzie, którzy w 4kB kodu są w stanie zrobić naprawdę wypasione trójwymiarowe demo z renderowaniem animacji w locie, muzyką i innymi efektami - ot, choćby takie:
http://www.joemonster.org/filmy/8176/4kB-demo-na-PC
No i offtopowo się trochę rozpisałem... sorry.