-
1. Data: 2016-05-29 22:56:33
Temat: Jakiś pomysł na komunikację po 1 drucie bez obciązania cpu?
Od: Sebastian Biały <h...@p...onet.pl>
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.
-
2. Data: 2016-05-29 23:10:10
Temat: Re: Jakiś pomysł na komunikację po 1 drucie bez obciązania cpu?
Od: Jakub Rakus <s...@o...pl>
W dniu 29.05.2016 o 22:56, Sebastian Biały pisze:
> c) może korzystać z hardware cpu, prawie wszystko wolne (pwm, timery,
> uart itd)
No to może jednak UART? Pod warunkiem, że możesz tak go poustawiać żeby
jeden pin był na przemian nadajnikiem i odbiornikiem.
--
Pozdrawiam
Jakub Rakus
-
3. Data: 2016-05-30 01:41:27
Temat: Re: Jaki? pomys? na komunikacj? po 1 drucie bez obci?zania cpu?
Od: a...@m...uni.wroc.pl
Sebastian Bia?y <h...@p...onet.pl> wrote:
> 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.
Oczywistym rozwiazaniem jest UART w half-duplex. 1-wire to nie jest
dobry pomysl, bo przy ustalonej szybkosci transmisji wymaga duzo
lepszej rozdzielczosci czasowej niz UART. Niekture procesory
(np. STM32) maja UART sprzetowo wspierajacy half-duplex,
w AVR nie zauwazylem takiej mozliwosci... Programowo UART
mozna zrobic z timera kosztem jednego przerwania na bit.
Tzn. uzywasz timer do pomiaru czasu miedzy zboczami
przy odbiorze, przy nadawianiu machasz GPIO z przerwania
timera. 1200 bitow na sekunde powinno Ci wystarczyc, wiec
jak zniesiesz dodatkowe 1200 przerwan to bedzie OK.
Mozesz uzyc tez kombinowane rozwiazanie: sprzetowy UART
do odbioru, softwarowy (na tej samej linii) do nadawania.
Jeszcze jeden pomysl: sporo CPU ma UART-y ktore moga
odbierac np. 5MHz. Wiec z AVR mozesz nadawac z duza
szybkoscia, tak ze bajt zajmie powiedzmy 2us. Na tyle
pewnie mozesz zablokowac przerwania.
--
Waldek Hebisch
-
4. Data: 2016-05-30 08:19:33
Temat: Re: Jakiś pomysł na komunikację po 1 drucie bez obciązania cpu?
Od: jacek pozniak <j...@f...pl>
Sebastian Biały wrote:
> 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).
Zaemuluj UARTA programowo w głównej pętli (oczywiście nieblokująco).
Synchronizację (zegar) wyznaczaj przez wolny timer.
W najgorszym przypadku główna pętla jest wołana co 1,5ms więc odebrać 10
znaków/s powinno się dać bez problemu, nie wiem tylko czy wyślesz tak
100bajtów/sec (chociaż jeśli cpu2 będzie dość mądre to może da radę
odebrać).
jp
-
5. Data: 2016-05-30 10:09:20
Temat: Re: Jakiś pomysł na komunikację po 1 drucie bez obciązania cpu?
Od: Piotr Gałka <p...@c...pl>
Użytkownik "Sebastian Biały" <h...@p...onet.pl> napisał w wiadomości
news:nifl22$9um$1@node2.news.atman.pl...
> 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.
Podwieszone OC - każdy może wymusić 0.
Jeden cały czas taktuje linię - impulsy 0 krótsze od odstępów.
Czasy dobrane tak, aby obserwujący linię nie przegapił impulsu.
Jak chce coś nadać to zaczyna od dłuższego impulsu = bit startu itd.
Jak drugi chce nadać to robi to przedłużając obserwowany impuls = bit
startu.
P.G.
-
6. Data: 2016-05-30 12:12:10
Temat: Re: Jakiś pomysł na komunikację po 1 drucie bez obciązania cpu?
Od: Czarek Grądys <c...@w...onet.pl>
W dniu 29.05.2016 o 22:56, Sebastian Biały pisze:
> Cześć.
>
> Problem: w pewnym cpu został mi 1 pin. Chce podpiąc wyświetlacz i
> klawiaturę, odległość naście cm, prędkość znikoma.
>
Może się przyda, wprawdzie potrzebujesz w 2 strony, ale może
uda się ten pomysł rozwinąć.
https://developer.mbed.org/cookbook/1-wire-shifting-
2x16-LCD
--
Cezary Grądys
c...@w...onet.pl
-
7. Data: 2016-05-30 15:07:02
Temat: Re: Jakiś pomysł na komunikację po 1 drucie bez obciązania cpu?
Od: AlexY <a...@i...pl>
Czarek Grądys pisze:
> W dniu 29.05.2016 o 22:56, Sebastian Biały pisze:
>> Cześć.
>>
>> Problem: w pewnym cpu został mi 1 pin. Chce podpiąc wyświetlacz i
>> klawiaturę, odległość naście cm, prędkość znikoma.
>>
>
>
> Może się przyda, wprawdzie potrzebujesz w 2 strony, ale może
> uda się ten pomysł rozwinąć.
>
>
> https://developer.mbed.org/cookbook/1-wire-shifting-
2x16-LCD
Genialne w swojej prostocie, dodane do przydasiów, dzięki.
--
AlexY
http://faq.enter.net.pl/simple-polish.html
http://www.pg.gda.pl/~agatek/netq.html
-
8. Data: 2016-05-30 15:18:28
Temat: Re: Jakiś pomysł na komunikację po 1 drucie bez obciązania cpu?
Od: Marek <f...@f...com>
On Sun, 29 May 2016 22:56:33 +0200, Sebastian
Biały<h...@p...onet.pl> wrote:
> No i teraz się zastanawiam, czy jest jakiś pomysł na komunikację po
1
> drucie w *dwie* strony:
A PJON rozważałeś? Taka alternatywa do 1W:
http://hackaday.com/2016/03/31/pjon-fancy-one-wire-a
rduino-communications-protocol-for-home-automation/
--
Marek
-
9. Data: 2016-05-30 18:31:12
Temat: Re: Jakiś pomysł na komunikację po 1 drucie bez obciązania cpu?
Od: Jakub Rakus <s...@o...pl>
W dniu 29.05.2016 o 22:56, Sebastian Biały pisze:
> Cześć.
>
> Problem: w pewnym cpu został mi 1 pin. Chce podpiąc wyświetlacz i
> klawiaturę, odległość naście cm, prędkość znikoma.
Takie coś znalazłem:
http://nerdralph.blogspot.com/2014/01/avr-half-duple
x-software-uart.html
--
Pozdrawiam
Jakub Rakus