welcher Atmel für Torzähler?

Im Unterforum Microcontroller - Beschreibung: Hardware - Software - Ideen - Projekte

Elektronik Forum Nicht eingeloggt       Einloggen       Registrieren




[Registrieren]      --     [FAQ]      --     [ Einen Link auf Ihrer Homepage zum Forum]      --     [ Themen kostenlos per RSS in ihre Homepage einbauen]      --     [Einloggen]

Suchen


Serverzeit: 28 11 2024  14:36:56      TV   VCR Aufnahme   TFT   CRT-Monitor   Netzteile   LED-FAQ   Osziloskop-Schirmbilder            


Elektronik- und Elektroforum Forum Index   >>   Microcontroller        Microcontroller : Hardware - Software - Ideen - Projekte

Gehe zu Seite ( Vorherige Seite 1 | 2 | 3 | 4 | 5 | 6 )      


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


Vorherige Seite      
Gehe zu Seite ( Vorherige Seite 1 | 2 | 3 | 4 | 5 | 6 )
Zurück zur Seite 0 im Unterforum          Vorheriges Thema Nächstes Thema 


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