PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem mit Quarz und Atmega8



cesupa
18.08.2007, 09:10
Hallo,

vorab, ich bin noch ein blutiger Anfänger in Sachen Microkontroller und versteh deshalb auch noch nicht soviel davon. Jedenfalls hab ich mal versucht einen externen Quarz(16MHz) an meinen Atmega8 anzuschließen. Nachdem ich dann die Fuse Bits auf 0xee gesetzt habe funktionierte mein Atmega8 nicht mehr richtig, heißt also, wenn ich versuche ihn anzusprechen kommt meistens eine Fehlermeldung. Nur selten wird der Atmega8 von UISP erkannt. Die Quarzschaltung hab ich von hier übernommen (nur eben mit einem 16MHz Quarz):

http://derjulian.net/mikrocontroller#quarz

Kann ich irgendwie die Funktion des Quarzes überprüfen(ohne Oszillator)?
Oder kann mit jemand sagen ob ich was falsch gemacht habe?

Gruß
cesupa

Hubert.G
18.08.2007, 10:13
Ich weiss nicht womit du programmierst, sieht nach BASCOM aus. Ändere den Wert im Fuse Bit auf 0xde und das Highbyte auf 0x89. Es ist möglich das der Quarz nicht voll schwingt. Das sollte damit verbessert werden.
Testen kannst du den Quarz nur in einer anderen Schaltung oder mit einem Quarztester. Das sind Grundwellenquarze, da kann es bei der Frequenz schon vorkommen das einer nicht richtig schwingt.

pongi
18.08.2007, 11:27
Hast Du nicht zufällig einen Atmega8L? Der kann nur max. 8MHz, die Version ohne L kann auch 16MHz. Details siehe Datenblatt.

cesupa
18.08.2007, 16:27
Okay, danke hat funktioniert. Jetzt quält mich halt nur noch das Problem mit dem programmieren bei 16 MHz, die Programme, die ich überspiele werden immer noch nicht ausgeführt. CKOPT hab ich im High Byte auch schon auf programmed geschaltet, funktioniert jedoch immer noch nicht. Habt ihr da vielleicht noch eine Lösungsidee?

Gruß
cesupa

Hubert.G
18.08.2007, 17:06
Bist du sicher das die Programme nicht ausgeführt werden. Vielleicht läuft das ganze nur viel zu schnell. Lass doch nur mal ein LED blinken.

cesupa
18.08.2007, 17:26
Also das Programm sieht so aus:


#include <avr/io.h>
#define F_CPU 16000000

#include <util/delay.h>

unsigned char tt;

int main(void)
{
DDRD |= (1 << PD0); // PD0 als Ausgang festlegen
while(1) // Unendlich lang wiederholen
{
tt=0;


PORTD |= (1 << PD0);
/*
while(tt<50)
{
_delay_ms(10);
tt++;
}

tt=0;




PORTD &=~(1 << PD0);

while(tt<200)
{
_delay_ms(10);
tt++;
}
*/

}
return 0;
}

Wenn ich das richtig gemacht habe, müsste die LED aufleuchten. Blinken funktioniert auch nicht.

Gruß
cesupa

Hubert.G
18.08.2007, 17:56
Also du musst Hardwaremässig was falsch haben, bei mir blinkt die LED.

cesupa
18.08.2007, 19:11
Naja, ich hab mir überlegt morgen vielleicht ein neues Board zu machen aber diesmal mit Atmega32. Werd mich wieder melden sollte es wieder nicht funktionieren. Danke fü eure Hilfe.

Gruß
cesupa

SIGINT
18.08.2007, 20:00
Hi cesupa,
das ist der falsche Weg, den du einschlägst. Versuch erstmal dein existierendes Board ans laufen zu bringen und steige erst auf den Mega32 um, wenn du mit dem Mega8 wirklich nichtmehr auskommst. Das dürfte i.d.R aber schon einige Monate dauern, da der Mega8 zum experimentieren optimal ist. Kontrollier einfach mal, ob deine Schaltung eigentlich richtig ist und ob dein Board nicht irgendwelche Fehler hat.

Gruß,
SIGINT

Hellmut
19.08.2007, 00:59
Hallo cesupa

Um die Scheu vor dem Mikrocontroller zu verlieren und die enormen Möglichkeiten im Modellbau zu realisieren gibt es im Forum www.rcline.de einen "Einsteiger-Thread"" Wenn du die Beiträge dort siehst haben viele den Zugang geschafft weil sie in ganz kleinen Schritten angefangen haben und dabei durch Erfolgserlebnisse die Motivation zum Weitermachen fanden. Ich empfehle dir wie dort beschrieben vorzugehen, die Testprogramme auszuprobieren und dann diese weiter verändern.

Ich kann SIGNT nur bestätigen und dir ebenfalls versichern das die Möglichkeiten des mega8 längere Zeit ausreichen viele Träume zu realisieren. Auch findest du dort rege Unterstützung bei Problemen von Mitgliedern die den Lernvorgang bereits selber durchlaufen haben und auch von Torsten selber.

Ich will dich damit keinesfalls weg von diesem Forum lotsen, ichsehe es nur als sehr guten Zwischenschritt bis wir alle hier von deinen Erfahrungen und Ideen profitieren werden.

cesupa
19.08.2007, 10:20
Okay, danke Leute, werde mir das Forum mal anschauen.

Gruß
cesupa

P.S.: Das Board für den Atmega32 wird grad entwickelt ;)

cesupa
19.08.2007, 15:37
So, hab mir jetzt mal diesen Einsteigerkurs angeschaut und beschlossen die Platinen nachzubauen. Nun hab ich aber auch schon eine Frage zum Schaltplan des ISP-Adapters dort: Am Pin 1 und 19 des IC's befindet sich so ein komischer Halbkreis, der mich ein wenig stutzig macht. Könnt ihr mir erklären, was der zu bedeuten hat?

Gruß
cesupa

cesupa
19.08.2007, 15:44
Dabei fällt mir grad noch auf: Woran erkenn ich denn welche Leitung mit welchem Pin verbunden werden muss??? Was bedeuten da die Zahlen an den Leitungen am IC oder "A1","A2",...,"Y1","Y2",... auf dem IC drauf???

Sunstar
29.08.2007, 13:36
Hi Leute,

ich bin auch ein Anfänger in Sachen MC Programmierung. Ich wollte dieses Blinkprogramm mal in meinen mega8 MC einspielen. Ich benutze das STK500 und CodeVisonAVR. Ich habe auch die Ports auf mein Board umgeschrieben, leider blink bei mir nichts. :(
Ich bekomme die Fehlermeldungen: undefined symbol'_delay_ms'. Ich stehe da etwas auf dem Schlauch wie ich dies zum lafen bekomme.

Hubert.G
29.08.2007, 14:11
Im CodeVision wird es kein _delay_ms geben. Das Programm ist für GCC geschrieben. Hier das *.hex File.