PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Bascom ATmega8



Tanne123
25.12.2010, 13:04
Hi,

Ich habe mir ein STK500 spendiert und habe damit ein kleines Problem ich hoffe einer von euch kann mir helfen.
Mein Problem:

Wenn ich in den ATmega8 mit diesem Code flashe:


$regfile = "m8def.dat"
$crystal = 1000000

Config PORTD.0 = output
Config PORTD.1 = output
Config PORTD.2 = output
Config PORTD.3 = output

PORTD.0 = 1
PORTD.1 = 1
PORTD.2 = 1
PORTD.3 = 1

end


Dann geht keine einzige led an(ich habe die led´s nartürlich mit den Ports verbunden :)9
wüstet ihr villeivht eine Lösung???

mfG
Tanne123

High Light
25.12.2010, 14:11
Hallo Tanne123,

Wenn du einzelne Pins als Output deklarieren möchtest,
musst du es so schreiben:

Config PIND.0 = output
Config PIND.1 = output
Config PIND.2 = output
Config PIND.3 = output

Genau so dann auch, wenn du ihnen den Wert zuweist:

PIND.0 = 1
PIND.1 = 1
PIND.2 = 1
PIND.3 = 1

Wenn du einen ganze Port deklarieren möchtest, kannst du schreiben:

Config PortD = Output


Grüße High Light

P.s.: Eins noch, ich hatte auch schon den Fall, dass je nachdem wie ich die
LEDs geschalten hatte, sie auch nur dann angingen, wenn ich ihnen den Wert 0 gab und bei 1 waren sie aus.

hardware.bas
25.12.2010, 14:37
ODER:
DDRD = &B00001111
PORTD = &B00001111
ODER:
DDRD.0 = 1
DDRD.1 = 1
DDRD.2 = 1
DDRD.3 = 1
PORTD.0 = 1
PORTD.1 = 1
PORTD.2 = 1
PORTD.3 = 1
Normalerweise ist die "PIN"-Anweisung eine Abfrage bei Input-Betrieb,
ich weiss jedoch nicht genau, wies bei den "Config"-Anwesungen ist,
da ich diese nicht nutze... zuviel Schreiberei.
Die LEDs: Kathodenseitig an GND, Anodenseitig an den Ausgangspin,
und Widerstand in Reihe mit der LED. VG Micha

Sauerbruch
25.12.2010, 16:11
Vorsicht - Ausgänge über PINX.Y auf High oder Low zu setzen, ist nicht ganz unproblematisch... meine Bascom-Version (1.11.8.8.) lässt es mir schlicht nicht durchgehen, wenn ich schreibe

PINX.Y = 1

Sie meckert dann zu recht an, dass man Inhalte des PIN-Regsters nicht beschreiben kann.

Was immer wahr ist, ist folgendes:

Ausgänge werden mit PORTX.Y = Z auf 0 oder 1 gesetzt
Eingänge werden mit PINX.Y abgefragt

Mit dem Konfigurieren als Ein- oder Ausgänge scheint´s auch verschiedene Wahrheiten zu geben: Ich habe z.B. gerade mal im Simulator beides probiert:

Config PINB.3 = output
und
Config PORTB.3 = output

Beide male wurde DDRB.3 korrekt auf 1 gesetzt.

Am einfachsten und unmissverständlichsten ist es, direkt über´s DDR-Register festzulegen, welcher Anschluss als Eingang und welcher als Ausgang konfiguriert sein soll.

peterfido
26.12.2010, 00:29
Oder Set Portd.1 für HighPegel
und Reset Portd.1 für LowPegel

D.0 und D.1 sind RXD und TXD der seriellen. Wenn in den Optionen eine Baudrate angegeben ist, werden diese Pins automatisch belegt. Eine Hauptschleife sowie die Stackkonfiguration könnten auch nicht schaden, sonst nimmt Bascom die Einstellungen aus den Optionen.

Typer
26.12.2010, 10:31
Hi,
1. LEDs richtig angeschlossen (- + nicht vertauscht)
2. Normalerweisen liegen die LEDs auf 0V und bekommen 5V vom µC
(portd.1 = 1) falls die Leds auf 5v liegen brauchst du 0V am µC (portd.1=0)
3. richtiger Vorwiderstand für LEDs???
4. µC ist nicht richtig in der Fassung

Berichte doch mal ob das Problem schon finden und beheben konntest

Vitis
26.12.2010, 15:46
beim stk500 gehen die LEDs an +5V, das bedeutet, die leuchten wenn der Port auf 0 gesetzt wird ... stammt noch aus der Zeit als die AVR mehr Strom sinken als sourcen konnten.

Typer
28.12.2010, 09:17
beim stk500 gehen die LEDs an +5V, das bedeutet, die leuchten wenn der Port auf 0 gesetzt wird ... stammt noch aus der Zeit als die AVR mehr Strom sinken als sourcen konnten.

na da haben wir doch das Problem.

Versuch mal den Code zum testen! da sollten alle angehen.




$regfile = "m8def.dat"
$crystal = 1000000

Config Portd = Output

Led1 Alias Portd.0
Led2 Alias Portd.1
Led3 Alias Portd.2
Led4 Alias Portd.3

'Schleife
Do

Toggle Led1
Waitms 500
Toggle Led2
Waitms 500
Toggle Led3
Waitms 500
Toggle Led4
Waitms 500

Loop

End

Richard
28.12.2010, 13:15
beim stk500 gehen die LEDs an +5V, das bedeutet, die leuchten wenn der Port auf 0 gesetzt wird ... stammt noch aus der Zeit als die AVR mehr Strom sinken als sourcen konnten.

Ja und das noch über eine Eigenartige Treiber Schaltung. VCC > R >LED > C > E > PInx.y Die Basis vom Transistor ist über einen R fest auf VCC. Was immer das auch soll?

Gruß Richard