PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Atmega16 Uart interupt



wolfi-25
14.08.2005, 00:28
Hallo
Nun habe ich erfolgreich bei meinen At M16 die Fusebits gesetzt und nun
Läuft mein Programm vom 4433 in dem M16 .Leider Funktioniert das
Empfagen auf der Uart nicht wie im 4433 da läuft es ohne Probleme,
gibt es denn da wieder was ich da bei dem M16 besonders einstellen muß
?
Ich benute Bascom Avr

Hier ein kleiner Auschnitt wie ichs gemacht habe :

ist nur zum Testen. Quartfrequenz hab ich 7,3728 Mhz

Hat vieleicht einer eine idee?

MFG Wolfi

On URXC OnRxD
Enable URXC
Enable Interrupts

Main:
If Len(s) > 9 Then
Printbin s
s = ""
End If
Goto Main

OnRxD:
s = s + Chr(UDR)
Return

Rage_Empire
14.08.2005, 01:37
Ich vermute mal, das die Fuses nicht stimmen (Frequenz). Die Fuses sind zwischen den beiden angegebenen µCs nicht indentisch, so weit ich mich erinnern kann. Hast du auch die Frequenz des Quarzes so dem Compiler angegeben?
[$crystall=....]
Und die Baudrate angegeben?
[$Baud=.....]

Marco78
14.08.2005, 07:04
Hast du auch $regfile = "m16def.dat" eingefügt bzw auf das geändert?
Alle nötigen Änderungen was das Handling von INT usw angeht sollte BASCOM dann von sich aus machen.

PicNick
14.08.2005, 09:04
Um die ganze Chip-, Fuses-, Quartz- und Baudraten- Problematik vom Tisch zu bekommen, versuch erst mal sowas :
https://www.roboternetz.de/wiki/pmwiki.php?n=Main.BasComVergleich2
Nicht, daß das so schön wäre, aber wenn das funktioniert, kannst du sicher sein, daß alle Probleme nurmehr von deinem Programm her kommen und nicht von irgendwas oben genanntem.

Ein Problem ist, daß sowohl Interrupt als auch MAIN-Loop die gleichen Variablen lesen und verändern. Sowas birgt einen hohen Unterhaltungswert und viele Überraschungen in sich.

Vorschlag: Probier einmal Hello World und das Echo, und wenn das geht, sehen wir weiter.

14.08.2005, 18:51
Hallo
Das war wirklich was mit den Fuse bits hab ihn jetzt auf 4 Mhz intern gesetzt dun da funktionierts war mir aber sicher das er richtig auf externen Quarz gestellt ist . Aber mit der einstellung 1111;1111 funktionierts nicht . was soll ich den da einstellen ?

MFG

Wolfi

Marco78
14.08.2005, 19:04
Datenblatt Mega16 Seite 23:

Table 2.
Device Clocking Options Select(1) Device Clocking Option CKSEL3..0
External Crystal/Ceramic Resonator 1111 - 1010
External Low-frequency Crystal 1001
External RC Oscillator 1000 - 0101
Calibrated Internal RC Oscillator 0100 - 0001
External Clock 0000

Probier doch mal 1001