- LiFePO4 Speicher Test         
Seite 1 von 15 12311 ... LetzteLetzte
Ergebnis 1 bis 10 von 150

Thema: Timer0 Overflow Interrupt löst nicht aus (ATmega16)

Hybrid-Darstellung

schamp Timer0 Overflow Interrupt... 18.05.2005, 14:38
FoCus Ich schreibe normalerweise... 19.05.2005, 08:30
schamp Hi ! Das mit __interrupt und... 19.05.2005, 10:17
Arexx-Henk Hallo, ich hab mal so ein... 19.05.2005, 10:42
schamp Hi ! Hab das jetzt mit... 19.05.2005, 12:16
PicNick Deine Konstanten solltest du... 19.05.2005, 12:42
Arexx-Henk Hallo, da bin ich... 19.05.2005, 13:26
PicNick Laut Datsheet (wie du es... 19.05.2005, 13:36
schamp Jo das mit precompiler werd... 19.05.2005, 14:02
PicNick Werden vielleicht die RX / TX... 19.05.2005, 14:09
PicNick Geh mal mit der Baudrate... 19.05.2005, 14:13
schamp Irgendwas stinkt da ganz... 19.05.2005, 14:24
PicNick Au weia, d.h. die diversen... 19.05.2005, 14:45
PicNick ogottogott. wieso straft die... 19.05.2005, 15:12
schamp was soll das nu heissen...... 19.05.2005, 15:16
PicNick Das heißt, daß in der Appnote... 19.05.2005, 15:24
schamp Jo die Abfrage inner ISR... 19.05.2005, 15:31
PicNick Gut, ist verziehen, ich muß... 19.05.2005, 15:58
pebisoft es gibt eine einfache lösung.... 19.05.2005, 16:33
schamp Weis net mit bascom.. findst... 20.05.2005, 07:29
PicNick Guten Morgen ! Das... 20.05.2005, 07:59
schamp Moin Moin ! Vorerst müßt ich... 20.05.2005, 08:11
PicNick Hi, ganz locker, keine... 20.05.2005, 08:19
schamp Oki. Also die RX Routinen... 20.05.2005, 08:32
PicNick Ich will nicht verschweigen,... 20.05.2005, 08:52
schamp Versteh ich jetzt nicht so... 20.05.2005, 09:06
PicNick Steuerzeichen: Wenn du als... 20.05.2005, 09:18
schamp Es ist leider auch nirgends... 20.05.2005, 10:07
PicNick Das steht in der AppNote. ... 20.05.2005, 10:35
schamp Sorry Mittagessen !! O:) ... 20.05.2005, 12:14
PicNick So. Ich hab' mal einfach... 20.05.2005, 13:03
schamp Jo ist klar wie's gemeint... 20.05.2005, 13:42
PicNick Haltaus nein, _M_ ist eine... 20.05.2005, 14:04
pebisoft kannst die asm-datei von... 20.05.2005, 17:06
PicNick @schamp: Ich schau mir das... 20.05.2005, 20:05
schamp hm ok !! thanks a lot !! osci... 20.05.2005, 20:48
PicNick Hi, schamp, Zwischenbericht:... 22.05.2005, 18:18
schamp Moin Moin !! Und es läuft... 23.05.2005, 09:12
PicNick Moin ! Ich hab gehofft... 23.05.2005, 09:36
schamp So.. kurz Zeit gehabt zu... 23.05.2005, 15:25
schamp Hab jetzt mal weiter... 24.05.2005, 10:03
PicNick Schau'n wir gleich rein. ... 24.05.2005, 11:34
schamp Nja so einfach gehts irgndwie... 25.05.2005, 09:12
PicNick Hi, ich grad in deinem... 25.05.2005, 09:45
schamp irgdnwie ist da was wahres... 25.05.2005, 10:06
PicNick Ev. In der INT0-ISR nur aktiv... 25.05.2005, 10:38
schamp Aber in der INT0-ISR musst du... 25.05.2005, 10:46
PicNick Ja, ja. Aber aber vorher... 25.05.2005, 10:49
schamp du meinst so ? #pragma... 25.05.2005, 11:42
PicNick Ja, so mein' ich das. Ist auf... 25.05.2005, 11:53
schamp habs jetzt so in main(): ... 25.05.2005, 13:08
PicNick Ui, na so gut gesichert sind... 25.05.2005, 13:21
schamp Jetzt siehts so aus... (siehe... 25.05.2005, 13:44
PicNick Würd' ich sagen. normal... 25.05.2005, 15:09
schamp Also ehrlich gsagt komm ich... 27.05.2005, 11:26
PicNick Hi, ich bin ein bißchen im... 27.05.2005, 19:52
schamp Dann entsprechen also diese... 29.05.2005, 11:42
PicNick Hi, die Atmel-Kollegen haben... 29.05.2005, 17:55
schamp Hatte jetzt immer folgende... 29.05.2005, 18:19
schamp Hab jetzt ein bischen an dem... 30.05.2005, 09:40
PicNick Hi, was mich etwas... 30.05.2005, 10:12
schamp bringt auch nix.... :(... 30.05.2005, 12:44
PicNick Momemt, moment: bringt er... 30.05.2005, 12:46
schamp jo... das ist eben des... 30.05.2005, 13:00
PicNick Da gibt's nur eine Erklärung:... 30.05.2005, 13:41
schamp Aber dann würd ma trotzdem... 30.05.2005, 15:19
PicNick Na gemeint ist, daß er das... 30.05.2005, 15:28
schamp Hm Timer0 ist eigentlich... 31.05.2005, 07:15
PicNick Morgen ! Ich denke, wir... 31.05.2005, 08:28
schamp zu 1 Du meinst inner... 31.05.2005, 08:55
PicNick Nein, ich mein ... 31.05.2005, 09:05
schamp Echo mag jetzt, wenn ma's... 31.05.2005, 09:22
PicNick Ah ja. Jetzt machen wir... 31.05.2005, 10:48
schamp Hm Step 1 ok. Einfach inner... 31.05.2005, 12:21
PicNick der Gedanke ist: Wir können... 31.05.2005, 12:30
schamp Receive-Block inner... 31.05.2005, 12:38
PicNick Alles perfekt, aber das... 31.05.2005, 12:41
schamp Ok, Echo funktioniert immer... 31.05.2005, 12:47
PicNick Gut, aber was steht jetzt im... 31.05.2005, 12:49
schamp Wie fast erwartet...... 31.05.2005, 12:56
PicNick Du, ich muß eine Stunde weg. ... 31.05.2005, 13:05
PicNick *grüberl* Sag mal, steht... 31.05.2005, 15:46
schamp Hab jetzt ein bischen... 01.06.2005, 07:25
PicNick Morgen, da sind wir wieder !... 01.06.2005, 08:54
schamp Aber wie is das dann mit... 01.06.2005, 11:52
PicNick RxByte: was die TimerISR... 01.06.2005, 12:40
schamp Code while() while(1) ... 01.06.2005, 12:51
PicNick das muß aus der ISR noch raus... 01.06.2005, 13:06
schamp bleibt bei UUUUUUUU.... 01.06.2005, 13:18
PicNick D.h bei der Methode wird... 01.06.2005, 13:33
schamp tuts aber, wieder die... 01.06.2005, 13:46
PicNick (Müll ist klar, das geht nur... 01.06.2005, 13:58
schamp if (bRxFlag & RX_M_DATA) ... 01.06.2005, 14:09
PicNick Nein, LSB is first, er fängt... 01.06.2005, 14:13
schamp Stimmt auch wieder.. :-k ... 01.06.2005, 15:12
PicNick Ja, eben. das kann er doch... 01.06.2005, 15:30
PicNick Andere Strategie: Du nimmst... 01.06.2005, 15:36
schamp HW Uart stimmt no was net... 02.06.2005, 08:24
PicNick Morgen, in voller Frische ? ... 02.06.2005, 08:29
schamp Mag er net. Kann ich doch... 02.06.2005, 08:44
PicNick So gesehen hast du recht.... 02.06.2005, 08:57
schamp __task void main() { ... 02.06.2005, 09:10
PicNick UCSRC =... 02.06.2005, 09:47
schamp Geht jetzt.... ](*,) ok... 02.06.2005, 09:50
schamp Sollt eigentlich funzen (HW... 02.06.2005, 10:27
PicNick Schau ich mir gleich an. ... 02.06.2005, 10:58
PicNick Wenn das Echo mal prinzipiell... 02.06.2005, 11:06
schamp HW-UART funzt, aber... 02.06.2005, 13:04
PicNick Mal schauen, ob INT0 ... 02.06.2005, 13:16
schamp Sag ma sperren sich die... 02.06.2005, 13:25
PicNick Na ich hoff doch, du hast PD2... 02.06.2005, 13:28
schamp RX Pin aufm Board mit PD2... 02.06.2005, 13:35
PicNick klaro, INT0 (PD2) muß... 02.06.2005, 13:37
schamp Das gibsch nich.. jetzt hab... 02.06.2005, 13:41
schamp Also RX_M_RECEIVE wird in der... 02.06.2005, 13:50
PicNick Wenn INT0 anspringt, setzt er... 02.06.2005, 14:13
schamp Erstma so halbe Entwarnung..... 02.06.2005, 14:27
schamp while(1) { if(bRxFlag... 02.06.2005, 14:33
PicNick wenn int0 _M_receive setzt,... 02.06.2005, 15:08
schamp Alles sehr sehr komisch....... 03.06.2005, 07:25
PicNick Irgendwie glaub' ich, wir... 03.06.2005, 09:01
schamp "y"-Version wieder... 03.06.2005, 09:30
PicNick Kannst du noch die HEX posten... 03.06.2005, 09:32
schamp Hexfile ist im Intel extended... 03.06.2005, 09:32
PicNick Das ist von mir eine Art... 03.06.2005, 09:35
PicNick Ui, mit dem Format komm' ich... 03.06.2005, 09:43
schamp Hm komisch mit AVR Studio... 03.06.2005, 10:08
PicNick Sodala. Ich hab jetzt im... 03.06.2005, 11:57
schamp Was für enables und disables... 03.06.2005, 12:02
PicNick *ähem* irgendwie hast du... 03.06.2005, 12:10
schamp Lief nicht gleich auf Anhieb,... 03.06.2005, 12:56
PicNick Tilde vergessen, pfui gack. ... 03.06.2005, 13:08
schamp Damit meinst du schon das... 03.06.2005, 13:21
PicNick Eigentlich bei allen... 03.06.2005, 13:28
schamp 4x Space-Taste: ... 03.06.2005, 13:45
PicNick Nochmal: auf EINMAL... 03.06.2005, 13:49
schamp Jep auf einmal Leertaste 4... 03.06.2005, 13:57
PicNick VT100 : wegen den... 03.06.2005, 14:03
PicNick Halt, stop, retour: das... 03.06.2005, 14:09
schamp das komische verlängerte b... 03.06.2005, 14:13
PicNick Tilden eingefügt, direkt-echo... 03.06.2005, 14:13
schamp ´Sorry musste wech vorhin..... 03.06.2005, 19:52
PicNick Traraaa ! Ich hab bei mir... 04.06.2005, 08:03
schamp Cool !!! 8) \:D/ Aber an... 04.06.2005, 12:19
PicNick Ich hab das eben so... 04.06.2005, 14:47
schamp Hab die Änderungen jetzt auch... 04.06.2005, 16:22
PicNick Bei mir geht, scheinbar,... 04.06.2005, 16:27
PicNick So. Ich mußte doch... 05.06.2005, 13:41
schamp Hi ! Funzt einwandfrei,... 06.06.2005, 10:47
PicNick Tätarätääää ! Hört man... 06.06.2005, 11:46
Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    18.05.2005
    Beiträge
    101

    Timer0 Overflow Interrupt löst nicht aus (ATmega16)

    Weis gerade nicht mehr weiter.
    Versuche die AppNote AVR304: Half Duplex Interrupt Driven Software UART
    auf einem ATmega16 zu implementieren (Ich weis das ATmega16
    Hardware-UART hat, muß aber später auf einen Tiny umsteigen)

    Nun zu meinem Problem:
    Ich kann weder Zeichen senden, noch empfangen. Zumindest erscheint am
    Terminal nichts (habe Hyperterminal und Tera Term ausprobiert).
    Einstellungen sind/waren jeweils 38400 Baud, 8 Datenbits, 1 Stopbit,
    kein Paritätsbit, keine Flusssteuerung.
    Für die Übertragung nutze ich die RXD/TXD Pins (richtig gesteckt )
    und den RS232 Spare Port auf dem STK500. Dann gehts weiter an den COM2 Port meines PC's.
    Als Clock benutze ich jetzt die STK500 @3.686 MHz.
    Fuse (Ext. Clock; Start-up time: 6 CK + 0 ms; [CKSEL=0000 SUT=00]) und
    Jumper (XTAL1 Jumper mounted, OSCSEL auf default) auf dem STK500
    sollten laut "Help" (AVR Tools User Guide) richtig gesetzt sein.
    Nutze den mitgelieferten C-Code von Atmel und compile mit IAR Embedded Workbench Kickstart.

    Die Software habe ich etwas anpassen müssen (Registerbezeichnungen,
    etc.). Habe zusätzlich ein paar Zeilen, die LED auf dem STK500 blinken lässt (zum testen) geschrieben, welche in der Overflow Interrupt-Routine ausgeführt werden sollten.
    Leider wird diese aus mir unerklärlichen Gründen nie ausgeführt.. bin mir aber eigentlich schon sicher, das ich den Timer0 richtig initialisiert habe.
    Please Help, weis nicht mehr weiter
    Thx !

    Hab den Quellcode mit angehängt !
    In main() sollte testweise nur ein "Hallo" ans Terminal gesendet werden..
    Angehängte Dateien Angehängte Dateien

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    17.01.2004
    Ort
    Erlangen, Bayern
    Alter
    43
    Beiträge
    253
    Ich schreibe normalerweise unter AVR-Gcc da werden anstelle von _interrupt die Makros SIGNAL verwendet. Evtl gibts die da auch?!
    Ist __enable_interrupt eine Funktion der Lib? Hast du einen Max dazwischen? Sind Rx und Tx gedreht? Was kommt dabei raus wenn du ein Scope oder Fox anschliesst?Für meinen Geschmack ist die Interruptroutine tim0_ovf ein bisschen lang. Evtl kannst du das mit in die Hauptroutine nehmen...aber das nurso nebenbei

    Gruss
    Michael

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    18.05.2005
    Beiträge
    101
    Hi !
    Das mit __interrupt und __enable_interrupt ist mit IAR schon ok so.
    Ein Max ist auf dem STK500 Board mit drauf und RX bzw TX sind richtig rum. Oszi oder ähnliches hab ich leider nicht zur Verfügung.
    Hab das Programm nochmals "Schritt für Schritt" aufgebaut und geschaut, wo es hängt. Sobald ich etwas ins TCNT0 Register lade (in der uart_transmit() die Zeile mit TCNT0 = (256-N+(14/C)); // Set timer delay to first bit) wird nicht mehr in die ISR gesprungen.
    Kann sein, das die Interrupts einfach wieder disabled werden ???
    Wenn ich die Zeile testweise auskommentiere wird die ISR durchlaufen allerdings auch nur einmal.
    Kann mir jemand erklären warum dem so ist ?
    Die Software sollte doch eigentlich einwandfrei laufen. Denke die Leute bei Atmel werden sich bei der AppNote schon was gedacht haben und nicht einfach fehlerbehaftete Software publizieren. Vom eigentlichen Ablauf und Aufbau des Codes sind für mich auch keine groben Fehler ersichtlich...
    Fällt noch jemanden was diesbezüglich auf ??
    Bin für jede Hilfe dankbar !

    Gruß
    schamp

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    08.08.2004
    Ort
    Zwolle
    Alter
    68
    Beiträge
    531
    Hallo,

    ich hab mal so ein bischen schnell die code durchgeguckt

    GIFR = (1<<INTF0); // clear Interrupt Flag
    GICR = (1<<INT0);

    hier werden zB die ganze bytes geschrieben und nicht nur die einzelne bits!

    sollte mann nicht '|=' nutzen statt '='?

    GIFR |= (1<<INTF0); // clear Interrupt Flag
    GICR |= (1<<INT0);

    damit die andere 7 bits von GIFR und GICR ungeandert bleiben...

    gruss

    Henk

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    18.05.2005
    Beiträge
    101
    Hi !

    Hab das jetzt mit GICR und GIFR ausprobiert, aber hat sich leider nichts geändert. Ich befürchte irgndwas stimmt nicht mit Timer0 und TCNT0...
    Keine Idee wie man das lösen könnte...

  6. #6
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Deine Konstanten solltest du vom Precompiler vorher ausrechnen lassen, so ist ja das Tierquälerei
    EDIT Schau mal in der .Lss-File, was du dem armen Kerl damit antust

    Datentypen: Der C neigt dazu, das Zielfeld als type für alles zu nehmen.
    Also
    TCNT0 = (256-N+(14/C));
    Type ist char , also ist 256 schon mal nurmehr NULL
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  7. #7
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    08.08.2004
    Ort
    Zwolle
    Alter
    68
    Beiträge
    531
    Hallo,

    da bin ich wieder...

    dass mit
    TCNT0 = (256-N+(14/C));
    glaube ich nicht so direct dass es falsch ist, aber konnte so sein

    innerhalb die timer0 overflow interrupt wird die overflow-interrupt-enable
    wieder ausgeschaltet
    TIMSK = 0;
    weshalb? jetzt wird durch die timer0 kein neuer overflow-interrupt generiert.

    Dass clearen der interrupt flag innerhalb die interrupt function
    GIFR = (1<<INTF0)
    braucht mann hier nicht den durch das nutzen/anwenden vom interrupt function wird diesen Flag hardwaremassig ge-cleared.

    The flag is cleared when the interrupt routine is executed.
    Seite 68 vom .pdf


    gruss mal wieder

    Henk

  8. #8
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Laut Datsheet (wie du es sagst), macht er das selber (Wenn ISR-Routine)
    Also nur den Counter refreshen.

    Was er genau wie rechnet etc., kann man im Listing kontrollieren.
    Laß es aber so oder so den Precompiler machen.
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  9. #9
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    18.05.2005
    Beiträge
    101
    Jo das mit precompiler werd ich mir noch anschauen.
    TIMSK = 0 in der ISR habe ich jetzt mal gelassen. Hab die TIMSK Initialisierung aus der uart_init() rausgeschmissen und dafür in die uart_transmit(). Somit dürfte es mit TIMSK = 0 in der ISR keine Probs geben.
    Hab jetzt auch testweise Fuse auf int. RC Osz und 1 Mhz (anstatt die 3.686 MHz vom STK500) geändert und siehe da, die LEDs blinken....
    Hyperterminal zeigt aber weiterhin nichts an, außer das der Cursor plötzlich nicht mehr gleichmäßig blinkt

  10. #10
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Werden vielleicht die RX / TX Leitungen zu vertauschen sein (ausgekreuzt)
    Denn wenn irgendwas reinkommt, schreibt er zumindest irgendeinen Müll auf den Schirm
    Ich hab aber deine hand-made-uart nicht nachgecheckt, das geb' ich zu.
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

Seite 1 von 15 12311 ... LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

12V Akku bauen