Forum: Mikrocontroller und Digitale Elektronik TINY HW RS232 dazuprogrammieren.


von guest (Gast)


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

von guest (Gast)


Lesenswert?

Codegröße ca 350 bytes und möchte es dann später gerne mit fastboot
kombinieren.

von Thomas E. (thomase)


Lesenswert?

guest schrieb:
> Inwiefern ist ein GPIORx Register wichtig ?
Kannst du beliebig verwenden.

> Senden und empfangen im selben Register, würde das gehen ?
Natürlich nicht.

> Könnte nähmlich ein Register sparen.
Pack die langsamen und nicht ständig benutzten Variablen ins RAM.

mfg.

von guest (Gast)


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

von Achim M. (minifloat)


Lesenswert?

Welchen Prozessor verwendet der feine Herr guest denn?
mfg mf

von Thomas E. (thomase)


Lesenswert?

Mini Float schrieb:
> Welchen Prozessor verwendet der feine Herr guest denn?
Einen neueren Tiny ohne Usart aber mit GPIOs.

guest schrieb:
> TINY
> GPIORx Register

Also kein 2313, sondern 24, 25, 261, 48 oder die entsprechenden 
grösseren Geschwister.

mfg.

von guest (Gast)


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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.