Forum: Mikrocontroller und Digitale Elektronik Zeitsteuerung mit AVR ATtiny 13


von Tommy (Gast)


Lesenswert?

Hallo zusammen!

hab da ein proplem und hoffe mir kann hier geholfen werden.Erstmal der
code

$regfile = "atTiny13.dat"
$crystal = 1200000
$hwstack = 24
$swstack = 16
$framesize = 32

Config Portb.0 = Input                                      'Hier
                                                            'Taster1
Config Portb.2 = Output                                     'Hier Led1

Config Portb.1 = Input                                      'Hier
                                                            'Taster2
Config Portb.3 = Output                                     'hier Led2

Config Debounce = 100
Reset Portb.2
Reset Portb.3

Set Portb.0
Set Portb.1

Do
Debounce Pinb.0 , 0 , Schalter1 , Sub
Debounce Pinb.1 , 0 , Schalter2 , Sub
Loop

Schalter1:
Portb.2 = 1
Wait 2
Portb.2 = 0
Return

Schalter2:
Portb.3 = 1
Wait 1
Portb.3 = 0
Return
End

so und jetz mein problem.
ich brauche gleichzeitig 2 funktionen und bring das einfach nicht auf
die reihe.
wenn zb.taste 1 kurz getrückt wird,soll eine zeit ablaufen die erst led
1 dann led 2 einschaltet und später beide ausschaltet.dennoch soll in
dieser zeit auch taste 2 eine zeit steuerfunktion haben.sobald ich bei
portb 2 ein WAIT einsetze,ist die funktion für taste 2 ausser betrieb.
wie kann man das anders machen??wäre nett wenn ich hier hilfe
bekomm.danke im vorraus!

von gedrueckter (Gast)


Lesenswert?

In einem Timer-IRQ die Tasten abfragen und entprellen, da eine globale 
volatile Variable setzen und die in der Hauptschleife auswerten.

von chris (Gast)


Lesenswert?

nutze er doch einen Timer. in der ISR wird dann das T-Flag gesetzt und 
im Unterprogramm Schalter1/2 wird auf das T-Flag abgefragt ob 1 oder 0 
und solange die Zeit nicht abgelaufen ist kann man immer ziwschen durch 
die Taster abfragen. Aber erzähl doch mal was steht hinter dem Projekt 
ein Test oder soll es im Reallife eingesetzt werden?

von Tommy (Gast)


Lesenswert?

HY!danke Kenn mich trotzdem nicht aus! :)
wie macht man sowas? bitte um eure mithilfe!!
der zweck dieser sache ist eine steuerung für eine heizung die man 
zwecks datenbus un so zeug nua fernsteuern kann.jetz muss ich die 
fernbedienung öfnen und von den 3 tastern (MODE,ON.OFF) pins rausführen 
und diese mit gsm fernschalten.jetzt muss zum einschalten MODE für 3 sec 
gebrückt werden,dann ON für 1 sec.wenn mann innerhalb von 60 sec wieder 
anruft,muss wieder MODE dann OFF gebrückt werden.sobald eingeschaltet 
wird,sollen 60 min ablaufen und der MC kann schlafen gehen.schlafen 
gehen soll er auch gleich nach dem OFF befehl an die fernbedienung.
kann mir da jeman so einen Timer code ungefähr zurecht legen.bin da 
etwas schwach auf der brust. diese ganzen zeiten geb i mier dan schon 
selbst ein! :) EINEN HERZLICHEN DANK SCHON MAL!!!!

von chris (Gast)


Lesenswert?

gucks du hier:
http://www.mikrocontroller.net/articles/AVR-Tutorial

Schreibe selbst nur in ASM, in Bascom kenn i mich leider nicht aus lesen 
ja aber schreiben...

von Tommy (Gast)


Lesenswert?

danke nochmal!!ich versuchs.vielleicht wirds jetz was.oder hatt da doch 
noch jemand etwas für mich?? BITTE!! :)

von Tommy (Gast)


Lesenswert?

NE,NE,NE,NE!!!!!!Das wird nix!!!!
Kann mir jemand so einen code mit dem timer für 2 taster zukommen 
lassen??
Wäre echt sehr erfreut!

von gedrueckter (Gast)


Lesenswert?

Klar Hausaufgaben u.ä. werden hier umsonst erledigt ...
Entweder Du bist in der Lage das Tutorial zu lesen und zu verstehen oder 
nicht.
Es gibt auch Tutorials für Basic einfach mal danach suchen ...

von Peter D. (peda)


Lesenswert?

Du darfst das Wait nicht blockierend machen.

Man läßt z.B. einen Timerinterrupt laufen, der dann nach Ablauf der Zeit 
einen Callback ausführt.
Inzwischen können dann die anderen Tasks ausgeführt werden.

Ich hab dafür eine C-Lösung:
Beitrag "Wartezeiten effektiv (Scheduler)"


Peter

von Tommy (Gast)


Lesenswert?

Danke Peter!
Nach Langem herum probieren hab ich dann eine nicht schöne aber gut 
funktionierende Lösung gefunden!

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.