mikrocontroller.net

Forum: Compiler & IDEs attiny85 1Mhz Arduino virtuell Serial Protokoll beenden


Autor: DAVID -. (bastler-david)
Datum:

Bewertung
-2 lesenswert
nicht lesenswert
Hallo
Ich habe mich Leider bei der Controller Auswahl verzockt und brauche 
genau einen Pin mehr :-(

Lange rede Kutzer sinn,
Ist es Möglich Software seitigt Tx und Pin als LED Ausgang unter einen 
Hut (pin) zubekommen ?

Wenn ja wie kann man so was angehen?
Das starten ist ja einfach mit zb mySerial.begin(2400);
Aber wie Beende ich das wieder Um den Pin Als LED Ausgang zu nuten ?

Oder kann ich einfach beides laufen lassen?

Vielen dank.

Autor: Jörg B. (jbernau)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
DAVID -. schrieb:
> Ich habe mich Leider bei der Controller Auswahl verzockt und brauche
> genau einen Pin mehr :-(

Dann entwickle doch auf einem Arduino und nimm als LED pin den Reset-Pin 
;-)

Wenn Du das Teil nochmals umflashen willst, dann per HVP. Das 
funktioniert sogar ohne die LED auszulöten, wenn Du den Vorwiderstand 
auf12V auslegst

VG

Jörg

: Bearbeitet durch User
Autor: DAVID -. (bastler-david)
Datum:

Bewertung
-3 lesenswert
nicht lesenswert
Danke Dir!
Die Möglichkeit zum HV flashen habe ich Leider noch nicht.
Was aber ein Größeres Problem ist So Weit ich Weiß und Testen konnte ist 
es nicht Möglich den Reset für Irgendwas zu Nutzen.

Jedenfalls habe ichs noch nie geschafft.

Sonst würde ich darüber die Spannung messen und hätte den Freien Pin.

PS(Neugierde mode an)
Wie oft könnte man den Chip mit Hv Löschen ohne ihn kaputt zubekommen 
2-3 mal ?

: Bearbeitet durch User
Autor: Arduino Fanboy D. (ufuf)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
DAVID -. schrieb:
> Jedenfalls habe ichs noch nie geschafft.

Mit Bootloader kein Problem.
Siehe Digispark - Micronucleus

DAVID -. schrieb:
> PS(Neugierde mode an)
> Wie oft könnte man den Chip mit Hv Löschen ohne ihn kaputt zubekommen
> 2-3 mal ?
Keine Einschränkungen laut DB.
Also sicherlich über 10000 mal

Übrigens nicht nur löschen, sondern auch beschreiben unter 12V Einfluss.

: Bearbeitet durch User
Autor: DAVID -. (bastler-david)
Datum:

Bewertung
-3 lesenswert
nicht lesenswert
Und mit Micronucleus kann ich dann den Reset als normalen 
Eingang/Ausgang über die arduino IDE nutzen ?

Ok werde ich mir die Tage mal genauer an sehen.

Ich würde dennoch Erstmal Gucken wollen wie Weit ich mit Seriell und LED 
Out auf einen Pin komme.

Was mit 12 Volt Beschreiben Angeht das glaube ich nicht so ganz.
Mein letzer Atmega ist bei 12 Volt sofort gestoben.

Autor: Arduino Fanboy D. (ufuf)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
DAVID -. schrieb:
> Was mit 12 Volt Beschreiben Angeht das glaube ich nicht so ganz.
> Mein letzer Atmega ist bei 12 Volt sofort gestoben.

Nur der Reset Pin verträgt 12V.

Andere Pins?
Sofort tot!

Autor: Peter D. (peda)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Der ATtin58 hat keine UART, d.h. der Pin bleibt IO-Pin. Sobald das 
Senden beendet ist, kannst Du den Pin ganz normal setzen oder löschen. 
Beim Senden flackert die LED mit.

Der Resetpin läßt sich als Tasteneingang benutzén. Zieht man ihn von 5V 
auf 4,5V runter, wird noch kein Reset ausgelöst. Diese Spannungsänderung 
läßt sich aber mit dem ADC messen. Du brauchst also neben der Taste noch 
2 Widerstände als Spannungsteiler, z.B. 10k + 1k.

Autor: Oliver S. (oliverso)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Peter D. schrieb:
> Der ATtin58 hat keine UART, d.h. der Pin bleibt IO-Pin. Sobald das
> Senden beendet ist, kannst Du den Pin ganz normal setzen oder löschen.

Das könnte allerdings die UART-Gegenseite verwirren.

Oliver

Autor: DAVID -. (bastler-david)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
Ok Super ich Danke euch!
Werde die Ideen mal Testen.

Und das die LED mit flackert (egal) es wird nur der Akkuzustand + 
Laufzeit übertragen.

Autor: DAVID -. (bastler-david)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
Ok also nicht.
Eine Übertragung ohne quartz nur intern mit 8 oder 16 MHz ist nicht 
sauber aufzubauen.
Ob mit LED oder den Pin(PB2/und zum test PB1) nur für seriell anleine 
ist egal.
Auch von 2400-9600 getestet alles egal.
Das höchste was ich hinbekommen habe von 4 Zeichen waren schon mal 3 :-)
Sonst nur Datenmüll.

22⸮
⸮26
2⸮⸮⸮⸮2⸮3
⸮⸮⸮⸮⸮⸮⸮
22⸮
2⸮5⸮
⸮23
)⸮
⸮⸮3
⸮224⸮
2⸮⸮
⸮24⸮⸮223

Ok also doch ein andren einbauen mist.

Denoch danke ich euch.

Autor: Peter D. (peda)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
DAVID -. schrieb:
> Eine Übertragung ohne quartz nur intern mit 8 oder 16 MHz ist nicht
> sauber aufzubauen.

Für Bastlerzwecke ist die Genauigkeit durchaus brauchbar. Man kann sich 
auch ein Testprogramm schreiben, um das OSCCAL genauer abzugleichen. Das 
war aber bei mir bisher nicht nötig.

DAVID -. schrieb:
> Auch von 2400-9600 getestet alles egal.

Ja, der prozentuale Fehler ist unabhängig von der Baudrate.
Bei hohen Baudraten kann noch der Fehler hinzukommen, daß der 
Baudratenteiler nur ganzzahlig (F_CPU / 16 / n) teilen kann. Aber den 
hat der ATtiny58 ja nicht.

DAVID -. schrieb:
> Das höchste was ich hinbekommen habe von 4 Zeichen waren schon mal 3 :-)

Das deutet eher auf einen Fehler in Deiner SW-UART hin.

Anbei mal ein einfacher SW-Sender.
Mit 2 Stop-Bits kann sich der Empfänger besser synchronisieren.

Kann aber auch sein, daß Du das OSCCAL beim Flashen versehentlich 
überschrieben hast, d.h. die Werkseinstellung ist weg.

: Bearbeitet durch User
Autor: DAVID -. (bastler-david)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
Vielen dank PETER für dein Code und infos.
Mal sehen ob ich daraus was entnehmen und anpassen kann.
Sieht mir sehr nach AVR Studio aus.
Ich bin mir sicher ob woll du mehr fach atiny58 schreibst das du 
attiny85 meinst :-)

Die Taktfrequenz ist leider maximal 8 Mhz da die Spannung zwischen 
3,6-4,2 Volt schwanken wird (Akku).
Mein gestriger test zeigt mir aber schon das es selbst mit sauberen 5 
Volt nicht gehen mag.

Autor: Tom (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
DAVID -. schrieb:
> Auch von 2400-9600 getestet alles egal.
Das stimmt was nicht.

Ich habe auf einem ATmega169 mit internem Oszillator stabile Übertragung 
19600 bps hinbekommen.
Beim Starten lief eine Kalibrierroutine, die den internen Oszillator 
mittels OSCCAL und einem externen Uhrenquarz (32,768 kHz) auf 
Wunschfrequenz getunt hat.

Autor: Peter D. (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du kannst ja mal mit _delay_ms(1000) eine LED togglen und dann mit einer 
Stoppuhr prüfen, ob die interne Frequenz stimmt.

Autor: Oliver S. (oliverso)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tom schrieb:
> Ich habe auf einem ATmega169 mit internem Oszillator stabile Übertragung
> 19600 bps hinbekommen.
> Beim Starten lief eine Kalibrierroutine, die den internen Oszillator
> mittels OSCCAL und einem externen Uhrenquarz (32,768 kHz) auf
> Wunschfrequenz getunt hat.

Was natürlich gepfuscht ist. Mit Quarz kanns jeder.

Oliver

Autor: Tom (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oliver S. schrieb:
> Was natürlich gepfuscht ist. Mit Quarz kanns jeder.
Jein. Man kann auch permanent ein 'U' (=0x55) schicken, mit dem Oszi die 
Bitzeit messen und das Tuning manuell machen.

Oder umgekehrt: Man wartet auf ein <Enter> vom Host und vermisst dessen 
Bitzeiten.

Autor: DAVID -. (bastler-david)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
Um das mal zu ende zubringen.
Auch die Tipps von von Peter haben nix geändert.
Egal ob 8 oder 16 MHz es wird nur müll gesendet.
(Bei 16 MHz konnte man ab und zu Daten ohne Fehler finden)
Und eine funktionierende ssd1306 OLED Library konnte ich auch nicht 
auftreiben.
So mit ist das Thema endgültig erledigt und ich muss zur Atmega Reihe 
Wechseln.

Vielleicht kann ich wenigstens dazu beitragen das es andere nicht erst 
testen müssen und viel zeit verschwenden.

Ich danke euch für eine zahlreichen Infos.

Autor: DAVID -. (bastler-david)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
DAVID -. schrieb:
> Und eine funktionierende ssd1306 OLED Library konnte ich auch nicht
> auftreiben.

OK Das war Woll mal GARNIX. (Grade durch Zufall Gemerkt)
Eine Passende Library wäre zb SSD1306_minimal.
Problem an der Sache ist aber Sie scheint sich nicht mit andren SSD1306 
Librarys zu vertragen. (Muss man erstmal Trauf kommen) Steht nur 
Nirgends!

https://www.instructables.com/id/ATTiny85-connects-to-I2C-OLED-display-Great-Things/

Autor: DAVID -. (bastler-david)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Ok Zusammen Gefast ich Glaube mein USB Zu UART Converter ist nicht so 
Empfindlich wie ein HC-10 BT Modul.

Jeden Falls Geht es bei mir Mit USB Nicht aber mit BT SEHT Komisch aber 
für meine Anwendung sogar noch besser.

Und TFT Geht auch auf Einmal hmm.(library Konflikt)

Naja Hier mal beide Code Vorlagen welche bei MIR laufen mit 8MHz Intern 
3,6-4,2 Volt.

BT. (Senden Geht! Empfangen nicht Getestet)

#include <SoftwareSerial.h>

SoftwareSerial mySerial(PB2, PB0); // RX, TX

void setup()
{
  mySerial.begin(9600);
}

void loop()
{
  delay(1000);
  mySerial.println("Hello, world?");
}

Und TFT

#include "SSD1306_minimal.h"
#include <avr/pgmspace.h>
SSD1306_Mini oled;

void setup() {
  oled.init(0x3c);
  delay(500);
  oled.startScreen();
  oled.clear();
}

void loop() {
  oled.cursorTo(0, 0);
  oled.printString("TEST");
}

Und Wenn ich Später nur Mir Selber Helfe war es Schon nicht um Sonst :-)

Autor: c-hater (Gast)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
DAVID -. schrieb:

> ich muss zur Atmega Reihe Wechseln.
[...]
> Vielleicht kann ich wenigstens dazu beitragen das es andere nicht erst
> testen müssen und viel zeit verschwenden.

Tsss...

Weil du krass unfähig bist, sollen andere sich daran ein Beispiel 
nehmen?

Also:

1) Ein Mega alleine löst dein Problem in keinster Weise. Auch der 
braucht
   einen Quarz, um die Bitrate für eine UART aus dem Stand verlässlich
   hinreichend genau hinzubekommen.
2) Du hättest auch auf einen Tiny mit mehr Pins ausweichen und an den 
halt
   einfach einen Quarz dran bauen können.
3) Kalibrierung ist immer eine Möglichkeit, um auch ohne Quarz UART-
   Kommunikation möglich zu machen.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.