TINY HW RS232 dazuprogrammieren.

Gast #2763471
Lesenswert?

Hallo, ich arbeite gerade an einem SW Add-on welcher einen HW-Uart 
simuliert.

Dieser braucht derzeit 3 Register, und in der HW sind 4 übrig.

Nur hätte ich gerne auch einen ms Timer oder so, was dann ein viertes
Register bedeuten würde.

Inwiefern ist ein GPIORx Register wichtig ?
Senden und empfangen im selben Register, würde das gehen ?
Könnte nähmlich ein Register sparen.

Mein Register sieht derzeit so aus, wobei cntx 0 ist wenn nicht gesendet 
oder
empfangen wird.

enum { cnt0, cnt1, cnt2, uart_rx, uart_tx_int, uart_rx_int, uart_err , 
tick};
sowie noch ein bit in einem anderen Register um uart_tx zu triggern und
die zwei buffer für rx und tx.

Wie würdet ihr eich entscheiden.
Derzeit, Code noch ungetestet und ohne eigene Interruptcode für 
rx/tx/tick
Gast #2763564
Lesenswert?

Danke für die Einschätzung. Bin neu bei den AVr´s.
Wird dann wohl auf ein Include File rauslaufen, eigentlich hoffte ich
es mit dem Bootloader sowie CRC Algh zu kombinieren.

Derzeitiges Target ist eine RS485 Applikation und es verwendet den 
Timer0
Gast #2763741
Lesenswert?

Genau, einer der günstigen tiny ohne uart. Tiny24 als Beispiel, wobei es
warscheinlich günstigere gibt, ADC ist auch ein muss sowie daß ein 
ganzer
Port zur Verfügung bleibt, und man auch ein externes Quarz anschließen 
kann.
Es gibt einige Tiny welche den Quarzpin mit dem OCR0A Pin teilen, diese
würde ich vermeiden. Weiters muss noch ein RS485/CAN Tranceiver
draufkommen und der Prozessor muss am RX Pin mittels eines Low Pegels 
aus
dem sleep Modus aufgeweckt werden können. Alternativ sollte daisy-chain
mit rs232 möglich sein, ohne Tranceiver.

Der Timer0 ist als Resource blockiert, kann aber Millisekunden oder 
dergleichen Zählen. Das Hauptregister bildet das OCR0B Register, wobei
da eigentlich nur 3 bits hauptsächlich für den Zähler genutzt werden,
die restlichen bits könnten auch ausserhalb der Register sein.

Also auch auf anderen Controllern zu verwenden. Es wird mit 3-6 fachen
Oversampling zu festen Zeiten mittels CTC das rs232 Signal eingelesen.
Die Ausgabe funktioniert auch mit dem CTC und pin Ändern des TCCR0A
Register.

Preis, 2.5-3.5€ für ein Node mit Tranceiver, 2€ für daisy-chain,
bei einer Auflage von 200 Stück.

Ich weiss, von der Zeit rechnet es sich nicht die ca 150€ Einsparung 
durch
günstigere CPU zu rechtfertigen, aber es ist für mich ein Anfang in der
Programmierung der AVR sowie warscheinlich stehen in naher Zukunft eine
mittlere Serie an.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren