Jag gillar att saker och ting inte tar så lång tid när man programmerar. Att skriva program kan såklart ta en helsikes tid men vänta-funktioner hatar jag - om de stannar programflödet under tiden de väntar.
Tyvärr är timing en del av vardagen och ett exempel är 1-Wire kommunikation.
Även där har jag stramat det en del men det kan göras bättre!
Steg 1 är att jag alltid har någon drivning mellan µC och ledningar som lämnar kretskortet! I detta fall ett par N-MOSFET (2N7002). Detta betyder att jag har en "sänd"-pinne på µC' och en annan "mottagning"-pinne.
Ska jag köra ut en '0'-puls måste µC'n tyvärr vänta den tidperiod som behövs, jag har kollat med interrupt men det blir ingen vinst med det.
Men nu fick jag en idé: SPI! Om jag byter pinnar så att jag har en UART TX och RX och sätter UART'en i SPI (Clock Syncronus) kommunikation med en bitrate runt 800k, då blir det till att göra ett par ISR som tar hand om detta.
Ska man skicka en reset (480µs+) är det bara en fråga om att skicka 384 st 0xFF, vid att skicka några 0x00 efter det kan man enkelt läsa ACK-pulsen på RX.
På detta sätt kan man enkelt köra hårdvarabaserat kommunikation med tight tidschema, perfekt till 1-Wire. Visst, vissa saker - t.ex. reset-pulsen - kan man köra enklare med en timer eller liknande men själva kommunikationen är en fråga om att sända och ta emot några bytes och tolka dom rätt.
1-Wire med SPI?
- lillahuset
- Gått bort
- Inlägg: 13969
- Blev medlem: 3 juli 2008, 08:13:14
- Ort: Norrköping
Re: 1-Wire med SPI?
Verkar som en bra idé. Man ska inte underskatta seriell I/O. Oavsett om man vill göra vad processorns konstruktör tänkt sig eller något annat.
Re: 1-Wire med SPI?
Jag har redan en timer-interrupt baserat kommunikation med 1-Wire, den kan hitta alla 1-Wire enheter med sök-algoritmen och jag får en lista med alla enheter som hittas.
Samma lista kan användas för att läsa temperaturer, då skickas en "No ROM" samt "Convert" och sedan läsas värden ut i enlighet med listan.
Så en SPI-kommunikation ville vara det sista för att fixa timingen utan att vänta.
Samma lista kan användas för att läsa temperaturer, då skickas en "No ROM" samt "Convert" och sedan läsas värden ut i enlighet med listan.
Så en SPI-kommunikation ville vara det sista för att fixa timingen utan att vänta.