Gefunden für atmega16 timer - Zum Elektronik Forum |
1 - Atmega16 mit THMOD-I2C als Slave... keine Rückmeldung -- Atmega16 mit THMOD-I2C als Slave... keine Rückmeldung | |||
| |||
2 - Probleme TWI (I2C) Atmega 16 -- Probleme TWI (I2C) Atmega 16 | |||
Welcher Controller ist denn eingestellt oder wie ist der Compileraufruf (damit kenne ich mich mehr aus ![]() Das müste beim GCC sowas wie -mmcu=atmega16 sein. Sollte der falsche µC ausgewählt sein, würde mich nichts wundern ![]() Wie dem auch sei, es scheint entweder ein Softwareproblem zu sein, oder ein elektrisches. Sollte sich rausstellen, dass softwaretechnisch alles in Ordnung ist, musst du wohl oder übel mal mit dem Oszi ran. Edit: Also keiner der Statuskodes ergibt wirklich Sinn außer 0xf8. Da stimmt also was bei dir nicht! Es könnte sogar sein, dass du wirlich für einen falschen Prozessor kompiliert hast und die IO-Adressen nicht alle stimmen... Aber soweit kann ich von hier aus nicht denken! Also, folgendes Programm sollte passen: inline uint8_t i2c_stat(void) { return TWSR & 0xf8; } uint8_t ein_byte_senden(uint8_t byte) { register uint8_t ret = 0; i2c_start(); if( (ret=i2c_stat()) != 0x08 ) goto i2c_err; /* Stat fehlg. */ i2c_transmit(0x46 + 0); if( (ret=i2c_stat()) != 0x18 ) goto i... | |||
3 - Mikrowellecontroller programieren -- Mikrowellecontroller programieren | |||
Offtopic :Fiech, mache bitte Gebrauch von den Code-Tags. So (=ohne) werden die Postings sehr schnell unübersichtlich im Fritz (äh Fred ![]() Edit: Erst die vorherigen Beiträge lesen, dann meckern ![]() Also im einfachen Windows-Style: 1. Möglichkeit: Code einfügen, markieren und den Button "Code" über dem Editor-Fenster drücken. 2. Möglichkeit: Code-Button drücken, Text einfügen, "Code*" Button nochmal drücken. 3. Möglichkeit: Den bbcode "(code)hier Code einfügen(/code)" mit eckigen Klammern selbst eingeben. Nochmal Edit, diesmal Themenbezogen: TCCR0 und TIFR sind so genannte Ports, in diesem Fall Timer/Counter Control Register 0 (TCCR0) bzw. Timer/Counter Interrupt Flag Register (TIFR) Näheres dazu im Datenblatt der AVR ATmega (ATmega8 oder ATmega16 z.B.), kostenlos bei ... | |||
4 - Real Time Clock IC an AVR -- Real Time Clock IC an AVR | |||
Ein fröhliches, vorweihnachtliches Hallo an Alle!
Ich versuche , aus reinem Spass an der Freude, AVRs in Assembler zu programmieren. Also deklariere ich generell mich als Anfänger! Lauflichter, (interne)Timer, LCD Ansteurerung, etc. klappen zwar nicht immer auf Anhieb, aber mit genügend "Hirnschmalz" geht es dann doch! Nun möchte ich mal die Kommunikaton zwischen zwei Bausteinen austesten und auch verstehen. Als neues Bastelundverstehprojekt erdachte ich mir eine Uhr. Es soll ein ATmega16, zweizeiliges Display und eine externe RTC zum Einsatz kommen. Nun ist meine Frage, welche RTC (von den vielen erhältlichen) auch bei Re.....t oder so günstig zu erwerben ist, und ob Jemand bei evtl. Verständnisproblemen meinerseits, bereit ist, mir unter die Arme zu greifen. Auch Links zu diesem Thema sind willkommen. Am liebsten wäre mir eine serielle Verbindung zwischen RTC und AVR (an I2C traue ich mich noch nicht heran). Ralfi [ Diese Nachricht wurde geändert von: Tim Taylor am 19 Dez 2008 18:19 ]... | |||
5 - Welcher AVR Microcontroller? -- Welcher AVR Microcontroller? | |||
Tag zusammen
Ich bin auf der Suche eines neuen AVR Microntroller. Bis jetzt habe ich einen ATmega48 verwendet. Leider gehen mir jetzt bei diesem Typen die IO's aus. Also muss ich mich nach etwas grösserem umsehen. Mein momentaner Favorit wäre der ATmega16(2). Was würdet ihr mir empfehlen? Ich brauche eigentlich nur einen ATmega48 mit mehr IO's und die gleichen Funktionen (UART, PWM, Timer, I2C). IO Expander habe ich mir auch schon angesehen aber ich bin zum Schluss gekommen das ich lieber auf einen grösseren AVR Typen wechseln möchte. Die ATmega4* Serie ist glaube ich eine der neusten AVR Microcontrollern. Wie sieht es mit dem ATmega16 aus? Ist der veraltet? Denn ich möchte nicht dass er kurz nachdem ich ihn eingesetzt habe schon wieder abgekündigt wird. Ich danke schon einmal für eure Empfehlungen. Gruss Mathias ... | |||
6 - Software-Reset -- Software-Reset | |||
Moin,
Habe hier grade einen Bootloader in Assembler, den ich vor langer Zeit schrieb, komplettiert, indem ich das Gegenstück auf dem Rechner geschrieben habe. Nun ist der so gemacht, dass er möglichst klein ist - er belegt etwas weniger als 256 Bytes - das sind beim ATmega16 bspw. 2 Pages / Seiten. Mein "Problem" ist jetzt, dass der Bootloader nur die wichtigsten Sachen macht: er knippst die Interrupts aus während des Schreibvorgangs, er initialisiert den Stack neu, er hat eine eigene Routine zum Senden und Empfangen der Daten über RS232. Er führt auch eine Verifizierung des Programmkodes durch, sodass sofort gemeckert wird, wenn ein Fehler auftrat. Das ist alles schön und gut, aber hat jemand 'ne Ahnung, wie ich nach dem Updatevorgang einen Reset machen kann? Bisher mache ich das so, dass der Bootloader nach erfolgreichem Schreiben einfach den Reset-Vektor in den Programmzähler lädt (r31:30) und per ijmp da hinhüpft. Zurückkehren muss er ja nicht. Damit ist aber kein richtiger Reset durchgeführt worden. Ich will aber, dass der ganze Chip neustartet. Ich hatte mir überlegt, einfach einen Pin mit dem Reset-Pin und einem Zeitglied von ein paar ms zu verbinden, und dann softwaremäßig den Reset-Pin kurz auf 0 ziehe. Aber ... | |||
7 - Stoppuhr -- Stoppuhr | |||
Hi, ich will eine Stoppuhr bauen
Ich benutze einen ATMega16. Um die Zeit zu messen gehe ich fogendermassen vor: 1 Versuch mit dem 8-Bit Timer Beim vergleich mit einem Funkwecker stellte sich heraus dass die µC Uhr pro Tag entweder 2,5h vor oder 1h nach lief. Das war untragbar. 2.Versuch mit dem 16Bit Timer Die besten ergebnisse habe ich erziehlt wenn ich den µC auf 8MHz laufen lasse. Den Timer habe ich dann mit einem Prescaler von 64 hochzählen lassen. Wenn der Timer einen bestimmten wert erreicht hat (genauer gesagt der TCNT1 hat den OCR1A erreicht), wurde ein interrupt ausgelöst. In diesem Interrupt wird nichts weiter getan als eine Variable zu erhöhen und den Timer wieder von vorn laufen zu lassen. (Das ganze gebe ich auf einem LCD aus) CPU_f=8MHz Prescaler=64 Timer_f=125000Hz Overflowwert (OCR1A)=62500 Mit diesen Einstellungen würde der Timer alle 0,000008s eins hochzählen, bis er 62500 erreicht hat, dann wird ein Inerrupt ausgelöst. Das bedeutet, das Interrupt wird alle 0,000008s*62500=0,5s ausgeführt und Inkrementiert eine Variable, die die Halben Sekunden zählt (bei mir "_TIMER_halfsec_mask" genannt). So wollte ich die Zeit Messen (bzw. Zählen) Leider funktionierte das nicht ausreic... | |||
8 - Problem beim Brennen mit AVRISPmk2 und AVRStudio -- Problem beim Brennen mit AVRISPmk2 und AVRStudio | |||
Ich habe noch ein problem "der Timer"
ich habe nen ATMega16 der mit 8MHz läuft Ich habe den TIMER0 (8Bit) auch mit 8MHz laufen (Prescaler=0). d.h. alle 1.25*10exp-7 Sekunden zählt er um eins hoch. Wenn der Timer den Wert 160 erreicht hat sind genau 20µSekunden vergangen (1.25*10exp-7*160=2*10exp-5) Immer wenn 20µSekunden vergangen sind läuft die Interruptroutine los und zählt die µSekunden und die Sekunden. Damit habe ich mir eine Uhr gebastelt. Das problem ist die Uhr geht vor. (in 8Minuten geht sie 16 Sekunden vor). Woran liegt das? Edit: Läuft die CPU garnicht mit 8MHz, sondern mit mehr? (ich nutze den internen Oszillator) Wie misst man dann genaue Zeittakte? [ Diese Nachricht wurde geändert von: Lodentoni am 18 Dez 2006 23:04 ]... | |||
9 - ATMega16 Counter in C zu langsam -- ATMega16 Counter in C zu langsam | |||
Hi,
ich aktiviere den Timer/Counter0 (8-Bit) mit diesem Code: Code : // Takt / 256 TCCR0 = _BV (CS02); // Als Interrupt konfiguriert timer_enable_int (_BV (TOIE0)); Das Signal wird hier eingefangen: |
Zum Ersatzteileshop Bezeichnungen von Produkten, Abbildungen und Logos , die in diesem Forum oder im Shop verwendet werden, sind Eigentum des entsprechenden Herstellers oder Besitzers. Diese dienen lediglich zur Identifikation! gerechnet auf die letzten 30 Tage haben wir 13 Beiträge im Durchschnitt pro Tag heute wurden bisher 28 Beiträge verfasst 4 Besucher in den letzten 60 Sekunden alle 15.00 Sekunden ein neuer Besucher ---- logout ----su ---- logout ---- |