Hallo, ich bin ziemlich neu mit microcontrollern, also ich habe einen ATmega 162 mit externem 16mhz takt und möchte dass er daten per uart an meinen pc sendet, später auch ma zurück wie im tutourial. Klingt ja eingeltich einfach aber egal was ich gemacht hab, es funktionierte entweder garnnicht oder ich bekam nur zeichen in hex auch 00 und 80, ich habe schon viele andere beiträge durchgelesen aber genutzt hats irgendwie nix, troz dass ich jetzt schon seit 3 tagen rum probiere. Ich habe auch in einem anderen forum einen beitrag gefunden bei dem jemand genau das selbe problem hat wie ich aber wie der das da gelöst hat verstehe ich ned so ganz: http://www.avrfreaks.net/phpBB2/viewtopic.php?t=19455&highlight=atmega162 hier noch ein so nen code bei dem ich immer die falschen zeichen bekomm... .include "m162def.inc" .def temp = r16 .equ CLOCK = 16000000 .equ BAUD = 9600 .equ UBRRVAL = CLOCK/(BAUD*16)-1 ; Stackpointer initialisieren ldi temp, LOW(RAMEND) out SPL, temp ldi temp, HIGH(RAMEND) out SPH, temp ; Baudrate einstellen ldi temp, LOW(UBRRVAL) out UBRR0L, temp ldi temp, HIGH(UBRRVAL) out UBRR0H, temp ; Frame-Format: 8 Bit ldi temp, (1<<URSEL0)|(3<<UCSZ00) out UCSR0C, temp sbi UCSR0B,TXEN ; TX aktivieren loop: ; Unterprogramm aufrufen ldi temp, 'A' out UDR, temp rcall serout ; Unterprogramm aufrufen rjmp loop serout: sbis UCSR0A,UDRE ; Warten bis UDR für das nächste ; Byte bereit ist rjmp serout out UDR, temp ret ; zurück zum Hauptprogramm wäre nett wenn mir jemand helfen könnte, thx
also ich habs nun endlich rausgefunden... die CKOUT und CKDIV8 sind von werk aus so gesetzt dass es für uart ned geht....
Kann es sein, dass Du immer zwei 'A' empfängst? So wie ich deinen Code verstehe, schreibst du bevor du aus dem Unterprogramm zurückspringst noch mal das 'A'ins UDR. Wäre der AVR nicht so schnell, oder hättest du noch mehr Code nach dem 2. "out UDR, temp", würde noch ein Buchstabe gesendet werden. Der wird aber überschrieben.. etwas unsauber würde ich das nennen. Gruß Rahul
Hallo Du betreibst dein Atmega mit 16 MHZ wollt Dich nun fragen welchen Kombination hast du bei den Fuse Bits gewählt? Ich will ein ATmega 128 auf externe Beschaltung einstellen aber komme mit den Datenblättern nicht so klar. Das Nächste ist das ich die Serielle Schnittstelle noch progranieren will wie gehe ich da am besten vor? Danke schon mal Jörg
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.