PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Verständnisfrage Port als Ausgang und ihn schalten



mat-sche
19.01.2014, 17:47
Liebes Forum,

habe hier eine Verständnisfrage.


Config Portd.7 = Output
Rgb_light Alias Portd.7


........ Rgb_light = 1


Der Portpin d7 ist sofort auf +5V, egal ob ich Rgb_light = 1 setze. Sollte doch aber so funktionieren??? Ach ja, benuzter controller = atMega128.

radbruch
19.01.2014, 19:33
Wäre das nicht richtiger:

Config Pind.7 = Output

mat-sche
20.01.2014, 09:36
Danke für Deine Antwort.
Ich hatte disbezüglich auch in die hilfe geschaut und dort wurde der port auch mit portc.1 = output declariert. Hatte es jedoch auch so wie du es probiert. Weshalb der port nicht schaltete lag am "alias". Warum es nicht funktioniert weiss ich nicht. Schalte jetzt den port direkt ohne alias.

Hubert.G
20.01.2014, 13:40
Wenn ich da mal nicht zurecht komme, schaue ich auf halvar.at im BASCOM Tut. nach.
Hast du schon mal probiert das umzudrehen.
Nicht so:

Config Portd.7 = Output
Rgb_light Alias Portd.7

sondern
Rgb_light Alias Portd.7
Config Rgb_light = Output

Che Guevara
20.01.2014, 13:49
Hi,

die Syntax sollte IMHO stimmen. Hast du mal gekuckt, ob auf dem Port JTAG oder ähnliches ist? Das würde Vorrang vor deiner Konfiguration haben und somit dieses Verhalten erklären.

Gruß
Chris

oberallgeier
20.01.2014, 14:05
Wäre das nicht richtiger: ... Config Pind.7 = OutputBascom kann ich nicht, C nicht wirklich gut, ABER soweit ich weiß, wird im AVR-Umfeld mit Ausdrücken "...PORT..." ein Ausgangspin benannt, Eingangspinne werden mit "...PIN..." angesprochen bzw. abgefragt. Stimmt auch überein mit hier: (http://www.rn-wissen.de/index.php/Bascom#I.2FO-Port_als_Eingang)

Config Portc.0 = Output 'Ein Pin wird aus Ausgang konfiguriert PC0 (also Pin0 von Port C)
Led Alias Portc.0
Config Pina.0 = Input 'Ein Pin (PA0) wird als Eingang definiert
Taster Alias Pina.0
Porta.0=1 'Interner Pullup Widerstand ein

radbruch
20.01.2014, 14:38
Bascom kann ich nicht...Hier hilft die Online-Hilfe von Bascom:

http://avrhelp.mcselec.com/index.html?config_port.htm

Oder ein anderer Artikel im RN-Wissen:

http://www.rn-wissen.de/index.php/Bascom#Einen_I.2FO_Port_umschalten

oberallgeier
20.01.2014, 14:54
Hier hilft die Online-Hilfe ... Oder ein anderer Artikel im RN-Wissen ...Da ist´s besonders schlecht, wenn die verschiedenen onlinehilfen eben unterschiedliche Ratschläge geben. Der oben zitierte Code stammt ja von einer - aber eben anderen - RN-Bascomhilfe. Und leider steht nie dran ob die Hilfen stimmige oder falsche Beispiele geben.

Ok mic, hast ja Recht, ich werde mich (wieder) auf die Ratschläge und Hilfen beschränken, die ich selbst positiv getestet hatte.

malthy
20.01.2014, 16:37
Nur nochmal zum Verständnis

zB



...

do
toggle rgb_light
waitms 100
loop

...


geht nicht? Also der Pin bleibt immer high? Deine Syntax ist okay, wie oberallgeiers Beispiel ja auch belegt. Der Fehler müsste demnach woanders sein, vielleicht in der Beschaltung des Pins?

mat-sche
20.01.2014, 18:37
@ all,

den Port zu schalten geht ohne weiteres über portg.1 = 1, nur die Zuweisung mit dem Alias-Befehl nicht. Ich hatte alles vorgeschlagene schon vorher ausprobiert. Nach dem ich dann das Alias weggelassen habe und den Port direkt geschalten habe, funktionierte es. ich werde es bei Gelegenheit nochmals testen und wenn könnte es ja an Bug in der Software sein :).

Dank an Euch allen!!!

HeXPloreR
20.01.2014, 19:10
Hallo,

überprüfe doch mal ob überhaupt der Hardwarestack auf z.B. 32 steht, entweder in den Einstellungen in Bascom oder im Code selbst- nicht das der "Nul"l ist, somit weiß BASCOM wohl nichts mit Deinem ALIAS anzufangen.
$hwstack= 32 ' default use 32 for the hardware stack
$swstack= 10 ' default use 10 for the SW stack

$framesize= 40 ' default use 40 for the frame space

Ist nur nen Versuch. Geht sonst der Test den malthy vorgeschlagen hat? Und sonst hilft es wohl nichst, dann musst Du uns den ganzen Code zeigen.
Welcher ATmega128 ist es genau?
Und es muss sicher sein das der neue/geändert Code auch im µC ankommt ;)

mat-sche
20.01.2014, 19:28
Hallo,

überprüfe doch mal ob überhaupt der Hardwarestack auf z.B. 32 steht, entweder in den Einstellungen in Bascom oder im Code selbst- nicht das der "Nul"l ist, somit weiß BASCOM wohl nichts mit Deinem ALIAS anzufangen.
$hwstack= 32 ' default use 32 for the hardware stack
$swstack= 10 ' default use 10 for the SW stack

$framesize= 40 ' default use 40 for the frame space


>> Na klar habe ich die Resavierung für mein Programm vorgenomme :)




Ist nur nen Versuch. Geht sonst der Test den malthy vorgeschlagen hat? Und sonst hilft es wohl nichst, dann musst Du uns den ganzen Code zeigen.
Welcher ATmega128 ist es genau?
Und es muss sicher sein das der neue/geändert Code auch im µC ankommt ;)

>> Warum der Test, kann doch den Port setzen ;)
>> was für ein Mega128.... kann ich nicht sagen ist jetzt verbaut

malthy
20.01.2014, 20:04
Dass nur der alias nicht geht ist schon einigermaßen mysteriös. Ich mache es eigentlich immer so wie Du auch, habe dieses Problem bisher nicht gehabt. Diese Alias Funktionalität ist mWn schon seeehr lange in Bascom vorhanden, dass sich da noch ein Bug versteckt, halte ich auch für ausgeschlossen.

- - - Aktualisiert - - -


den Port zu schalten geht ohne weiteres über portg.1 = 1



Config Portd.7 = Output
Rgb_light Alias Portd.7

Nur zur Sicherheit: sowas Stumpfes, dass Du einfach mit Deinen Ports durcheinander gekommen bist, ist es nicht? Der 128er hat ja einen Port G ...

HeXPloreR
20.01.2014, 20:07
Ich denke auch nur weil es jetzt über einen anderen weg funktioniert, ändert das wohl nichts an "dem Verständnisproblem" - die Frage von Dir war ja warum das anscheinen nicht klappt bei dir? Aber wenn es Dir ausreicht. Ich würde jedenfalls im Kreisdrehen wenn so etwas simples nicht funktioniert.

mat-sche
20.01.2014, 20:10
Dass nur der alias nicht geht ist schon einigermaßen mysteriös. Ich mache es eigentlich immer so wie Du auch, habe dieses Problem bisher nicht gehabt. Diese Alias Funktionalität ist mWn schon seeehr lange in Bascom vorhanden, dass sich da noch ein Bug versteckt, halte ich auch für ausgeschlossen.
- - - Aktualisiert - - -





Config Portd.7 = Output
Rgb_light Alias Portd.7

Nur zur Sicherheit: sowas Stumpfes, dass Du einfach mit Deinen Ports durcheinander gekommen bist, ist es nicht? Der 128er hat ja einen Port G ...

Na ja....
überprüft habe ich, und auch von anderen bestätigt bekommen, meine Schreibweise => sie stimmt
Ausprobiert habe ich es mit 2 Ports.... immer das Gleiche.
Meine Bug-Vermutung ist auf den atMega128 zurück zuführen (mehr Port's).

HeXPloreR
20.01.2014, 20:25
Weißt Du das man nicht unbedingt auf den Chip draufgucken muss um sagen zu können welcher µC genau dort drin ist (auf Pfeil neben "programmierbutton F4 > manuelles brennen dort ist auch "chip>Idertify")? Man kann die Signatur auslesen, ausserdem kannst Du mal schauen ob der Code überhaupt fehlerfrei übersetz wird. Optionen>Compiler>Chip anhaken + Output anhaken. Wann übersieht sehr schnell eine Fehlermeldung die nur sehr unauffällig in der IDE angezeigt wird.

Und ja die Schreibweise stimmt. Ändert aber bei Dir das eigentliche Problem nicht, oder?

mat-sche
20.01.2014, 20:40
Ich denke auch nur weil es jetzt über einen anderen weg funktioniert, ändert das wohl nichts an "dem Verständnisproblem" - die Frage von Dir war ja warum das anscheinen nicht klappt bei dir? Aber wenn es Dir ausreicht. Ich würde jedenfalls im Kreisdrehen wenn so etwas simples nicht funktioniert.

Ich würde schon gern die Alias Schreibweise nutzen und hatte es bei kleineren Kontrollern auch immer genutzt. Nur ich will nicht dauernd deswegen meinen Kontroller neu flashen..

- - - Aktualisiert - - -


Weißt Du das man nicht unbedingt auf den Chip draufgucken muss um sagen zu können welcher µC genau dort drin ist (auf Pfeil neben "programmierbutton F4 > manuelles brennen dort ist auch "chip>Idertify")? Man kann die Signatur auslesen, ausserdem kannst Du mal schauen ob der Code überhaupt fehlerfrei übersetz wird. Optionen>Compiler>Chip anhaken + Output anhaken. Wann übersieht sehr schnell eine Fehlermeldung die nur sehr unauffällig in der IDE angezeigt wird.

Und ja die Schreibweise stimmt. Ändert aber bei Dir das eigentliche Problem nicht, oder?

ich lasse mir nach dem Compilieren das Ergebnis anzeigen.
Ich kann nicht Deine besagte Vorgehensweise zum Chip-Indentify ausführen, da ich über Bluetooth & rs232 + Bootloader brenne.... ;)

"Und ja die Schreibweise stimmt. Ändert aber bei Dir das eigentliche Problem nicht, oder?"

Ja leider... :(