Jakoś Cię nie widać, a ja już w zasadzie skończyłem. Przygotowałem soft i dobrze by było, żebyś go przetestował na ATmega8, bo żadnej nie mam u siebie. Taktowanie procesora to 8MHz. Nieważne skąd...może być zewnętrzne, a może być wewnętrzne - to nie NASA.
Zgodnie z Twoim schematem podłącz wyświetlacz, czujnik temperatury, trzy przyciski (czwarty nie będzie potrzebny) oraz buzzer. Szczegółową pinologię na wszelki wypadek powtórzę nieco niżej.
Ledów sygnalizujących pracę pompy i grzałki na razie nie podłączaj - musimy przedyskutować sens ich podłączania pod piny procesora.
Do celów testowych, a wiem, że testujesz układ na ATB, pozwoliłem sobie zasymulować pracę pompy oraz grzałki świeceniem ledów
podłączonych do pinów, które finalnie będą sterowały triakami. Zmieniłem jedynie stan aktywny, bo ledy na ATB włączane są stanem niskim, a triak będziesz włączał stanem wysokim (o ile się nie mylę), a więc jedną diodę podłączasz do PB1 - ta będzie symulowała pompę, a drugą do PB2 - ta będzie symulowała grzałkę.
Nowe nazwy przyciskówPC0 - temperatura minus/czas minus/tryb pracy pompy w lewo/ przesuniecie menu w lewo (stara nazwa temp+)
PC1 - edit/ok/start (stara nazwa temp-)
PC2 - temperatura plus/czas plus/tryb pracy pompy w prawo/ przesuniecie menu w prawo (stara nazwa start)
Po włączeniu zasilania możesz się poruszać w lewo lub w prawo klawiszami plus i minus, by zmienić któreś ustawienie, a możesz po prostu nacisnąć klawisz ok/edit/start, by wytrawiarka rozpoczęła pracę z domyślnymi ustawieniami. Naciśnięcia klawiszy sygnalizowane są krótkimi bipnięciami buzzera. Obecne domyślne ustawienia to:
czas trawienia: 15 minut
temperatura trawienia: 45 stopni
czas pracy pompy: 5 sekund
czas postoju pompy: 10 sekund
Minutnik wytrawiarki nie ruszy, dopóki ciecz w naczyniu nie nagrzeje się do oczekiwanej temperatury (domyślnie 45 stopni).
Podczas poruszania się po menu klawisze plus i minus służą do wyboru parametru (temperatura, czas i tryb pracy pompy), a klawisz ok/edit/start służy do wejścia w tryb zmiany aktualnie wyświetlanego parametru. Tryb ten sygnalizowany jest znakami > < widocznymi na brzegach dolnego wiersza wyświetlacza. Po dokonaniu zmiany parametru należy ponownie nacisnąć klawisz ok/edit/start, by powrócić do trybu poruszania się po menu.
Ekran wyświetlający stan urządzenia służy jednocześnie do rozpoczęcia procedury trawienia. Na ekranie tym widoczny jest w górnym wierszu napis "Stopped-press OK" , co oznacza, że aktualnie urządzenie nie pracuje, a w dolnym wierszu ustalony czas pracy urządzenia i aktualna temperatura cieczy. Po wciśnięciu przycisku ok/edit/start urządzenie rozpoczyna pracę.
Jeśli ciecz nie była wcześniej rozgrzana, w górnym wierszu ukaże się napis "warming up...", co oznacza podgrzewanie cieczy do temperatury domyślnej lub użytkownika. Po osiągnięciu wymaganej temperatury cieczy urządzenie wyda z siebie bipnięcie o długości 1s oraz odliczać czas do końca pracy, a w górnym wierszu wyświetlacza pojawi się napis "running!".
Zakończenie pracy sygnalizowane jest krótkim bipnięciem buzzera.
Parametry pracy urządzenia można zmieniać również podczas procedury trawienia - urządzenie reaguje na zmiany w czasie rzeczywistym.
Ok, jeszcze przypomnę pinologię. Jest ona identyczna zarówno dla układu ATmega8, jak i dla ATmega32:
PB0 - czujnik temperatury
PB1 - pompa (na czas symulacji podłącz diodę led)
PB2 - grzałka(na czas symulacji podłącz diodę led)
PC0 - przycisk
PC1 - przycisk
PC2 - przycisk
PC3 - buzzer (aktywny stan wysoki)
PD0 - RS wyświetlacza
PD1 - RW wyświetlacza
PD2 - E wyświetlacza
PD3 - D4 wyświetlacza
PD4 - D5 wyświetlacza
PD5 - D6 wyświetlacza
PD6 - D7 wyświetlacza
PD7 - sterowanie podświetleniem wyświetlacza
Aktualizacja I:
Dodana obsługa buzzera
Dodany znak stopnia Celsjusza
Drobne poprawki kosmetyczne
Uaktualnione wsady do procesorów:
pcbmaker.zip
Aktualizacja II:
Dodany zapis ustawień użytkownika w pamięci EEPROM. Wystarczy po edycji któregoś z ustawień dłużej przytrzymać klawisz ok/edit/start, by dane zostały zapamiętane. Urządzenie zasygnalizuje ten fakt długim bipnięciem (1s). Oprogramowanie testuje integralność danych i nie jest to bynajmniej proste sprawdzenie, czy w EEPROM siedzą 0xFF.
Kilka dodatkowych porządków w sofcie
Finalne wsady do procków:
pcbmaker_final_with_eeprom.zip
Pozdrawiam!