Cześć.
Problem: w pewnym cpu został mi 1 pin. Chce podpiąc wyświetlacz i klawiaturę, odległość naście cm, prędkość znikoma.
Wstawiam więc drugi cpu.
Cpu1 to avr, cpu2 może być byleczym.
Teraz: cpu1 jest *bardzo* zajęty. Gdzieś koło 90% mocy w przerwaniach, dwa timery wolne. W głownej pętli programu mam chwilę (nierównomierne) na obsługę czegoś, co jakieś 1000-3000 cykli 20MHz. Cpu2 od wyświetlacza (2x16) i klawiatury nie ma nic do roboty.
No i teraz się zastanawiam, czy jest jakiś pomysł na komunikację po 1 drucie w *dwie* strony:
a) nie obciąza cpu sztucznymi pętlami opóźniającymi b) nie wymaga szybkiego poolingu na liniach c) może korzystać z hardware cpu, prawie wszystko wolne (pwm, timery, uart itd) d) da radę wysłać jakieś 100 bajtów / sek i odebrać 10 bajtów sek (jakość obsługi).
Oczywiście od razu nasuwa sie 1-wire, ale powtarzam: nie mam cpu dla siebie. Przyszedł mi do głowy pomysł aby sterować szerokością impulsu
1-wire za pomocą wolnego PWM. Gorzej z czytaniem, choć może dałbym radę trafiać jako tako z czytaniem pomiędzy przerwaniami. Oczywiscie to może być "moje" 1-wire i np. mogę je znacząco spowolnić. Moge też popędzić cpu1 większym zegarem ale to ostateczność.Zanim zaczne kombinować z 1wire - czy zna ktoś inny protokół 1-drutowy? Od biedy mogę podpiąć wspólny XTAL do obu jesli coś to da.
Nie, nie zmienię avr-a cpu1 na coś innego. Nie ma nic innego w tym zastosowaniu (szybki cykl zegarowy, 5V) co miało by ekonomiczny sens.