Hi
Ich habe hier einen Aufbau auf dem ich den Atmega stecken kann, somit
immer die gleichen Voraussetzungen. Ich will einen Atmega1284P
verwenden(habe bisher immer Atmega32 verwendet).
Nun wollte ich das Programm erstellen, da ich für den ATmega32 schon
einmal den UART Baugleich verwendet hatte habe ich das Alte Programm als
Basis genommen und die Register angepasst. Als ich das Testen wollte hat
es nicht funktioniert. Um nun einen Fehler im Aufbau Ausschließen zu
können Habe ich die selbe Formlage noch einmal genommen diesmal jedoch
die Register gelassen und das Programm auf einen Atmega32 aufgespielt.
Da hat es Sofort funktioniert.
Nun habe ich die Programme nebeneinander gelegt und miteinander
verglichen.
Sie unterscheiden sich nur dadurch das ich beim einen nicht genutztes
Gelöscht beim andren auskommentiert habe und durch die geäderten
Register Bezeichnungen.
die Datenblätter habe ich auch nochmal durchgesehen und konnte nichts
finden was ich meiner Meinung nach anders hätte machen müssen.
Das Programm soll das empfangene Zeichen wieder zurücksenden.
Atmega32
Das Problem beim Atmega1284P Äußert sich dadurch das anstelle des
gesendeten Zeichens ein "Leer" Zeichen zurück kommt. Um zu sehen ob da
überhaupt was empfangen wird, habe ich mir was zeichne beim Atmega1284P
auf Port C Anzeigen lassen, dieser ist mit 8 LEDs ausgestattet. Dabei
ist mir Aufgefallen das wen ich das Gleiche Zeichen mehrfach sende die
LEDs nicht immer das Gleiche anzeigen.
Zum Taktgeber ich verwende momentan ein 16MHz Quarzoszillator und habe
in beiden Projekten 16MHz in der Konfiguration stehen später wollte ich
auf 20MHz erhöhen.
die Variablen Bezeichnungen machen eigentlich keinen Sinn, sind noch
nicht angepasst.
Kann mir jemand sagen was ich falsch mache. Ich möchte doch nur das, das
gesendet Zeichen zurückkommt.
MFG MIKE
Mike B. schrieb:> Zum Taktgeber ich verwende momentan ein 16MHz Quarzoszillator
und ist der auch auf deinem 1284 aktiviert?
Anschliessen alleine ist zu wenig. Der muss auch per Fuse aktiviert
werden.
Mike B. schrieb:> Sollte so sein habe eben mal geschaut, das ist ausgewählt :>> Ext. Crystal Osc. 8.0- MHz; Start-up time: 16K CK + 65 ms
ok.
Ich würde das noch kontrollieren, deine 'Symptome' klingen ganz stark
nach falscher Taktfrequenz.
Aber gut, wenn du sicher bist, dass der Takt passt, dann mach das als
dein erstes Testprogramm
1
intmain(void)
2
{
3
uart_init();
4
5
while(1)
6
{
7
uart_putc('x');
8
}
9
}
und dann gehst du mal mit einer LED auf die Suche, ob am Tx Pin der
UART0 was rauskommt und verfolgst es bis zur Gegenstelle.
Nun, es wäre sinnvoll, sich beim Anpassen auch mal die Beschreibungen im
Datenblatt zu Gemüte zu führen, und nicht nach dem Motto vorzugehen
"oh, der Mega1284 hat ja gar kein URSEL, dann nehme ich halt UMSEL, das
klingt ja fast gleich".
darauf wies klingt hab ich nicht geachtet fiel mehr darauf wo es stand.
gut das scheint auch keine gute Lösung gewesen zu sein.
es scheint es nicht zu geben aber mit weglassen funktioniert es auch
nicht.
hat mir jemand ein Beispiel das funktioniert?
aktueller stand :
Mike B. schrieb:> Sollte so sein habe eben mal geschaut, das ist ausgewählt :>> Ext. Crystal Osc. 8.0- MHz; Start-up time: 16K CK + 65 ms
Und was ist mit CKDIV8?
CKDIV8 kante ich gar nicht, habe eben nachgelesen was das ist und die
Fuses der Beiden Atmegas verglichen und festgesetzt das die sich
unterscheiden.
Mit CKDIV8 aus und
Ext. Clock; Start-up time: 6 CK + 65 ms
funktioniert es
hab ich das richtig verstanden, wen CKDIV8 an ist habe ich einen
Vorteiler von 8 und somit nur 2MHz anstelle von 16MHz ?
MFG MIKE