Forum: Mikrocontroller und Digitale Elektronik Atmel mega64 Timer dringend


von Captain Chaos (Gast)


Lesenswert?

Hallo!
Ich habe Probleme damit den Timer1 beim mega64 zu Initialisieren.
Ich möchte in ohne Vorteiler, mit Interrupt initialisieren und verwende 
Assembler und würde mich über schnelle Hilfe freuen.

von inoffizieller WM-Rahul (Gast)


Lesenswert?

Guck gaaanz schnell ins Datenblatt!

von Captain Chaos (Gast)


Lesenswert?

bin ich zu faul für!

von inoffizieller WM-Rahul (Gast)


Lesenswert?

Ich bin auch zu faul...

von Captain Chaos (Gast)


Lesenswert?

ldi r17,0x01
ldi r16,0xFF
out TCNT0H,r17
out TCNT0L,r16
; Read TCNT0 into r17:r16
in r16,TCNT0L
in r17,TCNT0H

So das funzt net!

von Captain Chaos (Gast)


Lesenswert?

das ist mein code:
.def mp = r16
.org 0x001C jmp tc0i

...

ldi   mp,0x00 ;
     out   TCCR1A,mp
  ldi   mp,0x01
  out   TCCR1B,mp

  ldi mp,0x02
     out TIMSK,mp
      sei
...

und wenn ich das jetzt auf meinen Chip mache funktioniert gar nix!

von Michael Wilhelm (Gast)


Lesenswert?

Timer 0 ist ein 8-Bit Timer. TCNT0 ist ein Byte groß und nicht 2 Byte. 
Das steht auch im Datenblatt.

MW

von Captain Chaos (Gast)


Lesenswert?

ach...
Ich möchte aber gar nichts mit Timer 0 machen sondern mit dem 16-bit 
Timer1

von inoffizieller WM-Rahul (Gast)


Lesenswert?

Was willst du mit dem Timer machen? Overflow-Interrupt auswerten? (es 
gibt diverse Interruput-Quellen im Zusammenhang mit Timern...)

von Captain Chaos (Gast)


Lesenswert?

ja genau das möchte ich machen. Ich weiss nur nicht was ich falsch 
mache.
Beim mega8 hat das alles prima funktioniert.

von inoffizieller WM-Rahul (Gast)


Lesenswert?

>ldi mp,0x02

müsste

ldi mp,0x04

heissen.

Da ist es doch immer wieder sinnvoll, die Makro-Schreibweise zu 
verwenden:

ldi mp,(1<<TOIE1)

von Captain Chaos (Gast)


Lesenswert?

klasse!
das wars vielen dank!

von inoffizieller WM-Rahul (Gast)


Lesenswert?

30 Sekunden Datenblatt-Recherche...

von Captain Chaos (Gast)


Lesenswert?

tjo... hab am montag erst angefangen mit assembler und yC 
programmierung...

von inoffizieller WM-Rahul (Gast)


Lesenswert?

Lesen kannst du aber schon länger, oder?
Programmieren eines µC ("µ" griech. "mikro", ALT-m) ist grundsätzlich 
mit der Lektüre des Datenblattes (complete datasheet) verbunden.

von Jörg B. (manos)


Lesenswert?

Da schreib ich jetzt schon geraume Zeit hier im Forum und mir ist das 
"µ" auf der M-Taste noch nie aufgefallen :)

Aber bei uC wusste bisher wahrscheinlich auch jeder was ich meinte^^.

von Captain Chaos (Gast)


Lesenswert?

µC schon verstanden. Seid mir trotzdem nicht böse, wenn ich schon mal 
fragen stelle, die man auch mit dem data-sheet lösen könnte!

von inoffizieller WM-Rahul (Gast)


Lesenswert?

>Seid mir trotzdem nicht böse

Wenn man wenigstens zugibt, dass die Faulheit gesiegt hat...

von Captain Chaos (Gast)


Lesenswert?

so hab jetzt aber doch noch eine Frage:
Wie initialisiert man den USART vom mega64? Habe mir den Code
aus dem Datenblatt angesehen und versucht in mein Programm einfliessen 
zu lassen, jedoch bekomme ich folgende Fehler:
UBRR0H  = error: Operand 1 out of range: 0x90
out UBRR0L, UBRRVAL = error: Invalid register
(.equ UBBRVAL = 2000000/(16*9600)-1)
UCSR0C = error: Operand 1 out of range: 0x95

nein diesmal hat nicht die Faulheit gesiegt, sondern das Anfängerwissen
hat nicht ausgereicht!

von inoffizieller WM-Rahul (Gast)


Lesenswert?

zeichmal, was du geschrieben hast. Die USART-Parameter (Baudrate etc) 
wären auch interessant.

von Captain Chaos (Gast)


Lesenswert?

.equ CLOCK = 2000000
.equ BAUD = 9600
.equ UBRRVAL = CLOCK/(BAUD*16)-1
.def mp, r16

ldi   mp, 0x00;
out   UBRR0H, mp
ldi   mp ,UBRRVAL               ; Baud einstellen
out   UBRR0L, mp
ldi   mp, (1<<RXEN0)            ; Empfang aktivieren
out   UCSR0B,mp
ldi   mp, (0<<USBS0)|(3<<UCSZ00); frame format einstellen: 8data, 1stop 
bit
out UCSR0C,mp

von Tassilo B. (big_t)


Lesenswert?

Seite 24 in meiner Version vom AtMega64-Datenblatt:

...
The ATmega64 is a complex microcontroller with more peripheral units 
than can be supported within the 64 location reserved in Opcode for the 
IN and OUT instructions. For the Extended I/O space from 0x60 - 0xFF in 
SRAM, only the ST/STS/STD and LD/LDS/LDD instructions can be used.
...

-> bei allen Registerbezeichnungen in der 'm64def.inc' des AVR-Studios, 
bei denen ein 'MEMORY MAPPED' dahintersteht, funktioniert in/out nicht. 
Stattdessen muß mithilfe eines 'normales' Register und den Befehlen 
lds/sts gearbeitet werden.

Statt

out UBRR0L, UBRRVAL

muß es beispielsweise heißen

ldi R16, UBRRVAL
sts UBRR0L, R16

Warum darauf in den Beispielen der Datenblätter keine Rücksicht genommen 
wird, weiß ich auch nicht.

Tassilo

von Captain Chaos (Gast)


Lesenswert?

seid ihr jetzt umgefallen weil das so falsch ist oder was?

von Captain Chaos (Gast)


Lesenswert?

nicht schlecht! leute ihr gefallt mir immer besser!

von Tassilo B. (big_t)


Lesenswert?

Es gibt auch Leute, die so ein Forum nur nebenbei beobachten können und 
nicht den ganzen Tag darauf warten, daß irgendjemand was wissen will...

Tassilo

von inoffizieller WM-Rahul (Gast)


Lesenswert?

>Seite 24 in meiner Version vom AtMega64-Datenblatt:

Bei mir steht sowas ähnliches (eher in Bezug auf die Beispiele im 
Datenblatt) auf Seite 7.

Ich war deswegen etwas ratlos, weil ich in C programmiere und mich 
deswegen nicht um Alternativ-Befehle kümmern muß...

von Klaus R. (klaus_r825)


Lesenswert?

Hallo,
ich habe einen defekten E-Bike Akku und ich glaube das im BMS verbaut 
ein Atmel Chip ist. Kann mir dieser Chip das aufladen meines Akkus 
verhindern. Komme aus dem Kfz-Bereich und habe mit dieser Elektronik 
keine Ahnung, will aber mein Bike wieder hin bekommen-kannst du mir 
helfen????

von Stefan F. (Gast)


Lesenswert?

Und ich habe einen defekten Wasserkocher. Kann ich ihn mit der Nvidia 
GPU meines alten Laptops reparieren?

Echt Klaus, deine Frage ist total bescheuert. Natürlich kann ein 
Batterie Management System verhindern, dass die Batterie geladen wird. 
Aber wie soll dich diese Erkenntis nun weiter bringen?

Und vor allem: Was hat das mit diesem Thread zu tun?

von Klaus R. (klaus_r825)


Lesenswert?

Auf diese Antwort hätte ich auch verzichten können.

von uff basse (Gast)


Lesenswert?

Klaus R. schrieb:
> Auf diese Antwort hätte ich auch verzichten können.

Auf Fragen solcher Art, noch dazu in einem gekaperten Thread,
sehr wohl auch.

von Klaus R. (klaus_r825)


Lesenswert?

Da bin ich wohl doch zu unerfahren in diesem Forum-ich habe nur den Chip 
auf meiner Leiterplatte abgelesen,dann im Forum eingegeben und auf 
dieser Seite gestoßen-und dann kam halt meine vielleicht nicht gerade 
geübte Frage von mir

von S. Landolt (Gast)


Lesenswert?

> unerfahren
Okay - aber nach vierzehneinhalb Jahren hätte ein eigener Thread sicher 
eine bessere Resonanz gefunden.

von Klaus R. (klaus_r825)


Lesenswert?

vierzehn oder viereinhalb?

von S. Landolt (Gast)


Lesenswert?

?
Vierzehneinhalb: 14.5 Jahre, seit Oktober 2006. Und bei Ihnen stand ja 
auch noch ein roter Warnhinweis über dem Antwortfenster (der dann in der 
Folge verschwindet).

von Klaus R. (klaus_r825)


Lesenswert?

Keine Ahnung was das bedeutet- ich wollte nur auf meine Frage eine 
geschulte Antwort von einen Profi-was bedeutet der rote Hinweis?

von S. Landolt (Gast)


Angehängte Dateien:

Lesenswert?

Dass man nochmals überlegen sollte, ob etwas Eigenes nicht besser wäre.

von Klaus R. (klaus_r825)


Lesenswert?

Jetzt habe ich es verstanden mit dem rot eingeblendeten- besser wäre, 
das ich einen eigenen Beitrag erstellt hätte. Wie gesagt,ich bin zu 
wenig im Forum und mit dessen Umgang zu ungeübt- aber ich denke,das ich 
auf eine positive Antwort gestoßen wäre,wenn ich jemanden anders im 
Forum angetroffen hätte.

: Bearbeitet durch User
von Stefan F. (Gast)


Lesenswert?

Vergesst es, es hat keinen Sinn. Klaus, du bist hier falsch gelandet.

von S. Landolt (Gast)


Lesenswert?

> jemanden anders im Forum angetroffen hätte.
Tja, Klaus R., ich hätte gerne geholfen, habe aber von E-Bike-Akkus 
nicht die geringste Ahnung. Vom ATmega64-Timer aber sehr wohl.

von uff basse (Gast)


Lesenswert?

Klaus R. schrieb:
> aber ich denke,das ich
> auf eine positive Antwort gestoßen wäre,wenn ich jemanden anders im
> Forum angetroffen hätte.

Wenn man so daneben ins Forum eintaucht, dann eher nicht. Da
haben auch die Moderatoren was dagegen. Damit hier nicht alles
in Kraut und Rüben dasteht ....

Einfach mal die Umgebung studieren und einen neuen Versuch
mit eigenem Thread starten.

von Karin Nöring-Blackheart (Gast)


Lesenswert?

Ach was! Die haben nichts dagegen, daß Beiträge in der falschen Rubrik 
stehen:

Beitrag "Erder zusammen mit Zuleitung verlegen?"

Nur Kritik daran -die wird natürlich auch in der falschen Rubrik 
gelöscht.

von uff basse (Gast)


Lesenswert?

Karin Nöring-Blackheart schrieb:
> Ach was! Die haben nichts dagegen, daß Beiträge in der falschen Rubrik
> stehen:

Nun, anhand der gelöschten Beiträge kann man das natürlich nicht
nachweisen. Aber vieleicht an den gesperrten Threads.

von Karin Nöring-Blackheart (Gast)


Lesenswert?

uff basse schrieb:
> Karin Nöring-Blackheart schrieb:
>> Ach was! Die haben nichts dagegen, daß Beiträge in der falschen Rubrik
>> stehen:
>
> Nun, anhand der gelöschten Beiträge kann man das natürlich nicht
> nachweisen. Aber vieleicht an den gesperrten Threads.

Der steht unter "PC-Programmierung". Man könnte denken, daß das im Zuge 
von Löschorgien durchziehender Moder-marodeure bemerkt würde. Aber mit 
Schaum vor dem Mund und bei der Jagd nach Phantomen rast man da 
drüberweg...

von Klaus R. (klaus_r825)


Lesenswert?

Ich gebe mein Anliegen hiermit auf- Vielen Dank für die "nette 
Bewirtung"

von uff basse (Gast)


Lesenswert?

Klaus R. schrieb:
> Vielen Dank für die "nette Bewirtung"

Ohne was gezahlt zu haben?

von Klaus R. (klaus_r825)


Lesenswert?

Das Bier war sauer

von S. Landolt (Gast)


Lesenswert?


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.