Hallo, ich hab einen 16F877 mit 20MHz und wollte mal den Timer0 ausprobieren. Ich benutze MPLAB und habe das Prog mit MPSIM simuliert dort hat auch alles gefunzt. Als der Overflow-interrupt gesetzt wurde hat er die Warteschleife verlassen. Am Anfang ist ein Test der alle LED's(PORTC) auf high setzt bis die beiden Schalter(PORTB.1 und PORTB.2) gesetzt wurden. Interressant ist, dassdas Programm auf dem PIC garnicht funzt. Noch nicht einmal die LED's werden aktiviert. Der Chip ist aba noch ok, denn andere Programme ohne den TMR0 laufen. Woran kann das liegen??? danke für die Hilfe BuschenSen
Hallo BuschenSen, erstmal zum Fehler: das Timer0 Interrupt Flag wird nicht gelöscht und deshalb kehrt wait für alle Aufrufe sofort zurück. Zum anderen ist für INTCON keine Bankumschaltung erforderlich. Hier die angepasste wait Routine wait ; warte 1ms MOVF INTCON, 0 MOVWF buffer BTFSS buffer, 2 goto wait bcf INTCON, 2 return Hoffe das funzt. Gruß Dieter
Ich habs jetzt verbessert und es sieht gez so aus(siehe Anhang). Es geht immer noch net! gibt's irgendwo nen Tutorial über den Timer0 mit beispiel code?
Hallo, PIC's scheinen nicht sehr beliebt oder verbreitet zu sein, wenn man das aus den (nicht vorhandenen) Reaktionen hier schließen will. Wenn ich nicht beruflich mit den Dingern zu tun hätte wär ich sicher schon bei ATMega oder LPC gelandet. Wir verlagern das Ganze am besten auf direkten mailkontakt. Verklausulierte mailadr. ist vornamenachname (direkt zusammengeschrieben) AT gmx DOT net. nachname = Werner, vorname siehe unten. Habe bisher nur diese mail und will sie mir nicht vollmüllen lassen. Gruß Dieter
Man kanns echt übertreiben --------- Verklausulierte mailadr. ist vornamenachname (direkt zusammengeschrieben) AT gmx DOT net. nachname = Werner, vorname siehe unten. Habe bisher nur diese mail und will sie mir nicht vollmüllen lassen. Gruß Dieter
Da ich das Ding bei 20MHz betreibe läuft es mit HS! Der Wachhund ist aus.
Wo liegt der Fehler muss ich die INTCON, GIE und T0IE setzten? Und dann mit dem Interrupt Vector arbeiten oder wo liegt der Fehler?
So müsste es funktionieren: wait ; warte 1ms bcf INTCON, 2 ; Interruptflag zurücksetzen BTFSS INTCON, 2 ; bsf PORTB, 7 ; hat hier nichts zu suchen goto wait return Mit dem Interruptvektor musst Du nicht unbedingt arbeiten. .
Also der Code sieht jetzt so aus(Anhang)! Das mit dem bsf PORTC, 7 is nur ne Kontrollled weil ich wissen wollte ob der die wait routine überhaupt aufruft. Mir sind zwei Dinge aufgefallen: Wenn die Initialisierung von OPTION_REG in Bank1 stattfindet, wie im Datenblatt angegeben, dann hängt sich das Prog an dieser Stelle auf. Wenn sie in Bank0 stattfindet, dann hängt sich das Prog erst in der wait Routine auf. Es scheint also an OPTION_REG zu liegen ich kann mir aba den Fehler trotzdem net erklären.
Da funktioniert irgend etwas anderes nicht. Ich wüsste nicht, warum dein Programm nicht laufen sollte. WDT definitiv ausgeschaltet? OPON_REG in Bank1 ist schon OK.
WDT ist aus. Ich raff es ja auch net, weil in den meisten Tutorials ist das ähnlich realisiert. Aber alle Programme die den Timer net benutzen funzen. Also PIC, Brenner3 und ICPROG sind ok.
Ich habe es mal durch den Simulator laufen lassen. Funktioniert.
Hallo, da alles ordentlich aussieht und mich das Problem auch interessiert hab ich mal schweres Geschütz aufgefahren und das Prg. mit dem ICE2000 getestet. Dabei passieren sehr merkwürdige Sachen. Obwohl ich keinen Breakpoint gesetzt habe, bleibt der ICE beim ersten Durchlauf in der wait Routine stehen. Wenn ich wieder starte, wird die Bitabfrage in wait genau 2 mal ausgeführt und schon ist wieder Sense. Das lässt sich beliebig oft wiederholen. Daraufhin habe ich mal den org 0x04 in 0x06 geändert und plötzlich lief alles wie am Schnürchen. Nun ist zwar 0x04 der ISR Vektor, aber da definitiv alle Int's ausgeschaltet sind sollte das keinen Einfluss haben. Gruß Dieter
Hi Leute, Ich bräuchte dringend euere Unterstützung, bitte last mich nicht im Stich!!! Also mein Sensor: ADXL213 wird mit dem µP am 3.2 Pin angehängt bzw der Taktimpuls ich habe einen 11MHz Quarz und meine µP handelt es sich um einen AT89LP2052 also atmel 8051(standard)Architektur. Ich muss LEDs ansteuern. Aber im Grunde brächte ich den C-code für den Timer0,1 Modus.Jemand eine Ahnung??
SChau dir mal die Seite von SPrut genau an... da sind auch beispiele mit dem Timer drin. http://www.sprut.de/electronic/pic/programm/index.htm
http://www.mikroelektronika.co.yu/english/product/books/PICbook/picbook.htm Darin sind die Timer auch gut beschrieben.
hey Leute es geht um das selbe Problem. Sorry! Ich brauch es eingetlich nicht nicht für "Pic" sondern einfach nur auf C ....für den Timer1,0; SPI...wobei ich da wirklich keine Möglichkeiten gefunden habe..wie´s funktioniert!! SPI ist ein Seriel Programming interface auch ansprechen muss. Also der Sensor ADXL213 wird mi´m µP von Atmel 89TC2051P connected, dann wird der µp mi´m MAX7301 connected. Es ist sehr konfus alles...am besten ich schick eich die Links: Sensor ADXL213: http://www.analog.com/en/prod/0%2C2877%2CADXL213%2C00.html µP AT89LP2052/4052 Preliminary: http://www.atmel.com/dyn/products/product_card.asp?family_id=604&family_name=8051+Architecture&part_id=3627 Maxim 7300:(für die 20 LED´s): http://pdfserv.maxim-ic.com/en/ds/MAX7301.pdf oder http://www.maxim-ic.com/quick_view2.cfm/qv_pk/3371 Die ganze Schaltung hat den Sinn: 20 LED´s sollen je nach Bremsstärke alle aufleuchten. Das bedeutet ist die Abbremsung max. dann lechten alle Led(Leuchdioden) auf, und so soll es funktionieren. Ne Ahnung wie der Code aussehen könnt? Wenn ihr fragen habt nur zu....ich zähl auf euch brauche das bloß für die Schule, habe sonst niemanden der mir da helfen könnt......bin ehh schon down ....brauche es bis Jänner)=..... help I need somebody, help not just anybody............(Beatles) Danke im Voraus(=!
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.