Elektronik-Labor
Notizen
Projekte
Labortagebuch
30.8.13:
Serielle Ausgaben in Bascom
Noch ein
Fall wo beim Übergang auf die neue Bascom-Version etwas beachtet werden
muss:
Es ging um einen Elektor-Aufsatz zum
FTDI-Vinculum. Rudolf Kischkel berichtete von einem Problem: Meine Bascom
Version 2.07.3 meckert bei "+ Chr(13);": Numeric Parametrer Expected
(Dir). Wie kann ich das ändern? Denn ich kann den Stick nur lesen indem ich
eine txt-Datei vom PC aus beschreibe. Der Test war Simpel "1234" das
wurde mir auch angezeigt aber auf den Stick schreiben ging gar nicht.
Man kann das
Problem lösen, indem man zwei Zeilen draus macht:
Print "rd todo.txt";
Print Chr(13);
Hier mein ursprüngliches Beispiel entsprechend
angepasst:
'Bascom ATmega88, Vinculum
$regfile = "m88def.dat"
$crystal = 16000000
Baud = 9600
Open "com1:" For Binary As #1
Dim Samples As Word
Dim Delayms As Word
Dim Channels As Word
Dim N As Integer
Dim I As Integer
Dim L As Integer
Dim S As
String * 20
Dim Ad As Integer
Config Portb = Output
Config Adc =
Single , Prescaler = Auto , Reference = Off
Start Adc
Echo Off
Do
Input S
Loop Until S = "D:\>"
Portb.0 = 1
Waitms
1000
Print "rd todo.txt";
Print Chr(13);
Input Samples
Get #1 ,
L
Input Delayms
Get #1 , L
Input Channels
Get #1 , L
Input S
Print "OPW Log.txt";
Print Chr(13);
Input S
For N = 1 To Samples
S = ""
For I = 1 To Channels
Ad = Getadc(i)
S = S +
Str(ad)
If I < Channels Then S = S + Chr(9)
Next I
S = S +
Chr(13) + Chr(10)
L = Len(s)
Print "WRF ";
Put #1 , 0
Put #1
, 0
Put #1 , 0
Put #1 , L
Put #1 , 13
Print S ;
Input S
Waitms Delayms
Next N
Print "CLF log.txt";
Print Chr(13);
Input S
Portb.0 = 0
End
Zusatzhinweis von Sebastian Heyn, DL3SEH:Bascom unterscheidet hier zwei unterschiedliche Fälle:
- Das Zusammensetzen von Stringvariablen: a=b+c
- Bei Print nutzt man allerdings Print b;c
Also in Ihrem Fall: Print "rd todo.txt";Chr(13);
Ich hatte damit auch meine Problemchen, vor allem wenn ich Bascom mal lange nicht genutzt habe ;-)
22.8.13:
PWM-Ausgabe in BascomPWM habe ich schon oft benutzt, z.B. für 10-Bit-Ausgaben am Timer1 des ATmega:
Config Timer1 = Pwm , Prescale = 8 , Pwm = 10 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down
Jetzt
habe ich ein Projekt wieder ausgegraben und daran weiter gearbeitet.
Aber irgendwie war alles falsch rum, hohe Spannung wenn ich kleine
meinte und umgekehrt. Lange habe ich nach dem
Fehler gesucht, bis ich schon dachte, ich bin urlaubsreif. Also,
was hat sich seit dem letzten mal geändert? Ein neuer PC, neu
installierte Software... Stimmt, am alten PC hatte ich meist noch eine
sehr frühe Version von Bascom im Einsatz , weil ich mit jemand
kompatibel bleiben wollte, bei dem es auch so ist. Und irgendwann bin
ich doch schon mal drüber gestolpert? Stimmt! Bascom hat vor
langer Zeit mal die Richtung geändert. Statt "Clear Down" muss es jetzt
"Clear Up" heißen! So funktioniert die Sache wieder:
Config Timer1 = Pwm , Prescale = 8 , Pwm = 10 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Up
Das
war vermutlich eine Berichtigung eines Fehlers in einer frühen Version.
Aber wer das Update scheut darf sich nicht beklagen ...
9.8.13:
Der SMD-GrabsteineffektImmer
wenn meine Bausätze neu aufgelegt werden bekomme ich Testmuster. Diesmal war es
ein Fledermausdetektor. Der beste Test ist es ein Gerät
zusammenzubauen. Aber irgendwas war faul. Der Oszillator arbeitete nicht
auf der richtigen Frequenz, am Oszilloskop war eine eigenartige Schwingung zu
sehen. Was kann das sein? Ein scharfer Blick zeigte den Übeltäter. Der
frequenzbestimmende Kondensator mit 1 nF stand auf einer Seite in der Luft. Da
reichte ein Tropfen Lötzinn und alles lief perfekt.
Von so einem Fehler hatte ich schon gehört, es aber noch nie selbst gesehen.
Der
Grabsteineffekt kann
beim SMD-Löten durch Oberflächenspannungen des flüssigen Lötzinns auftreten.
Ein Bauteil, das eigentlich liegen sollte, stellt sich dann auf und steht
im Extremfall wie ein Grabstein auf der Platine. Dieser Fehler ist extrem
selten, weil die SMD-Bestückungsfirmen schon wissen, wie man
sowas verhindert. Aber was man daraus lernen kann ist dies: Es lohnt sich,
eine SMD-Platine mit der Lupe genau zu inspizieren bevor man alles
zusammenbaut. Oder nachher, wenn ein Fehler auftritt. Einen sichtbaren
Fehler reparieren ist einfach und meist wesentlich weniger aufwendig als der
Austausch der kompletten Platine.
Nachtrag von Rudolf Drabek: Ich kenne diesen Effekt aus meiner aktiven Zeit unter dem Begriff
tombstoning. Habe dazu ein nettes Video gefunden:
http://www.youtube.com/watch?v=Lq6zJAUn74Q
6.8.13:
Arduino Leonardo kaputt
In
letzter Zeit geht alles kaputt. Diesmal ist ein Leonardo einem dumm
herumbaumelndem 12-V-Kabel zum Opfer gefallen. Nichts geht mehr. Aber
was genau ist denn nun kaputt? Zum Test wurde ein Labornetzteil mit
Strombegrenzung angeschlossen. Estmal langsam die Spannung erhöhen. Bei
über 1 V beginnt schon ein zu großer Strom zu fließen. Der
5-V-Spanunsgregler bringt die Spannung mit einem Drop von nur 0,5 V an
den Controller, scheint also in Ordnung zu sein. Ein Temperaturtest
soll nun zeigen wo der Fehler steckt. Dazu stelle ich die Spannung
etwas höher auf 3 V ein und spendiere bis zu 1 A. Was nun wirklich warm
wird ist der Mikrocontroller. Damit ist der Fall klar, den Controller
hat es erwischt. Schade.
Könnte man mit der Platine vielleicht
noch etwas anfangen? Die ganze Stromversorgung ist noch in Ordnung. Man
müsste den Controller auslöten. Dann hätte man ein schönes
System
mit USB- und 12-V-Versorgung und zwei stabilen Spannungen von 5 V und
3,3 V. Oder vielleicht kommt auch mal ein Controller in gleicher
Bauform drauf. Ein fast gleicher USB-Controller mit weniger Flash von
Atmel liegt hier noch rum. Daraus könnte mal ein Komplettsystem werden,
das man mit Flip programmieren kann. So ist das fast immer,
wenn
etwas kaputtgeht. Zum Wegwerfen zu schade, und dann kommen neue Ideen
hoch.