• Willkommen im Geoclub - dem größten deutschsprachigen Geocaching-Forum. Registriere dich kostenlos, um alle Inhalte zu sehen und neue Beiträge zu erstellen.

Atmel Noob sucht Hilfe bei Programmierung

indi37

Geonewbie
Hallo,
nachdem ich schon mal ein CMOS-Reaktivlicht gebaut habe, wollte ich mich nun mal an ein Reaktivlicht auf ATTiny13V basis heranwagen. Angespornt durch hitec2@night habe ich mir ein paar ATTiny13V's bei Reichelt bestellt und den Aufbau nach dem Kochbuch von http://www.reaktivlicht.de "Grundschaltung mit LED-Lichtmessung" auf einem Steckbrett nachgebaut. Anschliessend noch den Programmieradapter über den Parallelport hinzugefügt und BASCOM-AVR Version 1.11.9.5 aus dem I-Net gezogen.
Soweit so gut. :roll:
Board anschliessen....OK
Fusebits setzen nach Beschreibung....OK
Jetzt wird's spannend. :^^:
Um das Ganze zu testen, erstmal den einfachsten Programmcode kompelieren und auf den Chip bringen.
Code:
$regfile = "ATtiny13.DAT"
$crystal = 113000

Config Portb = &B00011000
Portb = &B11100111
Stop Adc
Stop Ac
Dim A As Byte
Dim Hell_dunkel As Bit

Do
Gosub Led_abfrage

If Hell_dunkel = 0 Then
For A = 1 To 10
Portb.3 = 1
Waitms 50
Portb.3 = 0
Waitms 500
Next A
End If

Loop

Led_abfrage:
Portb.3 = 0
Portb.4 = 1
Waitus 1
Config Portb.4 = Input
Portb.4 = 0
Waitus 1500
Hell_dunkel = Pinb.4
Config Portb.4 = Output
Portb.4 = 0

Return

End

Den Code kompeliert, geflasht und..... Das Laden der LED ist schon mal zu sehen. :D

Also mal beleuchten, ob die LED auch blinkt und..... Dauerlicht für die Zeit der Beleuchtung :???: Na eigentlich sollte sie ja laut Code 10mal blinken.
Code:
For A = 1 To 10
Portb.3 = 1
Waitms 50
Portb.3 = 0
Waitms 500
Next A

Jetzt bin ich ein wenig verwirrt :irre: Vom Prinzip funktioniert alles. Alles ausser das Blinken. Habe ich hier irgendwo einen Codefehler? :hilfe:
 

stonewood

Geowizard
Das 'Laden' der LED sollst Du eben nicht sehen. Die LED ist da in sperrichtung betrieben. Da wird wohl die LED verkehrt rum sein?
 
OP
I

indi37

Geonewbie
:eek:ps: Ob ich es jemals lernen werde, zwischen Kath- und Anode einer LED zu unterscheiden. :eek:ps:

Das wars! Herzlichen Dank für die Unterstützung! :gott:
 

huzzel

Geowizard
Merks Dir mit + (Anode) und - (Kathode)

Beim + ist der Strich "länger" (die zwei Striche vom + länger als der eine Strich vom Minus) -> Langes Bein
 

Kappler

Geowizard
Zusätzlich:
Anode gleich plus

Addieren gleich plus

(aber das mit den 2 Strichen beim Plus ist auch gut... Danke!)
 

jennergruhle

Geoguru
Die Kathode ist auch zu 99.9% der Träger des Chips, die Anode der Draht darauf (also Anode = Pfeil im Schaltbild = Draht, der auf den Chip zeigt). Das hilft auch bei schon abgeschnittenen Drähten oder eckigen LEDs.
 
OP
I

indi37

Geonewbie
Also am besten hilft Kathode = Kerbe = kurz. Allerdings war das eine gebrauchte LED und hatte deswegen wohl auch nur zwei gleich lange Beine. :roll:

Andere Frage: "Wenn ich eine zweite LED (unter der Vorraussetzung, dass sie richtig rum dran ist ;) ) an den ATTiny13V hänge (hier:pB2). Das Ganze ein wenig umprogrammiere.
Code:
Config Portb = &B00111000
Portb = &B11000111

Code:
For A = 1 To 10
Portb.3 = 1
Waitms 50
Portb.3 = 0
Waitms 250
Portb.2 = 1
Waitms 50
Portb.2 = 0
Waitms 250
Next A
Dann blinkt er zwar, aber mit einem so zartem Glimmen. :eek:ps: Nett!
Ist es überhaupt möglich eine zweite LED an so einen Chip zu bauen? Oder muss ich da einen Grösseren nehmen?
 

Windi

Geoguru
indi37 schrieb:
Ist es überhaupt möglich eine zweite LED an so einen Chip zu bauen? Oder muss ich da einen Grösseren nehmen?
Laut Datenblatt kannst Du einen Pin des Tinys mit 40 mA belasten.
Eine LED hat üblicherweise 20 mA. 2 LEDs gehen also.
Die Gesamtstromaufnahme des Tiny darf 200 mA nicht überschreiten.
 
OP
I

indi37

Geonewbie
Danke für die Antwort. Dann kann ich das schon mal ausschliessen.

Jetzt hab ich mal das Skript ein wenig umgeschrieben, damit ich die Spannung besser messen kann.
Code:
For A = 1 To 10
Portb.3 = 1
Waitms 5000
Portb.3 = 0
Portb.2 = 1
Waitms 5000
Portb.2 = 0
Next A
Jetzt habe ich an Port3 eine rote LED mit einem 100 Ohm Widerstand und an Port2 dasselbe. Port3 ist gleichzeitig der Auslöser wie im Kochbuch. Versorgungsspannung ein Li-Akku mit 4V.
Auf Port3 messe ich 1,95V auf Port2 nur 1,64V. :???: Meine roten LEDs leuchten aber erst bei 1,8V gescheit. Daher also das Glimmen.

Ich könnte mal den Port wechseln :roll:
 

thomas_st

Geowizard
Windi schrieb:
Laut Datenblatt kannst Du einen Pin des Tinys mit 40 mA belasten.
Jep - hatte ich bisher ja auch immer geschrieben. Aber dann hatte doch jemand mal nachgemessen und festgestellt dass bei Strömen > 20mA die Spannung am Pin sehr schnell zusammenbricht. Ich glaube mehr als 25mA hat er damals nicht "heraus" bekommen.

indi37 schrieb:
Code:
For A = 1 To 10
Portb.3 = 1
Waitms 5000
Portb.3 = 0
Portb.2 = 1
Waitms 5000
Portb.2 = 0
Next A
Jetzt habe ich an Port3 eine rote LED mit einem 100 Ohm Widerstand und an Port2 dasselbe. Port3 ist gleichzeitig der Auslöser wie im Kochbuch. Versorgungsspannung ein Li-Akku mit 4V.
Auf Port3 messe ich 1,95V auf Port2 nur 1,64V. :???:
Hardwareseitig sehe ich kein Fehler. Muss man bei Bascom die IO-Pins nicht auch zunächst auf Ausgang schalten? Hast Du das gemacht? Jedenfalls ist das das Einzigste was ich erkennen kann.

Viele Grüße,
Thomas(_st)
 
OP
I

indi37

Geonewbie
qByter schrieb:
Config Portb = &B00111000
Portb = &B11000011
...

Du hast Port B.2 nicht auf Ausgang konfiguriert, sondern nur die Ports 3-5...

Nimm mal:
Config Portb = &B00111100

So! Jetzt habe ich einen Knoten in den Hirnwindungen!

reaktiveslicht3hm.gif


Wenn ich
Code:
Config Portb = &B00011000
codiere, dann schalte ich Pinb.3 und .4 auf Ausgang oder anders ausgedrückt Pin2 und 3 des Tinys (siehe Kochbuch).
Möchte ich nun eine zweite LED an Pinb.2 oder anders an Pin7 des Tinys bin ich davon ausgegangen, dass die Codierung so
Code:
Config Portb = &B00111000
lauten müsste. Ist das so nicht korrekt? :???:

Welche Pinb. bzw welche Pins des Attiny schaltest du auf Ausgang mit diesem Skript
Config Portb = &B00111100
auf Ausgang?
 

qByter

Geocacher
Möchte ich nun eine zweite LED an Pinb.2 oder anders an Pin7 des Tinys bin ich davon ausgegangen, dass die Codierung so
Code:
Config Portb = &B00111000

lauten müsste. Ist das so nicht korrekt? :???:
Nope ;)

Bei Deinem Config-Statement sind die Pins B0-B2 auf Eingang, B3-B5 auf Ausgang und der Rest wieder auf Ausgang konfiguriert.
(Bitweise von hinten gelesen, anfangend bei "0").

Welche Pinb. bzw welche Pins des Attiny schaltest du auf Ausgang mit diesem Skript
Zitat:
Config Portb = &B00111100

auf Ausgang?
PinB.0 und PinB.1 auf Eingang (die letzten 2 Stellen), PinB.2 bis PinB.5 auf Ausgang...
 
OP
I

indi37

Geonewbie
Aha.........OK. Na dann kann das ja auch nicht klappen, wenn man die Ports von vorne wegzählt (wie ich). :kopfwand:
Wie ungünstig, dass das Kochbuch genau die zwei mittleren Ports benutzt. Da geht es dann so oder so.

Und wenn man dann auch noch die zweite LED nicht direkt auf die Masse, sondern auf einen freien Port hängt, dann leuchtet sie auch noch genauso hell, wie die Erste. :schockiert:
Warum das so ist, versteh ich zwar nicht. Aber es funktioniert! :joint:

Ich bedanke mich für die Beseitigung meines fehlenden Wissens und das nicht solche Schilder kommen. :umleitung:
 
Oben