Hallo, nun mal ein bisschen Ausführlicher.... ich habe folgendes Problem... ich möchte mir einen Würfel basteln... die Hardware ist soweit fertig nun habe ich ein Problem mit der Software... ich möchte nach einem Interrupt, in die ISR Springen... was lauft Bascom Simulation auch funktioniert... wenn ich es aber in meine Schaltung Flashe (Tiny13) passiert dort leider nichts... Software... Hardware ist mit am Anhang... (nur für den Interrupt) würde mich über Hilfe freuen... $regfile = "attiny13.dat" $crystal = 120000000 $hwstack = 10 $swstack = 10 $framesize = 20 'Config Powermode = Idle On Int0 Int0service Config Int0 = Low Level Enable Int0 Enable Interrupts Config Portb = Output Dim Zahl As Byte Main: Do Powerdown Loop Int0service: Portb = &B11101111 '1 Waitms 100 Portb = &B11111111 Waitms 100 Portb = &B11110111 '2 Waitms 100 Portb = &B11111111 Waitms 100 Portb = &B11100111 '3 Waitms 100 Portb = &B11111111 Waitms 100 Portb = &B11110011 Waitms 100 '4 Portb = &B11111111 Waitms 100 Portb = &B11100011 Waitms 100 '5 Portb = &B11111111 Waitms 100 Portb = &B11110001 Waitms 100 Portb = &B11111111 Return
Michi schrieb: > Paul.P schrieb: >> Config Portb = Output > Aha, dein Taster liegt also an einem Ausgang... geht das so nicht ? muss ich etwa Portb.0= Input ?
Falls dein Taster den INT0 auslösen soll, sollte er lt. DB an PINB.1 hängen, statt an PINB.0. Der gesamte PortB wurde als Ausgang definiert. So kann der Taster schonmal garnix bewirken, ausser einen Kurzschluss des jeweiligen Ausgangs. Der tiny 13 hat im Normalbetrieb nur 5 Portpins, keine 8... das ist aber vernachlässigbar, da die oberen, nichtvorhandenen portbits eh ignoriert werden.
Michael Sch. schrieb: > Falls dein Taster den INT0 auslösen soll, sollte er lt. DB an PINB.1 > hängen, statt an PINB.0. > > Der gesamte PortB wurde als Ausgang definiert. So kann der Taster > schonmal garnix bewirken, ausser einen Kurzschluss des jeweiligen > Ausgangs. > > Der tiny 13 hat im Normalbetrieb nur 5 Portpins, keine 8... das ist aber > vernachlässigbar, da die oberen, nichtvorhandenen portbits eh ignoriert > werden. s****e ich sehe es gerade... verdammt... was ist denn PCINTO für eine Funktion?
Paul.P schrieb: > Paul.P schrieb: >> $crystal = 120000000 > > natürlich nur 12 Mhz... Oder doch nur 1,2 Mhz? So wird der Tiny13 geliefert.
Laus schrieb: > Paul.P schrieb: >> Paul.P schrieb: >>> $crystal = 120000000 >> >> natürlich nur 12 Mhz... > > Oder doch nur 1,2 Mhz? So wird der Tiny13 geliefert. Laus schrieb: > Paul.P schrieb: >> Paul.P schrieb: >>> $crystal = 120000000 >> >> natürlich nur 12 Mhz... > > Oder doch nur 1,2 Mhz? So wird der Tiny13 geliefert. Nein, 12Mhz ist schon richtig.
> Falls dein Taster den INT0 auslösen soll, sollte er lt. DB an PINB.1 > hängen, statt an PINB.0. > Kein Grund zur Sorge, die Interrupts sind ja frei programmierbar:
1 | Ddrb = &B00011110 |
2 | Taster Alias Pinb.0 |
3 | Portb.0 = 1 |
4 | Pcmsk = 1 'damit ist INT0 relevant!! |
5 | Stop Adc |
6 | Stop Ac |
7 | Stop Watchdog |
8 | Enable Pcint0 |
9 | Enable Interrupts |
10 | On Pcint0 Int0service |
Manfred S. schrieb: >> Falls dein Taster den INT0 auslösen soll, sollte er lt. DB an PINB.1 >> hängen, statt an PINB.0. >> > > > Kein Grund zur Sorge, die Interrupts sind ja frei programmierbar:Ddrb = &B00011110 > Taster Alias Pinb.0 > Portb.0 = 1 > Pcmsk = 1 'damit ist INT0 relevant!! > Stop Adc > Stop Ac > Stop Watchdog > Enable Pcint0 > Enable Interrupts > On Pcint0 Int0service das ist der erste Beitrag der wirklich hilft... danke... nur spielt er meine Interrupt Routine nicht richtig durch wie ich erhoffte?! es sollte jede Zahl ca. 100ms angezeigt werden?
INT0 ist ein einzelner, pin-gebundener Hardwareint. mit der zweithöchsten Priorität nach den Reset-Ints. PCINT0 ist (von INT0 völlig unabhängig) der gemeinsame, sog. Pinchange-Int. der für alle im PCMSK-Register aktivierten Eingänge einen Sammelinterrupt auslöst. Welcher Eingang konkret und mit welcher Flanke den PCINT0 ausgelöst hat, muss innerhalb der ISR diskret abgefragt werden. Also: Taster an PB.1 DDRB = &B011101 (PB.5 und PB.1 als Eingänge, der Rest als Ausgänge) Oder: Falls du die Harware nicht mehr ändern kannst, musst du eben alternativ den PCINT0 für PinB.0 aktivieren und zumindest eine Flankenerkennung (1 -> 0) an den Anfang der ISR setzen... Das obligatorische Entprellen von Tastern kannst du dir angesichts der reichlichen "waitms" in der ISR schenken.... ausnahmsweise... ;-) Eine ISR mit sovielen waits zu befrachten, ist keine gute Lösung. Zum testen und weiterentwickeln der ersten Ansätze und für ein erstes Erfolgserlebnis, kannst du es mal vorerst so machen...
> Oder: > Falls du die Harware nicht mehr ändern kannst, musst du eben alternativ > den PCINT0 für PinB.0 aktivieren und zumindest eine Flankenerkennung (1 > -> 0) an den Anfang der ISR setzen... > Das obligatorische Entprellen von Tastern kannst du dir angesichts der > reichlichen "waitms" in der ISR schenken.... ausnahmsweise... ;-) > > Eine ISR mit sovielen waits zu befrachten, ist keine gute Lösung. Zum > testen und weiterentwickeln der ersten Ansätze und für ein erstes > Erfolgserlebnis, kannst du es mal vorerst so machen... du scheinst mal wirklich einer zu sein der richtig Ahnung hat, programmierst du selber mit Bascom?
Im Leben gibt es nur Lehrlinge, die mehr oder weniger schnell aus den eigenen Fehlern lernen. Ich gehöre da sicher nicht zur Elite... ;-)
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.