I/O - Testgerät

Hi Dino,

hmm - hab mich an Deinem BS250 festgebissen, dabe ist die Lösung doch so einfach. Auf meinem Tester- Board brauch ich doch gar keine Transistoren.

Ich muss nur 1 x Tx des Tiny85 und 1 x Rx (beide Tiny84 zusammengeschaltet) herausführen!!! :D Die beiden Leitungen werden dann ausserhalb am Bus der HW- UART angeschlossen. Oder noch besser: An der Stelle, an der sich die Drei treffen, die Diode einsetzen. Spart eine Leiterbahn nach draussen.:D:D

Somit brauche ich nur geringfügige Änderung vornehmen. Na, nun hat die Konfusität ein Ende.


Grüsse,

Michael
 
Hi,

hmm, hat man eine Hürde genommen, steht das nächste Problem an. War ja wieder ein super Wochende. :mad:

Nachdem die Tiny84 nicht zu gebrauchen waren (keine SW- UART), habe ich jetzt folgende Zusammenstellung:

Ein Tiny85 erfasst über den ADC einen Temperatursensor (z. zt. noch ein KTY, später dann minütlich über einen Dallas) und "feuert" den Wert permanent über die SW- UART 'raus.

Ein Mega8 liest den Wert ein (SW- UART) und gibt ihn an ein 7- Segment (nacheinander), an ein LCD und an das Terminalfenster (HW- UART) aus. Schön schnell mit 115200 Baud.

Dann habe ich als "Master" einen Mega16 eingesetzt. Ext. Quarz angewählt und JTAG abgeschaltet. Auf Tastendruck soll der Temperaturwert vom Tiny85 eingelesen und über den Mega8 an die Displays (beides SW) und das Terminal (HW) ausgegeben werden. Was passiert? Datenmüll; auch ohne die "Slaves". Nicht mal ein PRINT x geht. Danach habe ich das Masterprogramm an einen Mega8 angepasst. Und siehe da - alles schön mit 115K2, wie es sein sollte.

Dann habe ich die Prozedur mit einem zweiten Mega16 wiederholt: Wieder Datenmüll und Fehlfunktion. Wieder den Mega8 angeschlossen - alles super.

DDR, PORTS und Pinanschlüsse mehrfach überprüft, alles richtig. Am Programm (natürlich angepasst) kann es nicht liegen, da der Mega8 ja funktioniert. Dass gleich beide 16er defekt sind, kann ich mir nicht vorstellen. Dass sie leben, habe ich mit diversen Tastern und LED's ausprobiert. Nur die UART will nicht, egal ob 1200baud oder 115K2. Der Quarz (14.7456MHz) ist ok, arbeitet ja jetzt am 8er. MOSI, MISO und SCK sind nicht mit einer Schaltung belegt.

Als zweites habe ich festgestellt, dass es nicht möglich ist, HW und SW- UART miteinander zu verbinden. Es tut sich gar nichts; Tx und Rx natürlich immer richtig verbunden und in den Programmen richtig eingestellt; keine Kurzschlüsse produziert.

Zusammengefasst:
  • Beide Mega16 verarbeiten die Daten über UART nicht.
  • Die Kommunikation zwischen den Atmel's funktioniert nur mit der SW- UART
  • Die Displays werden schnell und richtig angesteuert.
  • Die Terminalausgabe des Masters erfolgt fehlerfrei über die HW- UART.
  • Die Programme sind fehlerfrei.
Hat jemand eine Idee, was falsch sein könnte? Oder gibt es beim Mega16 (und Mega32, noch nicht ausprobiert) und dem oben beschriebenen UART- Problem Tricks, die ich noch nicht kenne?


Grüsse,

Michael
 
Hallo Michael!

Ich kann mir da nun auf die Schnelle auch keinen Reim drauf machen, aber hast du mal probiert die beiden Mega16 via SW-UART kommunizieren zu lassen?

Ich habe die Kombination Mega8 <-> Mega16 ja auch mal mit SW-UART gemacht.... hat allerdings problemlos funktioniert.

Hast du ggf. noch mal den aktuellen Code für mich? :flowers:

Grüße,
Cassio
 
Hallo Cassio,

nein, die beiden 16er zusammen habe ich nicht ausprobiert.
Den Code (muss ich in den Keller runter) schicke ich morgen, muss mich jetzt auf's Ohr legen.:goodnight:


Grüsse,

Michael
 
Hi Michael!

Kein Thema!
Ich wollte dich auch heute Abend nicht mehr in den Keller jagen.
Dann schaue ich mir morgen den Code mal an....
Vielleicht fällt mir ja etwas dazu ein bzw. auf.

Wünsche dir nun erst mal eine angenehme Nacht :sleep:

Grüße,
Cassio
 
Hi Cassio,

yip, mal wieder genug geschlafen und frisch die Programme nochmal durchgegangen sowie beide Mega16 gegeneinander angeschlossen. Die UART bleibt vermatscht. Ich befürchte, die Beiden sind defekt. Da ich z. Zt. nur alk- freies Weizen trinke, scheidet dieser Punkt also aus. :rolleyes: Ich trau mich fast nicht, die Mega32 anzuschliesssen.

Ich habe jetzt den Lap und den kompletten Aufbau wieder oben, das Rauf- und Runterrennen nervt doch etwas.

MEGA16 - MASTER/TEST


CodeBox bascom

$regfile = "m16def.dat"
$crystal = 14745600
$baud = 115200
$hwstack = 40
$swstack = 20
$framesize = 40
'____________________________________________________________________
'_____ Compiler- Direktiven/ LIB's einbinden ______________________________
'
$LIB "mcsbyte.lbx"
'____________________________________________________________________
'_____ Ports definieren _________________________________________________
'
DDRa = &B0000_0000 ' PortA - Eingang
portb = &B1111_1111 ' Pullups aktiviert
'
DDRB = &B0000_0000 ' PortB - Eingang
portb = &B1111_1111 ' Pullups aktiviert
'
DDRC = &B0000_0000 ' PortC - Eingang
portc = &B1111_1111 ' Pullups aktiviert
'
DDRD = &B000_0010 ' PortD = Eingang
portd = &B1111_1100 ' Pullups aktiviert'
'____________________________________________________________________
'_____ Variablen - Subroutinen - Label ____________________________________
'
'Dim i as byte , avr as byte
Dim temp as integer
Dim grad as single , wert as single ', zeit1 as single , zeit2 as single
grad = 0 : temp = 0 ':zeit1 = 0 : zeit2 = 0
'____________________________________________________________________
'_____ Register _______________________________________________________
'
ADCSRA.7 = 0 : ACSR.7 = 1 : sreg.7 = 1 'ADC und Komparator aus, IRQ an
'____________________________________________________________________
'_____ Pins zuweisen __________________________________________________
'
'____________________________________________________________________
'_____ Hauptprogramm ________________________________________________
'
'config waitsuart= 1
waitms 200
''
open "comd.6:115200, 8 , n , 1" for input as #1
'open "comb.1:115200, 8 , n , 1" for output as #2
''
do
if pinD.7 = 0 then
do
inputbin #1 , grad , temp
loop until grad > 0
wert = temp
'printbin #2 , &B0000_0010 ; grad
Print
Print "ADC " ; fusing(wert , "####.") ; " = " ; fusing(grad , "##.##") ; " °C"
waitms 150
endif
loop
close #1 ' : close #2
End


MEGA16 - SLAVE/TEST


CodeBox bascom

$regfile = "m16def.dat"
$crystal = 14745600
$baud = 115200
$hwstack = 40
$swstack = 20
$framesize = 40
'____________________________________________________________________
'_____ Compiler- Direktiven/ LIB's einbinden ______________________________
'
$LIB "mcsbyte.lbx"
'____________________________________________________________________
'_____ Ports definieren _________________________________________________
'
DDRa = &B0000_0000 ' PortA - Eingang
portb = &B1111_1111 ' Pullups aktiviert
'
DDRB = &B0000_0000 ' PortB - Eingang
portb = &B1111_1111 ' Pullups aktiviert
'
DDRC = &B0000_0000 ' PortC - Eingang
portc = &B1111_1111 ' Pullups aktiviert
'
DDRD = &B010_0010 ' PortD = Eingang
portd = &B1011_1100 ' Pullups aktiviert'
'____________________________________________________________________
'_____ Variablen - Subroutinen - Label ____________________________________
'
'Dim i as byte , avr as byte
Dim temp as integer
Dim grad as single ',zeit1 as single , zeit2 as single , wert as single
grad = 21.67 : temp = 232 ':zeit1 = 0 : zeit2 = 0
'____________________________________________________________________
'_____ Register _______________________________________________________
'
ADCSRA.7 = 0 : ACSR.7 = 1 : sreg.7 = 1 'ADC und Komparator aus, IRQ an
'____________________________________________________________________
'_____ Pins zuweisen __________________________________________________
'
'____________________________________________________________________
'_____ Hauptprogramm ________________________________________________
'
'config waitsuart= 1
waitms 200
''
'open "comd.6:115200, 8 , n , 1" for input as #1
open "comd.6:115200, 8 , n , 1" for output as #2
''
do
printbin #2 , grad ; temp
waitms 500
loop
close #2 ' : close #2
End


Falls nötig, schicke ich noch die funktionierenden Codes, wird jetzt zu unübersichtlich.


Grüsse,

Michael
 
Hallo Großvater,
du solltest dich zunächst mal von den Libs "mcsbyte.lib" trennen.
Damit sind nur String-Konvertierungen mit Bytes möglich. Du benutzt in Prints aber auch Single und Integer Typen.

HBA
 
Hi HBA,

stimmt, hatte ich mit jeder Copy mitgenommen. Hab sie grad eben mal rausgenommen, natürlich keine Änderung. Die Mega8 laufen auch mit den Lib's einwandfrei.


Grüsse,

Michael
 
Hi,

was hat es mit der Lib des Peter Fleury auf sich? Sollte ich die mal einbinden?
Obwohl - es muss doch auch ohne "Fremd"- Lib's funktionieren.


Grüsse,

Michael
 
Hallo Michael!

Ich habe mein Augenmerk nun mal nur auf die serielle Verbindung gelegt....

Mal abgesehen von deiner Master und Slave Beschreibung zum Programmcode, würde mir auch auf den ersten Blick nichts ungewöhnliches auffallen. ;)

In beiden Fällen passen die Einstellungen der Pins (PD.6), als Eingang oder Ausgang.
Da es zum Testen eine One-Way-Verbidnung ist, kannst du auch beim Verdrahten nichts vertauscht haben.

Hast du bei der Config mal folgendes Probiert?
Code:
Open "COMD.6:9600,8,N,1,inverted" For Input As #2

bzw.
Code:
Open "COMD.6:9600,8,N,1,inverted" For Output As #1

Der Unterschied liegt im "inverted" !

Ach so....
Hast du das $LIB "mcsbyte.lbx" zur Probe mal herausgenommen?

Sende doch einfach nur mal eine Variable von einem Mega16 zum Anderen und lass den Rest im Programm einfach weg.

Zu dem Quarz..... du hast aber nicht zufällig den Mega16L verwendet? ;)


Das wären so meine ersten Ideen zum Thema!

Gruß,
Cassio
 
Hi Cassio,

Open "COMD.6:9600,8,N,1,inverted" For Input As #2

Ja, alles schon ausprobiert. Nur ein Byte, eine 1, ein A usw.
Hast du das $LIB "mcsbyte.lbx" zur Probe mal herausgenommen?
Ja, grad eben.

Zu dem Quarz..... du hast aber nicht zufällig den Mega16L verwendet? ;)
Nein, beides 16-16PU

Gut, danke Euch erstmal. Ich denke, die sind hin. Die Programme laufen ja bis auf die Portänderungen auf beiden Mega8!!! Es liegt also definitiv nicht am Code. Es geht ja nicht mal ein "Hallo" an den PC mit dem 16er ohne angeschlossene Atmels. Und Baudraten zwischen 1200 und 115200 (ja, das Terminal jedesmal umgestellt) habe ich auch ausprobiert.
Ich werde morgen Abend mal nen 32er riskieren.


Grüsse,

Michael
 
Hallo Michael!

Ist doch schon seltsam.
Was soll denn da defekt sein?
Hast du mal andere Pins ausprobiert?

Pack die beiden Megas sonst erst mal an die Seite.... vielleicht können wir das ja noch mal gemeinsam testen.
Oder pack sie ein und komm vorbei. Bei dem schönen Wetter macht das Zweiradfahren ja auch richtig Spaß. :)
Morgen Vormittag bis zum frühen Nachmittag hätte ich Zeit.... gebe auch ein Frühstück aus. ;)

Grüße,
Cassio
 
Hi Cassio,

danke für Dein Angebot, aber ich musste heute ja arbeiten. :eek: Und morgen muss ich meinen reparierten Roller abholen. Ölpumpe defekt, Pleuellager (schleichend) ausgeglüht, Verkäufer bzw. Importeur insolvent, keine Garantie. So macht's Spass. Aber nu rennt er ja wieder.

Den Fehler habe ich gefunden bzw. eigentlich nicht wirklich. Hab den Master mal aufs Board gesteckt - Senden ok.:D:D:D Da hätte ich ja auch früher draufkommen können. :eek::eek::eek:

Nur - auf meinem Programmierboard kann ich bis jetzt keinen Fehler finden. Durchgeklingelt, keine Kurzschlüsse, nichts. Es funktionieren alle Pins, nur HW- UART nicht.

Ok, erstmal essen und Weizen trinken - vielleicht fällt mir dabei ja noch was ein.


Grüsse,

Michael
 
Hi,

tataa - Fehler gefunden.:D:D:D

Ich habe einige steckbare Quarze für das Programmier- und Breadboard. Und ähem - hust - da war blöderweise ein 16MHz dran.:eek: Ich habe mich so in die Pins und Programme verbissen, dass ich auf das nächstliegende nicht kam.

Hmm, habt Ihr ja wieder was zu grinsen...


Grüsse,

Michael
 
Hmm, habt Ihr ja wieder was zu grinsen...

Hi Michael!

Na, dann will ich mal :D :D :D :D :D :D :D :D :D :D :D :D :D


Reicht das? :)

Gruß,
Cassio


PS: Angebot zum Frühstück ist damit aber nur verschoben und nicht aufgehoben. ;)
 
Hi,

soooo....das eigene GfA- Basic- Programm für die COM- Schnittstelle funktioniert auch in beide Richtungen. :D Nun habe ich schonmal die Grundgerüste für die Rennbahnsteuerung.

Doch vorher muss erst der Tester fertig werden. Da warte ich noch auf Dino's Versuch mit seinem COM- Bus...bevor ich mir die UART doch noch versemmle...:rolleyes:


Grüsse,

Michael
 
Hi Michael,

Doch vorher muss erst der Tester fertig werden. Da warte ich noch auf Dino's Versuch mit seinem COM- Bus...bevor ich mir die UART doch noch versemmle...:rolleyes:
mal sehen wann ich dazu komme :rolleyes: So langsam kleckern die Bauteile
auf die Platinen ;)

Ich muß erst mal sehen was mich nächste Woche erwartet. Dieses Wochenende
ist wohl relativ stark verplant :(

Gruß
Dino
 
Hi Dino,

Dieses Wochenende
ist wohl relativ stark verplant :(

Kein Problem, ich hab' eh schon zuviel Zeit vertrödelt.:mad:

Warum ich zwischen SW-und HW- UART, also direktes anstöpseln auch mit Dioden, immer noch keine Verbindung bekomme, ist mir jetzt völlig egal. Ich führe eine Tx vom Tiny85 und eine Rx vom Mega8 aus dem Tester heraus. Die Kommunikation funktioniert ja jetzt fehlerfrei; das Layout wird jetzt fertiggestellt.
Das Gerät sollte bis zum Urlaub ja eigentlich einsatzbereit sein, da ich den ersten Teil der Rennbahn versenkt einbauen und die Sensoren testen will.

Da will ich an dieser Stelle gleich noch einen zum Besten geben:
Ich überlege ernsthaft, die Rennbahnsteuerung an eine DOS- Maschine anzuschliessen. Das würde ein fixes Minimalsystem werden. Auch dafür habe ich eine GfA- Basic- Lizenz. Grafisch - einfach - schnell.:D


Grüsse,

Michael
 
RS232-Bus läuft mit 9k6-8n1 und Echo-Unterdrückung

Hallo,

also der RS232-Bus läuft zwischen nem Mega8 und nem Mega128. Mit einem
BS250 für die Echo-Unterdrückung und zur Zeit 9,6kBit/s 8Bit, 1Stopbit, keine
Parität.

38k4 und 57k6 laufen auch problemlos. Mit 115k2 läufts zZt noch nicht.
Aber man könnte damit ne Busstruktur mit einem Kabel aufbauen das
2 Adern plus Schirm hat. Eine Ader für Daten, ein für +5V und der Schirm
für GND.

Jetzt fehlt noch ein wenig "Bus-Intelligenz" und ein dritter Bus-Teilnehmer.

Der Mega8 als "Reflektor"
Anhang anzeigen EvalBoard_m8_RS232-Bus_v01.bas
Der Mega128 als Initiator und Ziel
Anhang anzeigen EvalBoard_m128_RS232-Bus_v01.bas

Gruß
Dino
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)