@helimike0705
war jetzt nicht meine Absicht ;-)
kann aber sein das es auch rein passt.
PS:
Wenn man im Forum jemand bestimmten meint, hat es sich so ergeben, dass man das mit einem @ angibt an wen es gerichtet ist.
Druckbare Version
@helimike0705
war jetzt nicht meine Absicht ;-)
kann aber sein das es auch rein passt.
PS:
Wenn man im Forum jemand bestimmten meint, hat es sich so ergeben, dass man das mit einem @ angibt an wen es gerichtet ist.
ja, schon okay,dachte nur du meinetes meine code,ist ja nicht der
optimalste und verbesserungen sind immer willkommen,proge erst
seit dez 06 mit bascom und habe vorher noch nie etwas mit mc gemacht.
also habe schon verstanden das es nicht bös gemeint war.
gruß
Moin,
@helimike0705
ja, dein Programm funzt bei mir auch super, vielen dank für deine Mühen. (nur das "Print A" verstehe ich nicht wofür ist das gut?) Ich denke ich werde es später auch so in meiner "lötstation" verwenden. Aber ich würde trotzdem gerne noch mein eigenes Programm zur Funktion bringen (zum lernen, nur so für mich) denn bei meinen nächsten Projekten will ich euch nicht immer wieder mit meinen Anfängerfragen nerven. Mich würde interessieren ob und welche Lehrmaterialen du verwendest um das Programmieren zu erlernen(bücher ect.)
@linux_80
ja, stimmt jetzt geht es auch aus, aber leider nicht wieder an, wenn ich die taste drücke. Irgentwo muss noch ein Fehler versteckt sein, ich kann ihn aber nicht finden :-#
Code:'--------------------------------------------------------------
$regfile = "attiny2313.dat" '
$crystal = 1000000 'Quarz: 1,0 MHz
'******** Deklarationen ********
Dim A As Word
'******** Initialisierung ********
Config Int0 = Falling '
Enable Int0
Enable Interrupts
On Int0 Taste0int
Ddrb = &B11111111 ' port B als Ausgang
Ddrd = &B0100000 ' pin D2 asl eingang
Portd.2 = 1 ' interne pullup widerstände aktivieren
'******** Hauptprogramm ********
Do
If Pind.2 = 0 Then Portb = &B10000000
Wait 1
A = A + 1
If A > 1800 Then
Portb = &B00000000
Else
Portb = &B10000000
If A > 1770 Then
Portb = &B11000000
End If
End If
Loop
'******** Unterprogramme ********
Taste0int:
A = 1
End
Es gibt auch noch ein weiteres Problem, da A immer weitergezählt wird, wird das irgendwann überlaufen, und A ist wieder 0,
dann geht der Lötkolben wieder an, nach etwa (65536-1800) sec. !
Das zählen sollte dann in den Else-Teil der 1. If-Abfrage, am besten zwischen die beiden End If's.
Und wegen dem nicht mehr einschalten, ich weiss zwar nicht obs hilft, aber schreib mal gleich nach dem Wait ein Disable Interrupts, und unten vor Loop ein Enable Interrupts. Sodass die ganze Berechnung und Auswertung von A nicht unterbrochen werden kann.
Sollte währenddessen ein Int0 auftreten, wird der ausgeführt, wenn die Interrupts wieder aktiviert werden.
Das ist zwar nur eine Vermutung, kann aber auftreten, da hier mit 2 Bytes gerechnet wird.
hallo hübi,
das print a war nur für den simulator gedacht,kannst dies streichen.
habe es vergessen heraus zu nehmen.aber freut mich das es dir
gefällt.lernunterlagen ist momentan nur das internet alles was ich zu microkontrollern finde.
gruß mike
habe die ganze sache mal nur auf dem portd umgestellt und schon läuft nix mehr.also sprich die ledanzeigen auf pin 4,5,6.starttaste gelassen auf pin2,sowie nach dem brennen rennt das prog sofort los. warum?egal welchen atmel ich benutze ,at90s2313 oder attiny2313.wollt auf portb mein lcd anschliessen und nun das.
auch hängt sich das programm auf ,aber im sim läuft es,
wieder ein problem das gelöst werden muss,wer weiß rat.
hallo hübi, dein programm aus dem ersten thread läuft !
du machst bestimmt nur einen tastendrück von kurzer dauer,richtig.
also so etwa ein halbe sekunde.lasse mal den taster solang gedückt bis
der beep zu ende ist.dann läuft es. der grund ist das der sound befehl
den programmablauf solange stopt und erst nach dem ende zur do loop
schleife springt. wenn du in der soundausgabe die 1000 (1 sekunde) auf
100 reduzierst (100 millisekunden),ist dein programm schneller.
gruß mike