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?
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:
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?