-
-
Hey leute danke sehr für eure Hilfen ...
Hab es grad eben noch hinbekommen,
war doch nicht so schwer zuprogrammieren, mir haben nur paar Grunddaten gefehlt
Aber soviel war garnicht gefragt, ich setze einfach die Ausgabe PINC0 auf low und auf high, und dabei lass ich immer dazwischen eine Zeitschleife laufen, somit bekomme ich mein Rechtecksignal.
Zeitschleife beträgt 1m/sec. Und mit der eingabe in PINA kann man wählen wie lange die Zeitschleife laufen soll.
Nur ein Problem habe ich da noch, undzwar wenn ich für PINA nichts eingebe,
sollte er normal garnicht im Loop arbeiten und auf ret gehen,
aber er fängt von FF an runterzuzählen.
Ab der eingabe 1 in PINA macht der das nicht mehr...
Danke nochmal vielmals
MFG
-
wartms:
; warte 3999 Zyklen:
in r17, PinA
LOOP: ldi r18, $1F
LOOP0: ldi r19, $1A
LOOP1: dec r19
brne LOOP1
dec r18
brne LOOP0
dec r17
brne LOOP
; warte 1 Zyklus:
reti
hier zum besseren Verständnis!
-
Erfahrener Benutzer
Robotik Einstein
Mach doch eine Abfrageroutine vor deiner Zeitschleife rein
IN r17,PINA
TST r17
BRNE weiter
CBI PORTC,0
JMP ENDEROUTINE
weiter:
hier geht dein ASM PROG weiter.
Durch Deine Art der Ausgabeprogrammierung kann dein ATMEGA 16 aber keine anderen Aufgaben mehr ausführen als ein Rechtecksignal zu erzeugen, weil sonst deine Zeitschleife unterbrochen wird und die Frequenz somit nicht mehr stimmt.
Für nen Test mag das ja OK sein im richtigen Leben wäre sowas aber Käse.
-
Erfahrener Benutzer
Robotik Einstein
Na also, so schlecht wie zunächst dargestellt können Deine ASM-Kenntnisse also kaum sein. Was Dein FF statt 0-Problem angeht: wie legst Du denn den Wert an PortA an? Bzw.: ist PortA offen, wenn nichts angelegt ist? Das würde dann ja das FF bei aktiven Pullups erklären. Oder hab ich jetzt was übersehen?
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen