Behöver soft-UART i C för ATtiny44

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
JohnA
Inlägg: 215
Blev medlem: 19 september 2011, 12:25:51
Ort: Vallentuna
Kontakt:

Behöver soft-UART i C för ATtiny44

Inlägg av JohnA »

Just när projektet såg ut att komma igång har det hängt sig på en irriterande detalj: En ATmega88 ska skicka data någon halvmeter via en tunn tretrådig ledning till en ATtiny44 som i sin tur ska driva en multiplexad LED-display. Ledningen får bara innehålla GND, +5V och data, det finns inte plats för en fjärde tåt.

Den mottagande ATtinyn bör ha gott om tid på sig att fånga upp mottagen information, det enda som kommer störa är LED-multiplexingen som måste uppdateras minst 50ggr i sekunden för att inte uppfattas som "darrig".

Den sändande ATmega88:an kommer däremot ha en hel del tidskritiska saker för sig så jag vill inte belasta den med att i mjukvara generera självklockande en-tråds överföring t.ex. liknande Dallas 1-wire. Det vore således smidigt att kunna använda USART:en för sändning, men jag
har ingen färdig idé för hur vanlig standard asynkron seriell mottagning kan ordnas med C-kod till den mottagande ATtinyn vars USI bara kan hantera synkron kommunikation (TWI/SPI).

Till råga på allt måste överföringen fungera säkert trots att båda enheterna kommer drivas från sina RC-klockor.

Idéer någon?
gkar
Inlägg: 1586
Blev medlem: 31 oktober 2011, 15:28:29
Ort: Linköping

Re: Behöver soft-UART i C för ATtiny44

Inlägg av gkar »

Jag har för mig att atmel har kod för detta. Rota bland deras demosnuttar...

Annars är det skitenkelt. Vissta kan man CPU vänta, men det är inte rätt.
Fyll i de missade detaljerna!..
Annars är ett sätt att sätta upp en timer, 16ggr bitrate och sampla I/O pinnen.
När startflanken kommit, väntar du en halv bit(dvs 8 timer) sedan kommer varje bit var 16e timer.
Alternativt, du tar in datat på en extern INT, startar timer satt till halv bitrate + stäng av INT, startbit inne, ställ om timer till bitrate, sedan kommer varje bit varje timer. Räkna till hur många bitar du vill ha. slå på INT.

Har du någon annan timer INT som går (display multiplex etc), använd den...
Johanb
Inlägg: 3406
Blev medlem: 26 mars 2006, 22:26:12
Ort: Smedjebacken

Re: Behöver soft-UART i C för ATtiny44

Inlägg av Johanb »

Om du kollar i databladet, 14.4.1 ,så nämner de att USI kan användas som halv-duplex UART. Hur man gör bör också finnas i databladet eller som en app-note.
Skriv svar