welcher Atmel für Torzähler? Im Unterforum Microcontroller - Beschreibung: Hardware - Software - Ideen - Projekte
Autor |
welcher Atmel für Torzähler? |
|
|
|
|
BID = 159072
Morgoth Schreibmaschine
Beiträge: 2930 Wohnort: Rockenhausen (Pfalz)
|
|
so, mit dem programm für den alltagsgebrauch bin ich jetzt durch, es werden sogar auch schon nullchen erkannt...
jetzt kommt der zusatz-firlefanz für den Turnierbetrieb:
also ich kann ja auf dem chip irgendwo nen ASCII-Text hinterlegen, und den dann bei bedarf über das UART ausdrucken - soweit keine probleme
nur, wie mach ich das codemässig, dass in dem text platzhalter sind die dann meine im spiel gewonnenen daten annehmen, und ausgeben?
in Pascal ist das ja kein Problem, nur wie geht das in Assembler? die Tutorials die ich habe geben da leider keinen aufschluss drüber...
evtl würde mir auch einfach die "wissenschaftliche" Bezeichung für diesen Vorgang weiterhelfen, damit ich weiß wonach ich googlen muss.
_________________
Es irrt der Mensch solang er strebt
[ Diese Nachricht wurde geändert von: Morgoth am 5 Feb 2005 11:43 ] |
|
BID = 159472
Morgoth Schreibmaschine
Beiträge: 2930 Wohnort: Rockenhausen (Pfalz)
|
|
ok so einfach ist das drucken an sich wohl doch nicht...
was fehlt diesem Code noch, damit der drucker druckt?
weil bisher macht er genau nix
Code : |
.include "4433def.inc"
.def temp = R16
ldi R16, RAMEND
out SPL, R16 ; Stackpointer initialisieren
sbi UCSRB,TXEN ; UART TX aktivieren
ldi temp,4000000/(9600*16)-1 ; Baudrate 9600 einstellen
out UBRR,temp
start:
ldi ZL, LOW(text*2) ; Adresse des Strings in den
ldi ZH, HIGH(text*2) ; Z-Pointer laden
rcall print ; Unterfunktion print aufrufen
ldi R16, 10 ; die Bytes 10 und 13 senden
rcall sendbyte ; (Zeilenumbruch im Terminal)
ldi R16, 13
rcall sendbyte
loop:
rjmp loop ; endlosschleife
; print: sendet die durch den Z-Pointer adressierte Zeichenkette
print:
lpm ; Erstes Byte des Strings nach R0 lesen
tst R0 ; R0 auf 0 testen
breq print_end ; wenn 0, dann zu print_end
mov r16, r0 ; Inhalt von R0 nach R16 kopieren
rcall sendbyte ; UART-Sendefunktion aufrufen
adiw ZL, 1 ; Adresse des Z-Pointers um 1 erhöhen
rjmp print ; wieder zum Anfang springen
print_end:
ret
; sendbyte: sendet das Byte aus R16 über das UART
sendbyte:
sbis UCSRA, UDRE ; warten bis das UART bereit ist
rjmp sendbyte
out UDR, R16
ret
text:
.db "AVR-Assembler ist ganz einfach",0,13,10,12 ; Stringkonstante, durch eine 0 abgeschlossen
|
|
_________________
Es irrt der Mensch solang er strebt |
|
BID = 161091
perl Ehrenmitglied
Beiträge: 11110,1 Wohnort: Rheinbach
|
Zitat :
| weil bisher macht er genau nix |
Als erstes solltest du mal prüfen, ob die Pinbelegung deiner RS232 Schnittstelle richtig ist. Solange es diese Schnittstelle gibt (und das ist sehr lange), hat es Konfusion gegeben, wer DCE und wer DTE ist.
Ein Hinweis, daß es falsch ist, wäre es, wenn an Pin2 oder Pin3 des Steckers fast keine Spannung anliegt (weniger als 3V).
Normalerweise muß auf beiden Pins eine relativ hohe (8..15V) negative Spannung liegen.
Auf einer dieser Adern sendet dein µC nämlich Daten zum Drucker, während der Drucker auf der anderen Ader z.B. Quittungssignale zurückschickt.
Des weiteren sollte auf deinem Drucker die eingestellte Geschwindigkeit, Parity und auch die Bitzahl mit deiner Sendung übereinstimmen.
ASCII-Daten haben nur 7 Bit und wenn sie als 8-bit schickst, produzierst du im Drucker Framing Errors.
Wenn du die Möglichkeit hast, solltest du das Handshake auch zunächst auf XON/XOFF stellen.
Soetwas :
Zitat :
| .db "AVR-Assembler ist ganz einfach",0,13,10,12 ; Stringkonstante, durch eine 0 abgeschlossen |
klappt natürlich auch nicht.
Auf diese Art wird CR,LF,FF niemals gesendet.
Wie du schon schreibst: Die Null schließt den String ab
--- aber sie steht nicht mittendrin !
_________________
Haftungsausschluß:
Bei obigem Beitrag handelt es sich um meine private Meinung.
Rechtsansprüche dürfen aus deren Anwendung nicht abgeleitet werden.
Besonders VDE0100; VDE0550/0551; VDE0700; VDE0711; VDE0860 beachten !
[ Diese Nachricht wurde geändert von: perl am 10 Feb 2005 2:38 ]
|
BID = 161376
Morgoth Schreibmaschine
Beiträge: 2930 Wohnort: Rockenhausen (Pfalz)
|
hnmm. der kommentar ist ja nicht von mir, ich dachte die dinger die ich dazugescgrieben hab wären "abschließender" als ne 0...
wie stell ich denn die parität und bitrate beim avr ein?
_________________
Es irrt der Mensch solang er strebt
[ Diese Nachricht wurde geändert von: Morgoth am 10 Feb 2005 22:03 ]
|
BID = 161600
Morgoth Schreibmaschine
Beiträge: 2930 Wohnort: Rockenhausen (Pfalz)
|
hmm... also am drucker sind die hohen spannungen auf 1,2 und 6 zu finden, aber mit dem pc lässt er sich ja ansteuern, ist der da variabel?
hier das vllt verbesserte programm:
Code : |
.include "m8def.inc"
.def temp = R16
ldi R16, RAMEND
out SPL, R16 ; Stackpointer initialisieren
ldi R16, (1<<RXEN)|(1<<TXEN)
out UCSRB, R16
ldi R17, high(4000000/(9600*16)-1) ; Baudrate 9600 einstellen
ldi R16, low(4000000/(9600*16)-1)
out UBRRH, r17
out UBRRL, r16
ldi R16, (1<<URSEL)|(1<<USBS)|(3<<UCSZ0)
out UCSRC, r16
start:
ldi ZL, LOW(text*2) ; Adresse des Strings in den
ldi ZH, HIGH(text*2) ; Z-Pointer laden
rcall print ; Unterfunktion print aufrufen
ldi R16, 10 ; die Bytes 10 und 13 senden
rcall sendbyte ; (Zeilenumbruch im Terminal)
ldi R16, 13
rcall sendbyte
loop:
rjmp loop ; endlosschleife
; print: sendet die durch den Z-Pointer adressierte Zeichenkette
print:
lpm ; Erstes Byte des Strings nach R0 lesen
tst R0 ; R0 auf 0 testen
breq print_end ; wenn 0, dann zu print_end
mov r16, r0 ; Inhalt von R0 nach R16 kopieren
rcall sendbyte ; UART-Sendefunktion aufrufen
adiw ZL, 1 ; Adresse des Z-Pointers um 1 erhöhen
rjmp print ; wieder zum Anfang springen
print_end:
ret
; sendbyte: sendet das Byte aus R16 über das UART
sendbyte:
sbis UCSRA, UDRE ; warten bis das UART bereit ist
rjmp sendbyte
out UDR, R16
ret
text:
.db "AVR-Assembler ist ganz einfach",13,10,12,0 ; Stringkonstante, durch eine 0 abgeschlossen
|
|
klappen tut es natürlich noch nicht
ausserdem sin die spannungen am max232 nur um die 4V
wie kann das sein?
_________________
Es irrt der Mensch solang er strebt
|
BID = 163693
perl Ehrenmitglied
Beiträge: 11110,1 Wohnort: Rheinbach
|
Zitat :
| also am drucker sind die hohen spannungen auf 1,2 und 6 zu finden, |
Dan kann das ja nicht funktionieren, denn sowohl der Drucker, wie auch deine Platine versuchen über Pin2 Daten loszuwerden, aber keiner hört zu.
Das ist exakt die Situation, die ich erwähnt hatte.
Sieh dich mal im Netz um, wie du die ein Null-Modem bauen kannst. Das besteht nur aus Stecker, Buchse und ein paar Drähten.
Zitat :
| ausserdem sin die spannungen am max232 nur um die 4V
wie kann das sein? |
Weiß ich nicht, vermutlich hast du einen Kurzschluß, einen Elko verpolt oder nicht angeschlossen, oder der ganze Chip bekommt keine Versorgung oder Masse.
Normalerweise sollten im Leerlauf, also ohne Kabel, +8,5V an Pin2 und -8,5V an Pin6 des Max zu finden sein.
Wenn das nicht der Fall ist, mußt du in dieser Gegend auf Fehlersuche gehen.
_________________
Haftungsausschluß:
Bei obigem Beitrag handelt es sich um meine private Meinung.
Rechtsansprüche dürfen aus deren Anwendung nicht abgeleitet werden.
Besonders VDE0100; VDE0550/0551; VDE0700; VDE0711; VDE0860 beachten !
|
BID = 163712
Morgoth Schreibmaschine
Beiträge: 2930 Wohnort: Rockenhausen (Pfalz)
|
Zitat :
| Weiß ich nicht, vermutlich hast du einen Kurzschluß, einen Elko verpolt oder nicht angeschlossen, oder der ganze Chip bekommt keine Versorgung oder Masse |
jepp, Hatte beim schaltplan machen nicht alles überprüft, obs auch wirklich verbunden ist, oder nur aufeinander liegt, und dann mat beim routen halt mal kurz die versorgungsspannung des max232 gefehlt, aber das ist jetzt nachgeholt.
Nullmodemkabel ist nicht nötig, ich muss dann halt einfach das kabel zur buchse wieder etwas "umklemmen"
Danke für die tipps
Im moment hab ich leider ganz andeere probleme, da der Kicker in das die schaltung jetzt endlich eingebaut ist so starken erschütterungen unterliegt, dass alle stunden nen neuer wackler dazukommt
btw:wie klebt man ne pertinax-platine, dass sie stabiler ist als vorher, man aber immer noch gut dran rumlöten kann?Ich werd ab jetzt keine mehr verwenden, aber diese eine ist jetzt verbaut, und ich möchte ungerne alles auf epoxydharz umlöten
_________________
Es irrt der Mensch solang er strebt
[ Diese Nachricht wurde geändert von: Morgoth am 17 Feb 2005 7:32 ]
|
BID = 170215
Morgoth Schreibmaschine
Beiträge: 2930 Wohnort: Rockenhausen (Pfalz)
|
Soo, Für alle die es interressiert, was aus dem Projekt geworden ist:
HIERKlicken
_________________
Es irrt der Mensch solang er strebt
|
|
Zum Ersatzteileshop
Bezeichnungen von Produkten, Abbildungen und Logos , die in diesem Forum oder im Shop verwendet werden, sind Eigentum des entsprechenden Herstellers oder Besitzers. Diese dienen lediglich zur Identifikation!
Impressum
Datenschutz
Copyright © Baldur Brock Fernsehtechnik und Versand Ersatzteile in Heilbronn Deutschland
gerechnet auf die letzten 30 Tage haben wir 19 Beiträge im Durchschnitt pro Tag heute wurden bisher 6 Beiträge verfasst © x sparkkelsputz Besucher : 182418077 Heute : 2575 Gestern : 7490 Online : 262 28.11.2024 14:36 6 Besucher in den letzten 60 Sekunden alle 10.00 Sekunden ein neuer Besucher ---- logout ----viewtopic ---- logout ----
|
xcvb
ycvb
0.0371041297913
|