Varför kan man inte skicka värden konstant via FTDI?

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Varför kan man inte skicka värden konstant via FTDI?

Inlägg av sodjan »

> Så i teorin så behövs denna kondensator, men i praktiken är den nödvändig.

Vad är skillnaden? "behövs"/"nödvänding" låter som en gradskillnad...
Användarvisningsbild
Al_Bundy
Inlägg: 2889
Blev medlem: 11 september 2012, 23:59:50
Ort: The U.S - Chicago
Kontakt:

Re: Varför kan man inte skicka värden konstant via FTDI?

Inlägg av Al_Bundy »

Hmm. Hur ska jag förklara detta. Enligt databladet så behövdes ingen kondensator mellan RTS# och RESET. Men med tanke på att mikrokontroller startar om när REST får en smak av GND, dvs volt 0.

Jag har testat att köra RST# till RESET utan just en kondensator. Jag kunde inte bränna över en sketch.

Jag måste också säga att jag sa fel i min mening. Det ska vara:
Korrekt stavat av Al Bundy skrev:Så i teorin så behövs INTE denna kondensator, men i praktiken är den nödvändig.
nifelheim
Den första
Inlägg: 2489
Blev medlem: 27 mars 2008, 22:31:16
Ort: stockholm

Re: Varför kan man inte skicka värden konstant via FTDI?

Inlägg av nifelheim »

RTS är ju låg hela tiden porten är igång.
Utan kondensatorn håller du den i reset hela tiden som du försöker
skicka det nya programmet, det funkar ju inte :)

Du har en bootloader, det den gör är att den körs före ditt program
direkt efter reset.

Först lyssnar bootloadern om det kommer något nytt program på serie pinnarna,
har det inte kommit något på en halv sekund (-ish) så hoppar den till
det program som du tidigare är programmerat med.

Kommer det något på serieporten kommer bootloadern ta hand om det och programmera in det i minnet.

Om du helt saknar kopplingen till RTS kan du istället "manuellt" trycka reset samtidigt som du skickar över programmet
och få bootloadern att plocka upp det.
( därav benämningen "autoreset" med kondingen)

jmf programmeringen av Arduino mini som är utan kondensator,
så här säger man om varför man kan sätta dit den:
"The 0.1uF capacitor from the reset pin is connected to the RTS pin on the mini USB adaptor. This enables auto-reset when the serial port is opened, meaning you don't have to press the reset button every time you upload new code. If it gives you problems, you can remove it, and press reset every time."

http://arduino.cc/en/Guide/ArduinoMini


Mini är ju en av dom billigaste Arduino varianterna ( ca 15:- inkl frakt på Ebay)
så det borde väl passa dig :)
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Varför kan man inte skicka värden konstant via FTDI?

Inlägg av sodjan »

> Enligt databladet så behövdes ingen kondensator...

Självklart så står det inget där! Denna lösning är en helt
unik Arduino sak och *självklart* står det inget i databladen
om det. Däremot så är jag övertygad om att det finns
dokumenterat på Arduino sidorna...
Nerre
Inlägg: 27229
Blev medlem: 19 maj 2008, 07:51:04
Ort: Upplands väsby

Re: Varför kan man inte skicka värden konstant via FTDI?

Inlägg av Nerre »

Precis, trixet med denna kondensator är alltså att den ger mikrocontrollern en reset-signal när serieporten "börjar sända".

När serieporten börjar sända så slår den om RTS och inväntar normalt (om man har hårdvaruhandskakning aktiverad) CTS innan data skickas.

MEN, detta är ju då gjort för att hantera situationen där vi skickar data TILL mikrocontrollern, när du nu skickar data FRÅN mikrocontrollern så kan det ju hända att detta ställer till med problem.

RTS betyder "får jag skicka data?" och CTS betyder "varsågod, du får skicka data". Eftersom det bara finns en av varje så måste det alltså vara ena änden som "är chef" över förbindelsen. Det är bara ena sidan som kan fråga "får jag skicka data?" och det är bara andra sidan som kan svara "varsågod, du får skicka data".

Det är alltså viktigt att vara medveten om att en serieport inte är symmetrisk. RxD och TxD är rent symmetriska, men DTR, RTS och CTS är inte symmetriska utan man måste bestämma sig för vilken enhet som ska vara DTE (Data Terminal Equipment) och vilken som ska vara DCE (Data Communication Equipment).

http://en.wikipedia.org/wiki/RS-232#Lim ... e_standard
The handshaking and control lines of the interface are intended for the setup and takedown of a dial-up communication circuit; in particular, the use of handshake lines for flow control is not reliably implemented in many devices.
Användarvisningsbild
Al_Bundy
Inlägg: 2889
Blev medlem: 11 september 2012, 23:59:50
Ort: The U.S - Chicago
Kontakt:

Re: Varför kan man inte skicka värden konstant via FTDI?

Inlägg av Al_Bundy »

nifelheim skrev:RTS är ju låg hela tiden porten är igång.
Utan kondensatorn håller du den i reset hela tiden som du försöker
skicka det nya programmet, det funkar ju inte :)

Du har en bootloader, det den gör är att den körs före ditt program
direkt efter reset.

Först lyssnar bootloadern om det kommer något nytt program på serie pinnarna,
har det inte kommit något på en halv sekund (-ish) så hoppar den till
det program som du tidigare är programmerat med.

Kommer det något på serieporten kommer bootloadern ta hand om det och programmera in det i minnet.

Om du helt saknar kopplingen till RTS kan du istället "manuellt" trycka reset samtidigt som du skickar över programmet
och få bootloadern att plocka upp det.
( därav benämningen "autoreset" med kondingen)

jmf programmeringen av Arduino mini som är utan kondensator,
så här säger man om varför man kan sätta dit den:
"The 0.1uF capacitor from the reset pin is connected to the RTS pin on the mini USB adaptor. This enables auto-reset when the serial port is opened, meaning you don't have to press the reset button every time you upload new code. If it gives you problems, you can remove it, and press reset every time."

http://arduino.cc/en/Guide/ArduinoMini


Mini är ju en av dom billigaste Arduino varianterna ( ca 15:- inkl frakt på Ebay)
så det borde väl passa dig :)
Tack du! Du var väldigt pedagogisk :)
Så man kan hålla in resetknappen när man bränner över en sketch?

15 kr på Ebay? What! Och här bygger jag egna arduino, dock med spänningsregulator, för 30 kr + arbete!! Well, jag kommer ungefär lika billigt undan, men skillnaden är att jag får jobba för det också.
Nu har jag redan 20 stycken arduinos hemma så jag får väll använda dessa. Ja, jag bygger mycket projekt ;)

Är dessa mini AU-kretsarna bättre än stora PU kretsar?
Senast redigerad av Al_Bundy 20 oktober 2014, 14:57:25, redigerad totalt 1 gång.
Nerre
Inlägg: 27229
Blev medlem: 19 maj 2008, 07:51:04
Ort: Upplands väsby

Re: Varför kan man inte skicka värden konstant via FTDI?

Inlägg av Nerre »

Nej, du ska inte hålla den inne, du ska trycka på den en gång.
Användarvisningsbild
Al_Bundy
Inlägg: 2889
Blev medlem: 11 september 2012, 23:59:50
Ort: The U.S - Chicago
Kontakt:

Re: Varför kan man inte skicka värden konstant via FTDI?

Inlägg av Al_Bundy »

Okej. Men vad bra! Då kanske det är bra att ha en auto-reset så timningen blir perfekt.
Nerre
Inlägg: 27229
Blev medlem: 19 maj 2008, 07:51:04
Ort: Upplands väsby

Re: Varför kan man inte skicka värden konstant via FTDI?

Inlägg av Nerre »

Ja, auto-reset är bra när du ska ladda in en sketch via FTDI. Men som jag tolkar dig gör du inte det och då är den ju meningslös.
Användarvisningsbild
Al_Bundy
Inlägg: 2889
Blev medlem: 11 september 2012, 23:59:50
Ort: The U.S - Chicago
Kontakt:

Re: Varför kan man inte skicka värden konstant via FTDI?

Inlägg av Al_Bundy »

I ett projekt på skolan så måste jag det. Annars brukar jag inte göra det. Då använder jag FT232RL som USB to Serial konverterare endast :)
Användarvisningsbild
Al_Bundy
Inlägg: 2889
Blev medlem: 11 september 2012, 23:59:50
Ort: The U.S - Chicago
Kontakt:

Re: Varför kan man inte skicka värden konstant via FTDI?

Inlägg av Al_Bundy »

Jag skriver bara detta: Visste ni att man kan göra Arduinos språk på PIC nu? Kolla upp ChipKit.
Användarvisningsbild
Icecap
Inlägg: 26648
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Re: Varför kan man inte skicka värden konstant via FTDI?

Inlägg av Icecap »

Och?
Användarvisningsbild
Al_Bundy
Inlägg: 2889
Blev medlem: 11 september 2012, 23:59:50
Ort: The U.S - Chicago
Kontakt:

Re: Varför kan man inte skicka värden konstant via FTDI?

Inlägg av Al_Bundy »

Jag hade en diskussion med en PIC programmerare. Han avskydde arduino för det var fusk, man lärde sig inget(ligger en liten del sanning i det) och det var bara fel. Då drog jag upp att man kan programmera PIC med arduinospråket också via en Arduino IDE som är gjort för PIC och inte AVR. Då lös ögonen upp och han klappade sig på magen, ungefär, och blev helt plötsligt positivt till detta.

Jag tror att många som avskyr arduino är PIC-anhängare. Sällan jag hör AVR anhängare klanka ned på Arduino. Visst, man lär sig inte så mycket digitalteknik när man kör Arduino. Men det är inte det som är meningen. Arduino är endast till för att automatisera och inte skapa nyaste 3Dfx Voodoo grafikkort.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Varför kan man inte skicka värden konstant via FTDI?

Inlägg av sodjan »

Barnsligheter...

Det har naturligtsvis ingen som helst betydelse om/att Arduino använder AVR
eller PIC eller vilken annan processor som helst. Lite lite som att det har
betydelse att BASIC Stamp kör AVR eller PIC eller något annat.

Arduino har sina för- och nackdelar helt oavsett vilken processor den använder.
Användarvisningsbild
Icecap
Inlägg: 26648
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Re: Varför kan man inte skicka värden konstant via FTDI?

Inlägg av Icecap »

Och "Arduinospråket" är C++ med lite fel - som t.ex. ingen main-loop. Alltså ett standardspråk med några undantag.

Så här kommer dagens överraskning: man kan sedan länge programmera PIC i C och C++... :doh:
Skriv svar