Forum: Mikrocontroller und Digitale Elektronik Int0 am AT1280 im Arduino Mega (!BASCOM)


von Sk D. (skdx)


Lesenswert?

Nachdem ich bis jetzt der Meinung war, nicht ganz Blind durchs Leben zu 
laufen , werde ich z.Zt. scheinbat eines Besseren belehrt. Ich versuche 
die ersten Schritte mit einem Arduino Meaga 1280 und in diesem 
Zusammenhang auch Bascom 2.0.7.1. Bei dem Versuch mit verschiedenen 
Beispielen probiere ich im ersten Schritt das Beispiel mit dem dafür 
vorgesehenen Prozessor und danach mit dem m1280def.dat.
Also
1. Beispiel laden
2. Compilieren
3. Simulieren
4. Anpassen auf m1280def.dat
5. ggf. Anpassen der Ports
6. Compilieren
7. Simulieren
8. Auf Arduino schiessen
9. und auf Hardware nochmals testen und freuen das es geht
Bis jetzt war das auch alles recht erfolgreich und ich hab eine Menge 
über den Chip und seine Fähigkeiten gelernt.
Seit Freitag ist alles anders. Habe mich hier das erste Mal mit INT0 
beschäftigt. Für den atmega8 mit folgenden Code
$regfile = "M8def.dat"
$crystal = 10000000
$hwstack = 100
$swstack = 100
$framesize = 100
$sim
'LED1 an PD7
Led1 Alias Portb.7
Config Led1 = Output
'LED2 an PD6
Led2 Alias Portb.6
Config Led2 = Output
'TASTER1 an PD2
Taster1 Alias Pind.2
Config Taster1 = Input
Taster1 = 1

On Int0 On_int0
Config Int0 = Falling
Enable Int0
Enable Interrupts

Do
   Toggle Led1
   Waitms 200
Loop
End

On_int0:
   Toggle Led2
Return

Nicht sonderlich anspruchsvoll aber der Code funktioniert und lässt sich 
auch simulieren

Nach Änderung auf den 1280ger(m1280def.dar)und Anpassung des Interupts- 
Int0 liegt auf portd0 - geschieht nix in der Simulation und nach dem 
Brennen auf den Arduino ebenfalls nix. Der Interrupt wird nicht 
ausgeführt. Ich hab alles Mögliche ausprobiert - ohne Erfolg. Hat jemand 
von Euch eine Idee was Falsch laufen könnte??? Ich weis nicht mehr 
weiter. Bin dankbar für jede Hilfe

von mue-c (Gast)


Lesenswert?

Hiermit
Taster1 = 1
wolltest du wahrscheinlich den PullUp einschalten. Dazu musst du aber
PortD.2=1
schreiben.

von Sk D. (skdx)


Lesenswert?

Ergibt sich das nicht aus dem

Taster1 Alias Pind.2
..............
Taster1 = 1

und warum gehts dann beim M8dat.def ???????????

von Karl (Gast)


Lesenswert?

Mir ist nicht ganz so klar, was nicht funktioniert.

Hast Du das Programm für den ATmega8 nur simuliert oder lief es auf 
irgendeinem Board, also real?

Funktioniert nur der Interrupt nicht, oder auch die andern Programmteile 
nicht (LED, Taster)?

Ganz wichtig! Wie löst Du den Interrupt aus?

von Karl H. (kbuchegg)


Lesenswert?

Sk Dx schrieb:
> Ergibt sich das nicht aus dem
>
> Taster1 Alias Pind.2
> ..............
> Taster1 = 1


Daraus ergibt sich nicht, dass der Pullup eingeschaltet werden soll. Das 
Pin Register ist schliesslich etwas anderes als das Port Register.

> und warum gehts dann beim M8dat.def ???????????

ZUfall. Nicht identische Eingangsbeschaltung. Die Sterne standen 
günstig. Elektrostatische Einstreuungen. Irgendwas anderes, was den Pin 
auf 1 zog.

von Sk D. (skdx)


Lesenswert?

zu K.H.B.
ok - getestet - ohne Erfolg. Gleiches Verhalten. m8 geht(simulation), 
m1280 geht nicht(weder Simulation noch gebrannt).

zu Karl
Die m8 routinen laufen auf dem Simulator da mir eine Zielhardware fehlt. 
Spielt auch keine Rolle, da Sie eh alle im Simulator laufen. In sofern 
wird natürlich auch die hardware(LED/TASTER) simuliert. Was Das Programm 
tun soll ist wohl nachvollziehbar.
Was nicht geht ist die Auslösung des Interruptes per Taste.

von Karl (Gast)


Lesenswert?

Sk Dx schrieb:
> Die m8 routinen laufen auf dem Simulator da mir eine Zielhardware fehlt.
> Spielt auch keine Rolle, da Sie eh alle im Simulator laufen.

OK. Wenn der Simulator nicht nach Vorstellung läuft (er kann ja einen 
Bug haben), ist es ggf. besser,sich direkt an der Hersteller zu wenden.

http://www.mcselec.com/support-center/

Der ATMega1280 ist aber dann schon real? Wenn es real nicht mit dem 
Interrupt funktioniert, wird es wahrscheinlich daran liegen, dass 
irgendetwas falsch angeschlossen wurde. Ohne Schaltplan kann man nur 
raten.

von MirkoB (Gast)


Lesenswert?

Hast Du noch eine ältere Version von Bascom?
Ich habe hier das Problem, dass manches Programm unter >2.0.x sich 
merkwürdig verhält. (Timer0 im speziellen)
Unter der 1.11.9.8 lässt es sich ohne Probleme kompilieren und macht das 
was es soll. An der Zielhardware hat sich nichts verändert! (Mega64)

Mirko

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
Noch kein Account? Hier anmelden.