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.
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!
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!
Timer 0 ist ein 8-Bit Timer. TCNT0 ist ein Byte groß und nicht 2 Byte. Das steht auch im Datenblatt. MW
ach... Ich möchte aber gar nichts mit Timer 0 machen sondern mit dem 16-bit Timer1
Was willst du mit dem Timer machen? Overflow-Interrupt auswerten? (es gibt diverse Interruput-Quellen im Zusammenhang mit Timern...)
ja genau das möchte ich machen. Ich weiss nur nicht was ich falsch mache. Beim mega8 hat das alles prima funktioniert.
>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)
tjo... hab am montag erst angefangen mit assembler und yC programmierung...
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.
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^^.
µ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!
>Seid mir trotzdem nicht böse
Wenn man wenigstens zugibt, dass die Faulheit gesiegt hat...
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!
zeichmal, was du geschrieben hast. Die USART-Parameter (Baudrate etc) wären auch interessant.
.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
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
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
>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ß...
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????
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?
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.
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
> unerfahren
Okay - aber nach vierzehneinhalb Jahren hätte ein eigener Thread sicher
eine bessere Resonanz gefunden.
? 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).
Keine Ahnung was das bedeutet- ich wollte nur auf meine Frage eine geschulte Antwort von einen Profi-was bedeutet der rote Hinweis?
Dass man nochmals überlegen sollte, ob etwas Eigenes nicht besser wäre.
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
Vergesst es, es hat keinen Sinn. Klaus, du bist hier falsch gelandet.
> 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.
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.
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.
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.
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...
Ich gebe mein Anliegen hiermit auf- Vielen Dank für die "nette Bewirtung"
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.