AT90S1200

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: 06 11 2024  01:04:19      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 Nächste Seite )      


Autor
AT90S1200

    







BID = 137080

perl

Ehrenmitglied



Beiträge: 11110,1
Wohnort: Rheinbach
 

  


Und so sieht die zugehörige Disassemby aus:
+00000000: C003 RJMP +0x0003 ; Destination: 0x000004
+00000001: 9518 RETI
+00000002: 9518 RETI
+00000003: 9518 RETI
+00000004: 2466 CLR R6
+00000005: E480 LDI R24,0x40 ; 0x40 = 0b01000000 = 64
+00000006: BB81 OUT 0x11,R24
+00000007: E280 LDI R24,0x20 ; 0x20 = 0b00100000 = 32
+00000008: BB82 OUT 0x12,R24
+00000009: 2700 CLR R16
+0000000A: E3A0 LDI R26,0x30 ; 0x30 = 0b00110000 = 48
+0000000B: 918C LD R24,X
+0000000C: FB85 BST R24,5
+0000000D: F40E BRTC +0x01 ; Destination: 0x00000F
+0000000E: E001 LDI R16,0x01 ; 0x01 = 0b00000001 = 1
+0000000F: E040 LDI R20,0x00 ; 0x00 = 0b00000000 = 0
+00000010: 1704 CP R16,R20
+00000011: F009 BREQ +0x01 ; Destination: 0x000013
+00000012: C002 RJMP +0x0002 ; Destination: 0x000015
+00000013: 9A96 SBI 0x12,6
+00000014: C001 RJMP +0x0001 ; Destination: 0x000016
+00000015: 9896 CBI 0x12,6
+00000016: CFF2 RJMP -0x000E ; Destination: 0x000009
+00000017: 94F8 CLI
+00000018: CFFF RJMP -0x0001 ; Destination: 0x000018
+00000019: 9731 SBIW R30,0x1
+0000001A: F7F1 BRNE -0x02 ; Destination: 0x000019
+0000001B: 9508 RET
+0000001C: 9468 SET
+0000001D: F862 BLD R6,2
+0000001E: 9508 RET
+0000001F: 94E8 CLT
+00000020: F862 BLD R6,2
+00000021: 9508 RET


_________________
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 = 137409

MinceR

Stammposter



Beiträge: 277

 

  

wenn ich mich nicht vertue kann das ja überhaupt nicht gehen.
warum reti wenn er kein stack hat? er springt zu 3 und von da aus zurück dahin was aufm stack liegt. da sollte er aber nur 0 rauskriegen also springt er zurück zu 0. und der mist geht von vorne los.

edit: oops, destination 4.. hab mich vertan. stimmt ja nicht.. werds mir heut abend mal genauer angucken..

oder sehe ich das falsch? simulieren kann ich den 1200 garnicht wegen dem sram.. der fehlt ja.



[ Diese Nachricht wurde geändert von: MinceR am  9 Dez 2004  7:55 ]

BID = 137452

robodriver

Stammposter

Beiträge: 217

OK, hoffe du findest was.

Aber bitte sag mir was im Programm in Bascom ändern muss, damit ich es nachfolziehen kann und den Fehler nie wieder mache. (Wenn nicht, reicht es auch wenn du mir die neue HEX-File gibst).

Danke schon mal im vorraus für deine Hilfe.

BID = 137606

MinceR

Stammposter



Beiträge: 277

guck mal bitte ob er nur 1 mal das programm abfährt und zwar beim einschalten. also auf input auf gnd ziehen, einschalten. und dann auf + und einschalten.

wie ich das beim überfliegen so sehe springt er in zeile 18 zurück zu zeile 18. und das für immer. bin momentan dabei aus den ioports was sinniges zu machen (ddrd usw...)

BID = 137629

MinceR

Stammposter



Beiträge: 277

+00000000: C003 RJMP +0x0003 ; Destination: 0x000004 ;reset
+00000001: 9518 RETI
+00000002: 9518 RETI
+00000003: 9518 RETI
+00000004: 2466 CLR R6 ;lösche r6
+00000005: E480 LDI R24,0x40 ; 0x40 = 0b01000000 = 64
+00000006: BB81 OUT 0x11,R24 ;ddrd pin 6 ausgang. ()
+00000007: E280 LDI R24,0x20 ; 0x20 = 0b00100000 = 32
+00000008: BB82 OUT 0x12,R24 ;pullupvon portd 5 einschalten, eingang

;anfang
+00000009: 2700 CLR R16 ;anfang
+0000000A: E3A0 LDI R26,0x30 ; 0x30 = 0b00110000 = 48; ;lade adresse von pind in X
+0000000B: 918C LD R24,X ; lese was an adresse x liegt (lese pinD)
+0000000C: FB85 BST R24,5 ; bit 5von r24 in T speichern(also was am eingang(pind5) anliegt in T speichern)
+0000000D: F40E BRTC +0x01 ; Destination: 0x00000F ;wenn t=0 dann springe (nächsten befehl überspringen)
+0000000E: E001 LDI R16,0x01 ; 0x01 = 0b00000001 = 1
+0000000F: E040 LDI R20,0x00 ; 0x00 = 0b00000000 = 0 ;
+00000010: 1704 CP R16,R20 ;vergleiche r16 mit 20. equal wenn eingang portd5 =0
+00000011: F009 BREQ +0x01 ; Destination: 0x000013 wenn eingang 0 ist springe
+00000012: C002 RJMP +0x0002 ; Destination: 0x000015 springe wenn eingang 1 ist.
+00000013: 9A96 SBI 0x12,6 ;wenn eingang 0 dann portd6 =1
+00000014: C001 RJMP +0x0001 ; Destination: 0x000016
+00000015: 9896 CBI 0x12,6 ;portd6 =0
+00000016: CFF2 RJMP -0x000E ; Destination: 0x000009zurück zu anfang
alle befehle die danach kommen sind unnütz!!!!!!!!

alles richtig. muss gehen. hab das auch mit dem nachfolger vom 1200 simuliert (at90s2313) vorher verglichen ob die register passen. und funktioniert einwandfrei. ich würde so sagen das du höchstwarscheinlich keinen ordentlichen tackt hinkriegst.
nu fällt mir gerade ein, sag nicht das du den AVR auf einem experimentier platine raufgesteckt hast. son teil was man bei conrad kriegt wo man ics einfach raufstecken kann.

p.s. ich hab nu 37minuten gebraucht um den kappes zu raffen. ich häts nicht komplizierter hingekriegt. macht 2 angebrochene halbe stunden= 1 std. das war das erste und letzte mal das ich mir ein fremdes proggi angeguckt hab das nicht in assembler geschrieben wurde.


MfG MinceR

BID = 137635

MinceR

Stammposter



Beiträge: 277

nochn tipp, wenn du dir das nächste mal was zum testen kaufen willst hol dir 2 ganz dicke. atmega16, oder atmega8515 oder ka was. gucke beim testen von sowas nie auf den preis, du willst ja das testen was die so können und nicht gucken wie schnell du an deine grenzen des programmiertechnisch möglichen kommst.

hätte ich das in assembler geschrieben und nicht dein compiler säh das mickeymaus proggi so aus:



Code :


ldi r16,0b01000000
out ddrd,r16 ;(6 als ausgang alles andere eingang)
ldi r16,0b00100000
out portd,r16 ; pullup von d-5 an
main:
in r16,pind
andi r16, 0b00100000 ;nur noch das was an pind5 ist in r 16 lassen
cpi r16,0b00100000;vergleiche mit konstante
breq loeschen; springe zu löschen also ausgang 0
ldi r16,0b01100000
out portd,r16 ;ausgang 1 (und pullupvon 5 =1 also ändert sich nicht)
rjmp main
loeschen:
ldi r16,0b00100000
out portd,r16 ;ausgang 0 (und pullupvon 5 =1 also ändert
rjmp main


dafür hab ich nu 3 minuten gebraucht und der funktioniert bei jedem AVR der ein portD hat :p

BID = 137820

robodriver

Stammposter

Beiträge: 217

Erstmal tausend dank für deine Hilfe!!!

Ich kann die ganze sache auch in Assambler schreiben, aber das ist mir noch etwas zu kompliztiert, meinst du es würde sich lohnen damit anzufangen?

Werde dieses Wochenende den Code mal draufspielen, mal schauen ob es Funktioniert.

Aber nochmals aber tausend mal danke für den Zeitaufwand!

BID = 137861

MinceR

Stammposter



Beiträge: 277

wie gesagt, dein code ist in ordnung. ich glaub alles was nach speicherstelle 16h kommt sind noch überreste vom alten. es geht jedenfalls. und wenn du das so vom µC geholt hast muss wie gesagt was am tackt nicht stimmen. falls du das ganze auf nem experimentier platine haste mal alles an xtal1 und xtal2 weglassen und einen tacktgeber an xtal 1 anschliessen. ich hab für sowas nen 1kHz oszillator. falls mal was nicht stimmt kann ich so immernoch testen obs geht.

BID = 137871

MinceR

Stammposter



Beiträge: 277

also das beste was man machen kann ist erst mal grundlagen in assembler lernen, ein bissl rumspielen und dann auf C umsteigen.
falls du irgendwo mit C ein problem hast oder dein C compiler etwas nicht so hinkriegt wie ers soll kannste direkt das mit assembler machen und in deinen C code einfügen.
du wirst denke ich ausserdem dich sehr wundern was man sogar mit assembler alles hinkriegt, besonders da ja die größeren AVR ne mänge kram verbaut hat die dir unheimlich arbeit abnehmen.
wenn ich da nur z.b. an den uart denke. musst 1 mal den einstellen und dann kannste schon vom pc daten schicken die in einem speziellen register vom µC landen und umgekehrt..

ausserdem biste mit C dann auch für andere plattformen gewidmet. bascom hat meiner meinung nach keine echte zukunft in irgendwas.

BID = 137961

robodriver

Stammposter

Beiträge: 217

Na gut
das mit dem Takt könnte ja dann nur die einzigste Lösung sein. Aber ich habe mir jetzt auch schon nen neuen Quarz (4MHZ) gekauft und es hat immer noch nicht funktioniert.

Wie Sieht ein Quarzoszillator aus? ist es das, was wie ein Quarz aussieht aber 4 Beinchen hat und flach liegt? (Habe soetwas von 386er rechnern noch da).
Wenn ja, dann musst du mir mal bitte noch sagen wie ich das ding anschließen soll.

BID = 138016

Jornbyte

Moderator



Beiträge: 7170

Das proggi von MinceR ist ist schon ok. Nur solltest du am Anfang .include "1200def.inc" stehen haben. Die Include-Datei sollte sich im gleichen Verzeichniss wie das proggi befinden.

_________________
mfg Jornbyte

Es handelt sich bei dem Tipp nicht um eine Rechtsverbindliche Auskunft und
wer Tippfehler findet, kann sie behalten.

BID = 138143

MinceR

Stammposter



Beiträge: 277

ja ich hab das bei einer test platine vom conrad. da steckste die bauteile so rauf ohne zu verlöten. keine ahnung warum aber der quarz schwingt nicht an. der schwingt ja nicht von alleine sondern nur in verbindung mit dem µc (weil xtal 2 das was an xtal1 anliegt invertiert, und dann legt er los)
ein quarzoszilator schwingt vollkommen von alleine, wird also NICHT mit xtal2 verbunden.

ganz einfach, der hat 4 beine,
1x gnd
1x Vcc
1x ausgang (der schon fertig schwingt sobald er + und gnd hat) -> den mit xtal1 verbinden, sonst nichts.
1x nicht verbunden

was was ist weiss ich nicht.

BID = 138190

robodriver

Stammposter

Beiträge: 217

Na ja, hab mir selber eine Platine gebaut, ohne jegliches schnick schnack, nur mit einem Stecker, um ihn mit dem Rechner zu verbinden; einen Kondi zwischen VCC und GND. und dann den Besagten Quarz und an jedes Beinchen des Quarzes einen kleinen Kondensator der dann an GND geht.
Müsste doch funktionieren oder?

Werd nächste woche mal nen plan mit werten schicken.

BID = 138192

perl

Ehrenmitglied



Beiträge: 11110,1
Wohnort: Rheinbach


Zitat :
nd an jedes Beinchen des Quarzes einen kleinen Kondensator der dann an GND geht.
Müsste doch funktionieren oder?

Wenn die klein genug sind.

Sonst nimm doch einfach den chipinternen RC-Oszillator. Daran ist nichts falsch zu machen.


_________________
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 11 Dez 2004 18:08 ]

BID = 138325

robodriver

Stammposter

Beiträge: 217

Das würde ich ja auch liebendgern machen.
Währe mir am liebsten.
ABER: Hab das schonmal probiert und durch das setzen der Fuse-Bits den Kompletten µC Unansprechbar gemacht. Wenn du mir mit 1000%iger sicherheit sagen kannst wie ich auf den Internen Oscillator umschalte währe ich dir sehr dankbar.
Dazu hab ich dann nur noch eine Frage: Die beiden Anschlüsse XTAL1 und XTAL2 bleiben dann komplett frei?


Vorherige Seite       Nächste Seite
Gehe zu Seite ( Vorherige Seite 1 | 2 | 3 | 4 Nächste Seite )
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 24 Beiträge im Durchschnitt pro Tag       heute wurden bisher 1 Beiträge verfasst
© x sparkkelsputz        Besucher : 182289301   Heute : 124    Gestern : 4667    Online : 547        6.11.2024    1:04
2 Besucher in den letzten 60 Sekunden        alle 30.00 Sekunden ein neuer Besucher ---- logout ----viewtopic ---- logout ----
xcvb ycvb
0.0579280853271