Per FuseBits.Wie kann ich einstellen, dass der atmega einen externen quarz nutzt?
Wenn du das selbe meinst die ich, muss nciht aber ist besser!Muss der quarz eigentlich kondensatoren zu masse haben?
Hallo,
Das ist mein erstes µC projekt nach einem Lauflicht.
Oben im bild sind led´s die eine Minute darstellen und unten led´s die 10 minuten darstellen.
Im bild sind es gerade 16 minuten.Untwen sit auch eine an, die kann man schlecht erkennen.
Mit den beiden Minuten kann man die Zeit eine Minute hoch oder runter setzen.
Der Taster in der Mitte macht, dass die eieruhr anhält runterzu zählen bzw. weiterzählt.
Es wird von der Led an der das II zeichen ist angezeigt.
Insgesammt kann die Eieruhr 69 Minuten Anzeigen.
Ich danke vor allem Thomas, der mir sehr geholfen hat auber auch vielen anderen.
Jetzt habe ich noch eine Frage:
Im moment läuft der Atmega32 noch ohne quarz.
Wie kann ich einstellen, dass der atmega einen externen quarz nutzt?
Muss der quarz eigentlich kondensatoren zu masse haben?
Per FuseBits.Wie kann ich einstellen, dass der atmega einen externen quarz nutzt?
Wenn du das selbe meinst die ich, muss nciht aber ist besser!Muss der quarz eigentlich kondensatoren zu masse haben?
Wäre gut zu wissen wie du den Controller programmierst....dann kann man dir das bischen genauer erklären, weil je nach Programm was du benutzt macht man das anders.
Und der Kondensator für das Quarz ist mein ich dafür da damit das Quarz stabiler schwingt, also wäre es gut wenn du da zwei dran machst. An jeden Pin vom Quarz ein Kondensator und den anderen Pin an Masse legen. Bei 16MHz müssen die Kondensatoren mein ich 18pF groß sein.
Momentan habe ich leider keine keramikkondensatoren.
Mein wunderschönes Programm.Code:#include <avr/io.h> #define F_CPU 1000000 #include <util/delay.h> #include <stdint.h> int main(void) { int time = 0; int second = 0; int time_e = 0; int time_z = 0; int tast = 0; DDRB = 255; DDRA = 225; DDRD = 0; PORTD = 255; DDRC = 225; while(1) { if (PIND == (PIND & 0b11101111)) { if (tast == 0) { tast = 1; PORTC = 0b00000001; } else { tast = 0; PORTC = 0b00000000; } } if (tast == 0) { second = 0; } if (PIND == (PIND & 0b10111111))// 5 ist taster links { time--; } if (PIND == (PIND & 0b11011111))// hier ist das problem { time++; } time_z =(time/10); time_e = time - (time_z*10); if (time_z == 6) { PORTA = 0b00111111; } if (time_z == 5) { PORTA = 0b00011111; } if (time_z == 4) { PORTA = 0b00001111; } if (time_z == 3) { PORTA = 0b00000111; } if (time_z == 2) { PORTA = 0b00000011; } if (time_z == 1) { PORTA = 0b00000001; } if (time_z == 0) { PORTA = 0b00000000; } if (time_e==9) { PORTA = PORTA + 0b01000000; PORTB = 0b11111111; } else if (time_e==8) { PORTB = 0b11111111; } else if (time_e==7) { PORTB = 0b01111111; } else if (time_e==6) { PORTB = 0b00111111; } else if (time_e==5) { PORTB = 0b00011111; } else if (time_e==4) { PORTB = 0b00001111; } else if (time_e==3) { PORTB = 0b00000111; } else if (time_e==2) { PORTB = 0b00000011; } else if (time_e==1) { PORTB = 0b00000001; } else if (time_e==0) { PORTB = 0b00000000; } _delay_ms(200); second ++; if (second == 300) { time --; second = 0; } } }
Wie genau macht man da smit den fuse bits? Ich benutze AVR studio.
Wenn du den Controller flashen willst, klickst du ja auf das schwarze IC wo "AVR" draufsteht. Dann öffnet sich ein Fenster und in diesem Fenster klickst du auf "Fuses".
So und da gehst du auf SUT_CHSEL und wenn du jetzt ein Quarz mit mehr als 10MHz (bei dem Wert bin ich mir nicht sicher!) stellst du das auf "Ext. Crystal/Resonator High Freq.; Start-up Time 16K: CK +64ms". Wenn dein Quarz unter 10MHz ist stellste das Bit auf Medium bzw Low Freq.
Bei den setzen der Fuses aber ganz vorsichtig sein und KEINE Fuses setzen von denen du nicht weißt was die machen. Weil dadurch kannste dir den ISP abschalten und dann geht nur noch JTAG.
Und falls du den falschen Clock gesetzt haben solltest einfach mit einem Frequenzgenerator oder einer anderen Taktquelle ein Quarz "simulieren"
Wieso sollte ich noch googlen, wenn kampi es mir schon erklärt hat?
Danke.
...genau, warum solltest Du etwas selbst tun, wenn Andere es schon für Dich getan haben ?
Ein leider sehr verbreitetes Mentalitätsproblem von einigen Usern in diesem Forum !
Also wenn du der 1. wärst, der mit google geantwortet hätte hätte ich natürlich gegooglet.
Aber bei so speziellen sachen ist es sowieso schwer eine antwort zu finden.
Einspruch.Zitat von crabtack
Eine Suche nach "avr controller externer quarz" bringt bei Google als 2. Ergebnis eine detaillierte Seite zu den Fuses.
Einfach mal mehrere Worte/Begriffe in Google ausprobieren; nicht nach dem 1. Versuch (soferns denn überhaupt einen gab) aufhören.
#ifndef MfG
#define MfG
Lesezeichen